何成 发表于 2023-3-18 21:37:58

使用python自动监控程序运行过程数据

操作系统 :CentOS 7.6.1810_x64
Python 版本 : 2.7.5
一、背景描述

工作中会遇到需要监控程序运行过程数据的情况,比如定时执行监控的cmd并记录执行结果,本文提供一种实现方式,便于后续排查问题。
二、具体实现

使用python实现该功能很简单,大致分为以下几个步骤:
1、编写cmd命令,确保执行后有控制台输出且退出命令;
2、使用 popen 执行cmd命令,并获取cmd的执行结果;
3、将执行结果以日志形式写入文件,并设置日志文件总大小,避免占用过多磁盘;
自动监控脚本示例代码如下:
https://img2023.cnblogs.com/blog/300959/202303/300959-20230318210521289-1259942180.png
完整代码可从该地址获取:聊聊博文-使用python自动监控程序运行过程数据
或关注微信公众号(聊聊博文,文末可扫码)后回复 2023031801 获取。
其中,cmd 可以根据实际情况进行调整,这里列举下我常用的几个场景。

[*]监控某进程cpu、内存使用情况
先使用ps获取程序pid,再使用top命令监控进行运行数据:
top -b -n 1 -p 15653
https://img2023.cnblogs.com/blog/300959/202303/300959-20230318210906124-1419045887.png

[*]监控磁盘使用情况
可使用iostat命令获取指定设备的使用数据:
iostat -d sda
https://img2023.cnblogs.com/blog/300959/202303/300959-20230318210948137-1417915157.png

[*]监控某应用程序运行数据
 比如监控freeswitch的呼叫数据,可以使用如下命令:
/usr/local/freeswitch/bin/fs_cli -x "show calls count"如果是在docker容器中,可使用如下命令:
docker exec -t fs /usr/local/freeswitch/bin/fs_cli -x "show calls count"https://img2023.cnblogs.com/blog/300959/202303/300959-20230318211054696-2046269965.png
三、运行效果

这里以监控进程为例演示下使用效果,命令如下:
top -b -n 1 -p 15653
效果如下:
https://img2023.cnblogs.com/blog/300959/202303/300959-20230318211124631-1058784501.png
 
 本文涉示例代码,可从如下途径获取:
关注微信公众号(聊聊博文,文末可扫码)后回复 2023031801 获取。

来源:https://www.cnblogs.com/MikeZhang/p/20230318-pythonProcessMonitor.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作!
页: [1]
查看完整版本: 使用python自动监控程序运行过程数据