亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 基于python的Linux系統指定進程性能監控思路詳解

基于python的Linux系統指定進程性能監控思路詳解

熱門標簽:承德地圖標注公司 地圖標注黃河的位置 靈圖uu電子寵物店地圖標注 山東企業外呼系統公司 百度地圖標注公司位置要多少錢 地圖標注如何改成微信號 虛假地圖標注 濮陽好的聯通400電話申請 400電話號碼辦理多少錢

監控Linux服務器的工具、組件和程序網上有很多,但是一臺服務器上會有很多進程同時運行,特別是做性能測試的時候,可能一臺服務器上部署多個服務,如果只監控整個服務器的CPU和內存,當某個服務出現性能問題時,并不能有效準確的定位出(當然通過其他工具也可以實現),因此,很有必要只監控指定的進程。需求明確了,于是動手擼了一個性能監控腳本。

一、整體思路

1、為了方便的啟動監控和停止監控,在想查看監控結果的時候隨時查看監控結果,用flask開啟了一個服務,通過發送get請求可以隨時啟停監控和查看監控結果。
2、針對控制是否監控cpu、內存、IO,開啟多線程監控。
3、為了減少對其他組件的依賴,將監控結果寫到日志中。
4、為了方便查看監控結果,直接將結果以html方式返回。

二、配置文件

config.py

IP = '127.0.0.1'
PORT = '5555'
LEVEL = 'INFO' # log level
BACKUP_COUNT = 9 # log backup counter
LOG_PATH = 'logs' # log path
INTERVAL = 1 # interval, run command interval.
SLEEPTIME = 3 # interval, when stopping monitor, polling to start monitor when satisfying condition.
ERROR_TIMES = 5 # times, number of running command. When equal, automatically stopped monitor.
IS_JVM_ALERT = True # Whether to alert when the frequency of Full GC is too high.
IS_MONITOR_SYSTEM = True # Whether to monitor system's CPU and Memory.
IS_MEM_ALERT = True # Whether to alert when memory is too low. Alert by sending email.
MIN_MEM = 2  # Minxium memory, uint: G
# 0: don't clear cache, 1: clear page caches, 2: clear dentries and inodes caches, 3: include 1 and 2;
# echo 1 >/proc/sys/vm/drop_caches
ECHO = 0
SMTP_SERVER = 'smtp.sina.com' # SMTP server
SENDER_NAME = '張三'  # sender name
SENDER_EMAIL = 'zhangsan@qq.com' # sender's email
PASSWORD = 'UjBWYVJFZE9RbFpIV1QwOVBUMDlQUT09' # email password, base64 encode.
RECEIVER_NAME = 'baidu_all' # receiver name
RECEIVER_EMAIL = ['zhangsan@qq.com', 'zhangsi@qq.com'] # receiver's email
DISK = 'device1' # Which disk your application runs
START_TIME = 'startTime.txt' # Store the time of start monitoring.
FGC_TIMES = 'FullGC.txt' # Store the time of every FullGC time.
# html
HTML = '<html><body>{}</body><html>'
ERROR = '<p style="color:red">{}</p>'
HEADER = '<div id="header"><h2 align="center">Performance Monitor (pid={})</h2></div>'
ANALYSIS = '<div id="container" style="width:730px; margin:0 auto">{}</div>'

IP和PORT:開啟服務的服務器IP和端口,必須和所監控的服務在同一臺服務器上;
BACKUP_COUNT:默認為9,即只保留最近9天監控結果;
INTERVAL:兩次監控的時間間隔,默認為1s,主要用于cpu和內存監控,當同時監控多個端口或進程時,請將該值設小一點;
ERROR_TIMES:命令執行失敗次數,當大于該次數時,則會自動停止監控;主要用于監控指定的進程,如果進程被殺掉,則必須自動停止監控,且必須手動觸發再次開始監控;如果監控指定的端口,當端口的進程被殺掉后,也會停止監控,如果端口被重新啟動,則自動開始監控;
IS_JVM_ALERT:僅針對java應用,如果頻繁FullGC,則郵件提醒;一般性能測試,FullGC的頻率不得小于3600秒;
IS_MONITOR_SYSTEM :是否監控系統總CPU使用率和剩余內存;
IS_MEM_ALERT:當系統剩余內存過低時,是否郵件提醒;
MIN_MEM:允許系統最小剩余內存,單位為G;
ECHO:當系統剩余內存過低時,是否釋放緩存;0為不釋放,1為釋放頁面緩存,2為釋放dentries和inodes緩存,3為釋放1和2;
DISK:磁盤號,如果監控IO,需要輸入磁盤號,通過df -h 文件名查看當前文件掛在哪個磁盤下;
START_TIME:記錄每次手動觸發開始監控的時間;
FGC_TIMES:記錄每次FullGC的時間,用于排查問題;

三、接口和服務

server.py

server = Flask(__name__)
permon = PerMon()
# 開啟多線程
t = [threading.Thread(target=permon.write_cpu_mem, args=()),
 threading.Thread(target=permon.write_io, args=())]
for i in range(len(t)):
 t[i].start()
# 開始監控
# http://127.0.0.1:5555/runMonitor?isRun=1&type=pid&num=23121&totalTime=3600
@server.route('/runMonitor', methods=['get'])
def runMonitor():......
# 畫監控結果圖
# http://127.0.0.1:5555/plotMonitor?type=pid&num=23121
@server.route('/plotMonitor', methods=['get'])
def plotMonitor():.......
server.run(port=cfg.PORT, debug=True, host=cfg.IP) # 開啟服務

通過在瀏覽器地址欄輸入對應的url,即可啟停監控和查看監控結果

url傳參:

1、開始監控

http://127.0.0.1:5555/runMonitor?isRun=1&type=pid&num=23121&totalTime=3600
isRun:1為開始監控,0為停止監控;
type和num:type=pid時,表明num為進程號,type=port,表明num為端口號;可以同時監控多個端口或進程,多個端口或進程用英文逗號隔開;
totalTime:為監控總時間,單位為秒;如果不傳入totalTime,則默認一直監控;

2、查看監控結果

http://127.0.0.1:
5555/plotMonitor?type=port&num=23121&system=1&startTime=2019-08-03 08:08:08&duration=3600
type和num:type=pid時,表明num為進程號,type=port,表明num為端口號;
system:表示查看系統監控結果;如果傳了type和num,不管sysytem是否傳值,都只能看到進程的監控結果;不傳type和num,只傳system,則可以查看系統監控結果;
startTime:查看監控結果開始時間;
duration:查看監控結果的時長,單位為秒;
如果不傳startTime和duration,則默認查看最近一次開始監控以來的所有結果;如果需要查看某一段時間內的監控結果,則需要傳startTime和duration,查看監控結果的時間范圍為從startTime開始到startTime+duration為止。
注:如果在查看監控結果輸入的一段時間內,服務被重啟過,則進程號會有變化,此時仍輸入重啟前的進程號,則只能查看對應進程號在對應時間段內的監控結果。一般情況下,端口號不會輕易變化,建議查看監控結果時輸入端口號。

四、監控

performance_monitor.py

使用top命令監控CPU和內存,使用jstat命令監控JVM內存(僅java應用),使用iotop命令監控進程讀寫磁盤,使用iostat命令監控磁盤IO,使用netstat命令根據端口查進程,使用ps命令查看服務啟動時長。因此,服務器必須支持以上命令,如不支持,請安裝。

注:由于進程可以開啟多個線程,在查看進程的IO時,是看不到任何IO;而查看進程開啟的某個線程IO時,是可以看到IO的,但是線程是一直是在變化的;故目前暫不支持監控指定進程IO的。

五、查看監控結果

draw_performance.py

1、分別畫CPU圖、內存和JVM圖、IO圖和句柄數圖;
2、為方便統計CPU和IO使用情況,計算百分位數;
3、為方便統計垃圾回收信息,計算java應用的ygc、fgc,以及各自的頻率。

監控結果效果圖如下:

六、擴展函數

extern.py 有兩個功能

1、端口轉進程

try:
 result = os.popen(f'netstat -nlp|grep {port} |tr -s " "').readlines()
 res = [line.strip() for line in result if str(port) in line]
 p = res[0].split(' ')
 pp = p[3].split(':')[-1]
 if str(port) == pp:
 pid = p[-1].split('/')[0]
except Exception as err:
 logger.logger.error(err)

2、查找包含監控結果的日志

整體思路:

        (1)根據輸入的開始時間和結束時間,查找包含這段時間的所有日志文件;
        (2)根據查找出來的日志文件,找出包含監控結果的所有日志;
        (3)畫圖的時候遍歷找出的所有日志。

補充

1、為了方便查看最近一次開始監控的時間,會將每一次開始監控的時間寫到startTime.txt文件中;

2、為了方便排查java應用可能出現的問題,將每一次Full GC的時間寫到FullGC.txt文件中。

項目地址:https://github.com/leeyoshinari/performance_monitor

總結

以上所述是小編給大家介紹的基于python的Linux系統指定進程性能監控,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

標簽:安康 福州 淮安 上海 鷹潭 德宏 泰安 樂山

巨人網絡通訊聲明:本文標題《基于python的Linux系統指定進程性能監控思路詳解》,本文關鍵詞  基于,python,的,Linux,系統,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于python的Linux系統指定進程性能監控思路詳解》相關的同類信息!
  • 本頁收集關于基于python的Linux系統指定進程性能監控思路詳解的相關信息資訊供網民參考!
  • 推薦文章
    日本乱中文字幕系列| 国产极品精频在线观看| 欧美另类videosbestsex| 欧美大片毛片aaa免费看| 香蕉视频一级| 国产一区二区精品久久91| 日日日夜夜操| 中文字幕一区二区三区 精品| 成人影院久久久久久影院| 四虎久久精品国产| 九九热精品免费观看| 欧美a级成人淫片免费看| 成人免费网站视频ww| 日本在线www| 成人免费观看的视频黄页| 欧美a级成人淫片免费看| 97视频免费在线| 国产不卡高清在线观看视频| a级黄色毛片免费播放视频 | 欧美国产日韩在线| 精品国产香蕉在线播出| 国产麻豆精品高清在线播放| 国产不卡高清在线观看视频| 亚洲不卡一区二区三区在线 | 国产成人精品综合在线| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 一级毛片视频在线观看| 91麻豆tv| a级黄色毛片免费播放视频| 美女被草网站| 亚欧视频在线| 你懂的福利视频| 欧美一区二区三区在线观看| 日韩在线观看视频黄| 日本特黄特黄aaaaa大片| a级精品九九九大片免费看| 欧美电影免费| 天天做日日爱夜夜爽| 国产不卡高清在线观看视频| 日韩在线观看视频网站| 欧美电影免费看大全| 成人a大片高清在线观看| 国产一区二区精品尤物| 国产福利免费视频| 美女免费黄网站| 国产精品免费久久| 久久久久久久免费视频| 美女免费黄网站| 久久国产精品永久免费网站| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产美女在线观看| 沈樵在线观看福利| 久久国产精品永久免费网站| 亚洲女人国产香蕉久久精品 | 亚洲不卡一区二区三区在线 | 欧美激情伊人| 久久99这里只有精品国产| 国产麻豆精品高清在线播放| 青青久在线视频| 国产伦久视频免费观看视频| 夜夜操网| 国产精品1024永久免费视频 | 韩国毛片 免费| 四虎影视库| 欧美激情一区二区三区视频 | 欧美日本韩国| 色综合久久天天综线观看| 中文字幕一区二区三区精彩视频 | 青草国产在线| 黄视频网站在线看| 午夜在线亚洲男人午在线| 91麻豆精品国产综合久久久| 91麻豆爱豆果冻天美星空| 999久久久免费精品国产牛牛| 国产网站在线| 99热精品一区| 四虎影视久久久| 国产综合成人观看在线| 精品国产一区二区三区免费| 日日日夜夜操| 91麻豆精品国产综合久久久| 国产一区二区精品久久| 91麻豆国产级在线| 欧美日本免费| 精品久久久久久中文字幕2017| 精品久久久久久影院免费| 国产一区精品| 国产综合91天堂亚洲国产| 日韩字幕在线| 成人免费网站久久久| 成人高清视频在线观看| 99热精品在线| 久久福利影视| 日本特黄特色aa大片免费| 可以在线看黄的网站| 久久国产一区二区| 国产伦精品一区二区三区在线观看| 日韩专区亚洲综合久久| 精品久久久久久中文字幕2017| 韩国三级视频网站| 国产一区二区精品久| 日韩av成人| 成人影院久久久久久影院| 欧美激情在线精品video| 一级女性大黄生活片免费| 亚洲精品久久久中文字| 日本伦理网站| 91麻豆国产福利精品| 一级女性大黄生活片免费| 91麻豆国产级在线| 精品国产一区二区三区精东影业| 精品视频在线看| 日日日夜夜操| 日韩avdvd| 国产网站免费在线观看| 精品国产三级a| 久久精品免视看国产成人2021| 天天做人人爱夜夜爽2020毛片| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩在线观看免费完整版视频| 你懂的在线观看视频| 精品国产亚一区二区三区| 麻豆午夜视频| 国产成人欧美一区二区三区的| 欧美另类videosbestsex视频| 国产a视频| 国产高清在线精品一区a| 韩国三级香港三级日本三级la| 麻豆午夜视频| 欧美激情一区二区三区视频 | 国产高清在线精品一区a| 日韩专区亚洲综合久久| 国产不卡在线看| 欧美日本免费| 精品视频一区二区三区| 免费毛片播放| 91麻豆精品国产综合久久久| 999精品在线| 欧美a级成人淫片免费看| 九九免费高清在线观看视频| 精品国产三级a| 色综合久久手机在线| 国产成人精品一区二区视频| 成人高清免费| 亚洲精品久久久中文字| 日本特黄特色aa大片免费| 午夜在线观看视频免费 成人| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 欧美大片a一级毛片视频| 久久精品大片| 午夜久久网| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产成a人片在线观看视频| 成人高清免费| 国产一区精品| 91麻豆精品国产高清在线| 日本伦理黄色大片在线观看网站| 久久福利影视| 日韩免费在线视频| 欧美日本韩国| 国产不卡在线观看| 精品毛片视频| 日日夜人人澡人人澡人人看免| 日本伦理片网站| 国产视频一区二区在线观看| 美女免费精品视频在线观看| 国产91精品一区二区| 青青久久精品国产免费看| 91麻豆tv| 超级乱淫黄漫画免费| 国产91视频网| 免费国产在线观看| 四虎影视库国产精品一区| 国产极品白嫩美女在线观看看| 国产极品白嫩美女在线观看看| 精品久久久久久中文| 99热精品一区| 国产极品精频在线观看| 国产网站免费在线观看| 999精品视频在线| 夜夜操网| 亚欧视频在线| 四虎精品在线观看| 成人高清视频在线观看| 国产美女在线观看| 一本伊大人香蕉高清在线观看| 免费国产在线观看| 黄视频网站免费观看| 免费一级生活片| 欧美激情一区二区三区在线| 午夜精品国产自在现线拍| 久草免费在线色站| 99久久精品国产麻豆| 久久国产精品自线拍免费| 精品在线视频播放| 尤物视频网站在线观看| 天天做人人爱夜夜爽2020| 午夜欧美成人久久久久久| 午夜在线观看视频免费 成人| 美女免费黄网站|