導航:首頁 > 編程語言 > python監控系統進程

python監控系統進程

發布時間:2024-04-20 17:55:18

① 怎樣用python寫一個簡單的監控系統

首先資料庫建表
建立一個資料庫「falcon」,建表語句如下:
CREATE TABLE `stat` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`host` varchar(256) DEFAULT NULL,
`mem_free` int(11) DEFAULT NULL,
`mem_usage` int(11) DEFAULT NULL,
`mem_total` int(11) DEFAULT NULL,
`load_avg` varchar(128) DEFAULT NULL,
`time` bigint(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `host` (`host`(255))
) ENGINE=InnoDB AUTO_INCREMENT=0 DEFAULT CHARSET=utf8;
首先我們設計一個web服務,實現如下功能:
1. 完成監控頁面展示
2. 接受POST提交上來的數據
3. 提供json數據GET介面
目錄結構如下:
web
├── flask_web.py
└── templates
└── mon.html

flask_web.py

import MySQLdb as mysql
import json
from flask import Flask, request, render_template
app = Flask(__name__)
db = mysql.connect(user="reboot", passwd="reboot123", \
db="falcon", charset="utf8")
db.autocommit(True)
c = db.cursor()

@app.route("/", methods=["GET", "POST"])
def hello():
sql = ""
if request.method == "POST":
data = request.json
try:
sql
= "INSERT INTO `stat`
(`host`,`mem_free`,`mem_usage`,`mem_total`,`load_avg`,`time`)
VALUES('%s', '%d', '%d', '%d', '%s', '%d')" % (data['Host'],
data['MemFree'], data['MemUsage'], data['MemTotal'], data['LoadAvg'],
int(data['Time']))
ret = c.execute(sql)
except mysql.IntegrityError:
pass
return "OK"
else:
return render_template("mon.html")

@app.route("/data", methods=["GET"])
def getdata():
c.execute("SELECT `time`,`mem_usage` FROM `stat`")
ones = [[i[0]*1000, i[1]] for i in c.fetchall()]
return "%s(%s);" % (request.args.get('callback'), json.mps(ones))

if __name__ == "__main__":
app.run(host="0.0.0.0", port=8888, debug=True)

這個template頁面是我抄的highstock的示例,mon.html
簡單起見我們只展示mem_usage信息到頁面上
<title>51reboot.com</title>
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Highstock Example</title>

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<style type="text/css">
${demo.css}
</style>
<script type="text/javascript">
$(function () {
$.getJSON('/data?callback=?', function (data) {

// Create the chart
$('#container').highcharts('StockChart', {

rangeSelector: {
inputEnabled: $('#container').width() > 480,
selected: 1
},

title: {
text: '51Reboot.com'
},

series: [{
name: '51Reboot.com',
data: data,
type: 'spline',
tooltip: {
valueDecimals: 2
}
}]
});
});
});
</script>
</head>
<body>
<script src="http://cdnjs.cloudflare.com/ajax/libs/highstock/2.0.4/highstock.js"></script>
<script src="http://code.highcharts.com/moles/exporting.js"></script>

<div id="container" style="height: 400px"></div>
</body>
</html>

web展示頁面完成了,運行起來:
Python flask_web.py 監聽在8888埠上
我們需要做一個Agent來採集數據,並上傳資料庫
moniItems.py
#!/usr/bin/env python
import inspect
import time
import urllib, urllib2
import json
import socket

class mon:
def __init__(self):
self.data = {}

def getTime(self):
return str(int(time.time()) + 8 * 3600)

def getHost(self):
return socket.gethostname()

def getLoadAvg(self):
with open('/proc/loadavg') as load_open:
a = load_open.read().split()[:3]
return ','.join(a)

def getMemTotal(self):
with open('/proc/meminfo') as mem_open:
a = int(mem_open.readline().split()[1])
return a / 1024

def getMemUsage(self, noBufferCache=True):
if noBufferCache:
with open('/proc/meminfo') as mem_open:
T = int(mem_open.readline().split()[1])
F = int(mem_open.readline().split()[1])
B = int(mem_open.readline().split()[1])
C = int(mem_open.readline().split()[1])
return (T-F-B-C)/1024
else:
with open('/proc/meminfo') as mem_open:
a = int(mem_open.readline().split()[1]) - int(mem_open.readline().split()[1])
return a / 1024

def getMemFree(self, noBufferCache=True):
if noBufferCache:
with open('/proc/meminfo') as mem_open:
T = int(mem_open.readline().split()[1])
F = int(mem_open.readline().split()[1])
B = int(mem_open.readline().split()[1])
C = int(mem_open.readline().split()[1])
return (F+B+C)/1024
else:
with open('/proc/meminfo') as mem_open:
mem_open.readline()
a = int(mem_open.readline().split()[1])
return a / 1024

def runAllGet(self):
#自動獲取mon類里的所有getXXX方法,用XXX作為key,getXXX()的返回值作為value,構造字典
for fun in inspect.getmembers(self, predicate=inspect.ismethod):
if fun[0][:3] == 'get':
self.data[fun[0][3:]] = fun[1]()
return self.data

if __name__ == "__main__":
while True:
m = mon()
data = m.runAllGet()
print data
req = urllib2.Request("http://51reboot.com:8888", json.mps(data), {'Content-Type': 'application/json'})
f = urllib2.urlopen(req)
response = f.read()
print response
f.close()
time.sleep(60)

nohup python moniItems.py >/dev/null 2>&1 & 運行起來

② python常用到哪些庫

Python作為一個設計優秀的程序語言,現在已廣泛應用於各種領域,依靠其強大的第三方類庫,Python在各個領域都能發揮巨大的作用。
下面我們就來看一下python中常用到的庫:
數值計算庫:
1. NumPy
支持多維數組與矩陣運算,也針對數組運算提供大量的數學函數庫。通常與SciPy和Matplotlib一起使用,支持比Python更多種類的數值類型,其中定義的最重要的對象是稱為ndarray的n維數組類型,用於描述相同類型的元素集合,可以使用基於0的索引訪問集合中元素。
2. SciPy
在NumPy庫的基礎上增加了眾多的數學、科學及工程計算中常用的庫函數,如線性代數、常微分方程數值求解、信號處理、圖像處理、稀疏矩陣等,可進行插值處理、信號濾波,以及使用C語言加速計算。
3. Pandas
基於NumPy的一種工具,為解決數據分析任務而生。納入大量庫和一些標準的數據模型,提供高效地操作大型數據集所需的工具及大量的能快速便捷處理數據的函數和方法,為時間序列分析提供很好的支持,提供多種數據結構,如Series、Time-Series、DataFrame和Panel。
數據可視化庫:
4. Matplotlib
第一個Python可視化庫,有許多別的程序庫都是建立在其基礎上或者直接調用該庫,可以很方便地得到數據的大致信息,功能非常強大,但也非常復雜。
5. Seaborn
利用了Matplotlib,用簡潔的代碼來製作好看的圖表。與Matplotlib最大的區別為默認繪圖風格和色彩搭配都具有現代美感。
6. ggplot
基於R的一個作圖庫ggplot2,同時利用了源於《圖像語法》(The Grammar of Graphics)中的概念,允許疊加不同的圖層來完成一幅圖,並不適用於製作非常個性化的圖像,為操作的簡潔度而犧牲了圖像的復雜度。
7. Bokeh
跟ggplot一樣,Bokeh也基於《圖形語法》的概念。與ggplot不同之處為它完全基於Python而不是從R處引用。長處在於能用於製作可交互、可直接用於網路的圖表。圖表可以輸出為JSON對象、HTML文檔或者可交互的網路應用。
8. Plotly
可以通過Python notebook使用,與Bokeh一樣致力於交互圖表的製作,但提供在別的庫中幾乎沒有的幾種圖表類型,如等值線圖、樹形圖和三維圖表。
9. pygal
與Bokeh和Plotly一樣,提供可直接嵌入網路瀏覽器的可交互圖像。與其他兩者的主要區別在於可將圖表輸出為SVG格式,所有的圖表都被封裝成方法,且默認的風格也很漂亮,用幾行代碼就可以很容易地製作出漂亮的圖表。
10. geoplotlib
用於製作地圖和地理相關數據的工具箱。可用來製作多種地圖,比如等值區域圖、熱度圖、點密度圖。必須安裝Pyglet(一個面向對象編程介面)方可使用。
11. missingno
用圖像的方式快速評估數據缺失的情況,可根據數據的完整度對數據進行排序或過濾,或者根據熱度圖或樹狀圖對數據進行修正。
web開發庫:
12. Django
一個高級的Python Web框架,支持快速開發,提供從模板引擎到ORM所需的一切東西,使用該庫構建App時,必須遵循Django的方式。
13. Socket
一個套接字通訊底層庫,用於在伺服器和客戶端間建立TCP或UDP連接,通過連接發送請求與響應。
14. Flask
一個基於Werkzeug、Jinja 2的Python輕量級框架(microframework),默認配備Jinja模板引擎,也包含其他模板引擎或ORM供選擇,適合用來編寫API服務(RESTful rervices)。
15. Twisted
一個使用Python實現的基於事件驅動的網路引擎框架,建立在deferred object之上,一個通過非同步架構實現的高性能的引擎,不適用於編寫常規的Web Apps,更適用於底層網路。
資料庫管理:

16. MySQL-python
又稱MySQLdb,是Python連接MySQL最流行的一個驅動,很多框架也基於此庫進行開發。只支持Python 2.x,且安裝時有許多前置條件。由於該庫基於C語言開發,在Windows平台上的安裝非常不友好,經常出現失敗的情況,現在基本不推薦使用,取代品為衍生版本。
17. mysqlclient
完全兼容MySQLdb,同時支持Python 3.x,是Django ORM的依賴工具,可使用原生SQL來操作資料庫,安裝方式與MySQLdb一致。
18. PyMySQL
純Python實現的驅動,速度比MySQLdb慢,最大的特點為安裝方式簡潔,同時也兼容MySQL-python。
19. SQLAlchemy
一種既支持原生SQL,又支持ORM的工具。ORM是Python對象與資料庫關系表的一種映射關系,可有效提高寫代碼的速度,同時兼容多種資料庫系統,如SQLite、MySQL、PostgreSQL,代價為性能上的一些損失。
自動化運維:
20. jumpsever跳板機
一種由Python編寫的開源跳板機(堡壘機)系統,實現了跳板機的基本功能,包含認證、授權和審計,集成了Ansible、批量命令等。
支持WebTerminal Bootstrap編寫,界面美觀,自動收集硬體信息,支持錄像回放、命令搜索、實時監控、批量上傳下載等功能,基於SSH協議進行管理,客戶端無須安裝agent。主要用於解決可視化安全管理,因完全開源,容易再次開發。
21. Mage分布式監控系統
一種用Python開發的自動化監控系統,可監控常用系統服務、應用、網路設備,可在一台主機上監控多個不同服務,不同服務的監控間隔可以不同,同一個服務在不同主機上的監控間隔、報警閾值可以不同,並提供數據可視化界面。
22. Mage的CMDB
一種用Python開發的硬體管理系統,包含採集硬體數據、API、頁面管理3部分功能,主要用於自動化管理筆記本、路由器等常見設備的日常使用。由伺服器的客戶端採集硬體數據,將硬體信息發送至API,API負責將獲取的數據保存至資料庫中,後台管理程序負責對伺服器信息進行配置和展示。
23. 任務調度系統
一種由Python開發的任務調度系統,主要用於自動化地將一個服務進程分布到其他多個機器的多個進程中,一個服務進程可作為調度者依靠網路通信完成這一工作。
24. Python運維流程系統
一種使用Python語言編寫的調度和監控工作流的平台,內部用於創建、監控和調整數據管道。允許工作流開發人員輕松創建、維護和周期性地調度運行工作流,包括了如數據存儲、增長分析、Email發送、A/B測試等諸多跨多部門的用例。
GUI編程:
25. Tkinter
一個Python的標准GUI庫,可以快速地創建GUI應用程序,可以在大多數的UNIX平台下使用,同樣可以應用在Windows和Macintosh系統中,Tkinter 8.0的後續版本可以實現本地窗口風格,並良好地運行在絕大多數平台中。
26. wxPython
一款開源軟體跨平台GUI庫wxWidgets的Python封裝和Python模塊,是Python語言的一套優秀的GUI圖形庫,允許程序員很方便地創建完整的、功能健全的GUI用戶界面。
27. PyQt
一個創建GUI應用程序的工具庫,是Python編程語言和Qt的成功融合,可以運行在所有主要操作系統上,包括UNIX、Windows和Mac。PyQt採用雙許可證,開發人員可以選擇GPL和商業許可,從PyQt的版本4開始,GPL許可證可用於所有支持的平台。
28. PySide
一個跨平台的應用程式框架Qt的Python綁定版本,提供與PyQt類似的功能,並相容API,但與PyQt不同處為其使用LGPL授權。
更多Python知識請關注Python自學網。

linux下如何監聽進程

一、supervise

Supervise是daemontools的一個工具,可以用來監控管理unix下的應用程序運行情況,在應用程序出現異常時,supervise可以重新啟動指定程序。

使用:
mkdir test
cd test
vim run 寫入希望執行的操作
supervise test (注意這里是的參數是run文件上層的文件夾,改變run的為可執行 chmod +x run)

二、monit

monit是一個小型的開放源碼工具來管理和監控Unix系統。Monit可以自動維護進程,及時避免進程異常退出等產生的問題。

系統: monit可以監控問題的發生,包括進程狀態、系統cpu負載、內存佔用情況等,例如當apache服務的cpu負載以及內存閘弄情況過高時候,它會重啟apache服務。
進程: monit可以監控守護進程,包括系統進程。例如當某個進行down掉,它會自動恢復重啟該進程。
文件系統:Monit可以監控本地文件、目錄、文件系統的變化,包括時間戳、校驗值、大小的變化。例如,可以監控文件sha1以及md5的值,來監控文件是否發生變化。
網路:monit可以監控網路連接,支持TCP、UDP、Unix domain sockets以及HTTP、SMTP等。
定時腳本:monit可以用來定時測試程序和腳本,獲取程序輸出結果,進而判斷是否成功或其他情況。
安裝:

sudo apt-get install monit
編輯配置:
sudo vim /etc/monit/monitrc
啟動、停止、重啟:
sudo /etc/init.d/monit start
sudo /etc/init.d/monit stop
sudo /etc/init.d/monit restart
設置頁面監控狀態:
set httpd port 2812 and
allow 0.0.0.0/0.0.0.0
allow localhost
增加監控:
需要注意的是,這里需要添加start和stop,缺一個都是不行的

1.根據程序名稱來監控

check process test with MATCHING test.py
start program = "/home/yxd/test.py"
stop program = "xxxxx"
2.根據pid監控

check process apache with pidfile /var/run/httpd.pid
start program = "/etc/init.d/rcWebServer.sh start https"
stop program = "/etc/init.d/rcWebServer.sh stop https"
if changed pid then aler
參考:用monit監控系統關鍵進程
supervisord

Supervisor是一個C/S系統,它可以在類unix操作系統讓用戶來監視和控制後台服務進程的數量。它是由python編寫的,常用於進程異常退出的重啟保護。
安裝:

pip install supervisor
查看配置文件:

echo_supervisord_conf
從該命令的結果中,可以看到各個模塊的配置信息。
創建配置文件:

echo_supervisord_conf > /etc/supervisord.conf
配置應用:

[program:test]
command=python /root/test_supervisor.py
process_name=%(program_name)s
stdout_logfile=/root/test.log
stderr_logfile=/root/test.log
保存,啟動:

/usr/bin/supervisord -c /etc/supervisord.conf

④ 怎麼用python查詢出 進程 CPU使用率 內存使用 句柄數

看到句柄數這幾個字,我猜可能是要windows下運行的?

可能答非所問,不過在linux下最好的用的莫過於psutil了,你可以通過進程名或pid很好的監控任意進程的系統佔用情況,甚至進程建立的每個連接都能獲取到

>>>importpsutil
>>>psutil.pids()
[1,2,3,4,5,6,7,46,48,50,51,178,182,222,223,224,
268,1215,1216,1220,1221,1243,1244,1301,1601,2237,2355,
2637,2774,3932,4176,4177,4185,4187,4189,4225,4243,4245,
4263,4282,4306,4311,4312,4313,4314,4337,4339,4357,4358,
4363,4383,4395,4408,4433,4443,4445,4446,5167,5234,5235,
5252,5318,5424,5644,6987,7054,7055,7071]
>>>
>>>p=psutil.Process(7055)
>>>p.name()
'python'
>>>p.exe()
'/usr/bin/python'
>>>p.cwd()
'/home/giampaolo'
>>>p.cmdline()
['/usr/bin/python','main.py']
>>>
>>>p.status()
'running'
>>>p.cpu_percent(interval=1.0)
12.1

>>>psutil.net_io_counters(pernic=True)
{'eth0':netio(bytes_sent=485291293,bytes_recv=6004858642,packets_sent=3251564,packets_recv=4787798,errin=0,errout=0,dropin=0,dropout=0),
'lo':netio(bytes_sent=2838627,bytes_recv=2838627,packets_sent=30567,packets_recv=30567,errin=0,errout=0,dropin=0,dropout=0)}

從官方文檔上了一部分出來,有沒有碉堡了的感覺,快去翻一下文檔吧,非常容易使用

⑤ Python主要內容學的是什麼

這是Python全棧開發+人工智慧課程大綱:
階段一:Python開發基礎
Python全棧開發與人工智慧之Python開發基礎知識學習內容包括:Python基礎語法、數據類型、字元編碼、文件操作、函數、裝飾器、迭代器、內置方法、常用模塊等。
階段二:Python高級編程和資料庫開發
Python全棧開發與人工智慧之Python高級編程和資料庫開發知識學習內容包括:面向對象開發、Socket網路編程、線程、進程、隊列、IO多路模型、Mysql資料庫開發等。
階段三:前端開發
Python全棧開發與人工智慧之前端開發知識學習內容包括:Html、CSS、JavaScript開發、Jquery&bootstrap開發、前端框架VUE開發等。
階段四:WEB框架開發
Python全棧開發與人工智慧之WEB框架開發學習內容包括:Django框架基礎、Django框架進階、BBS+Blog實戰項目開發、緩存和隊列中間件、Flask框架學習、Tornado框架學習、Restful API等。
階段五:爬蟲開發
Python全棧開發與人工智慧之爬蟲開發學習內容包括:爬蟲開發實戰。
階段六:全棧項目實戰
Python全棧開發與人工智慧之全棧項目實戰學習內容包括:企業應用工具學習、CRM客戶關系管理系統開發、路飛學城在線教育平台開發等。
階段七:數據分析
Python全棧開發與人工智慧之數據分析學習內容包括:金融量化分析。
階段八:人工智慧
Python全棧開發與人工智慧之人工智慧學習內容包括:機器學習、數據分析 、圖像識別、自然語言翻譯等。
階段九:自動化運維&開發
Python全棧開發與人工智慧之自動化運維&開發學習內容包括:CMDB資產管理系統開發、IT審計+主機管理系統開發、分布式主機監控系統開發等。
階段十:高並發語言GO開發
Python全棧開發與人工智慧之高並發語言GO開發學習內容包括:GO語言基礎、數據類型與文件IO操作、函數和面向對象、並發編程等。

⑥ 有什麼工具可以監控到我打開一個系統的整個操作,然後統計打開每個頁簽載入完成的時間,python能實現不

看提問應該是打開一個web應用,可以使用python selenum實現瀏覽器相應操作並計時。網頁鏈接

⑦ 如何用python做一個設備運維軟體

Python開發的jumpserver跳板機

使用python語言編寫的調度和監控工作流的平台內部用來創建、監控和調整數據管道。任何工作流都可以在這個使用Python來編寫的平台上運行。

企業主要用於解決:通俗點說就是規范運維的操作,加入審批,一步一步操作的概念。

是一種允許工作流開發人員輕松創建、維護和周期性地調度運行工作流(即有向無環圖或成為DAGs)的工具。這些工作流包括了如數據存儲、增長分析、Email發送、A/B測試等等這些跨越多部門的用例。

這個平台擁有和 Hive、Presto、MySQL、HDFS、Postgres和S3交互的能力,並且提供了鉤子使得系統擁有很好地擴展性。除了一個命令行界面,該工具還提供了一個基於Web的用戶界面讓您可以可視化管道的依賴關系、監控進度、觸發任務等。

來個小總結

⑧ 使用python,在linux上監控遠程windows的CPU、硬碟、內存使用率

你需要安裝wmic,它實現了linux下能使用wmi,安裝以後就可以用了,下面是例子。
import wmi_client_wrapper as wmi
wmic = wmi.WmiClientWrapper(
username="Administrator",
password="password",
host="192.168.1.149",
)
output = wmic.query("SELECT * FROM Win32_Processor")

閱讀全文

與python監控系統進程相關的資料

熱點內容
男主角叫林楓的都市小說 瀏覽:599
哪家雲伺服器是bgp多線 瀏覽:376
長沙黑馬程序員地址 瀏覽:432
雲伺服器有什麼優點缺點 瀏覽:631
單片機51單片機 瀏覽:825
上海易通壓縮機鑄造 瀏覽:447
seo深度解析pdf 瀏覽:199
安卓手機怎麼拍手寫視頻 瀏覽:464
電梯碰綠衣女變異的韓國電影 瀏覽:412
外出電影完整版下載 瀏覽:221
老電影等 瀏覽:236
有個小姑娘叫美娜的韓劇 瀏覽:143
韓國美容院老闆出軌顧客的片子 瀏覽:870
日本愛情動作大片 瀏覽:617
微信好友怎麼加密不能讓別人看見聊天記錄 瀏覽:145
愛情電影網 apdy類似網站 瀏覽:945
地鐵快線和加密線 瀏覽:41
計算機科學程序員 瀏覽:356
激光手術治療近視適合程序員嗎 瀏覽:107
資深程序員優良習慣 瀏覽:358