背景 在平时的工作中,经常会有某些进程突然 CPU 飙升,导致系统卡顿。那如何才能监控某个进程的 CPU 利用率呢?我们今天就一起用 Python 来实现下。...环境准备 依赖库 psutil 是 Python 的一个很流行的库,用来获取系统资源信息的。它支持 windows 和 linux,可以获取 CPU,内存,网络,硬盘等信息。...安装 pip install psutil 代码准备 # 导入依赖库 import psutil,time import re,string # 打印系统全部进程的PID列表 print(psutil.pids...()) # 根据进程名获取进程PID def get_pid(name): process_list = list(psutil.process_iter()) print(process_list...PID获取进程对象 def get_process_obj_by_id(pid): try: p = psutil.Process(pid) except Exception
/usr/bin/env python import os process = "/tmp/sshd.lock" os.system("ps -ef|grep sshd|grep -v grep>%...if not(os.path.getsize(process)): print("no running") else: print("running") [root@bogon ~]# python... monitor.py running [root@bogon ~]# 反思:返回值可以设置成1 或者0 然后结合zabbix做监控
业务上的一个需求: 监控进程是否存在,如果检测时不存在则发送告警短信,如果连续10次检测都不存在则发送告警电话。 最近一直在学前端vue.js,今天试着拿python练下,以免手生。.../usr/bin/env python # coding=utf-8 # author: wz # mail: 277215243@qq.com # datetime:2019/1/26 22:34 PM.../procmonitor.py DESCRIPTION 解析进程xml,监控进程标示符,不存在sms告警,不存在uwork电话告警 DEMO ....usage() sys.exit(-1) [test@test ~]$ vim a.py [test@test ~]$ python a.py Error: illegal args..../procmonitor.py DESCRIPTION 解析进程xml,监控进程是否存在,不存在sms告警,不存在此uwork告警 DEMO .
import urllib2 import socket from multiprocessing import Pool urllib2用于请求网页 socket用于限制网络请求超时 pool用于设置进程池...request.get_method()) 获取url的方式可以自己定义,有时候我们会将数据保留在文件中,但更多的是写在数据库,下面代码提供了很好的灵活性,代码中的内容自己可以再完善 '''从文件或数据库中获取需要监控的网页地址...if __name__ == '__main__': url_list=get_url_list('file') if url_list: '''定义进程池中最大的进程数
让我们看看 Monit 的用法,假设我们要监控 Nginx 进程,一旦其 CPU 使用率连续 5 次轮询周期里均超过 50% 的话,就重启进程,此时就可以按照如下方式设置: check process...如果进程本身不存在 pidfile,那么也可以使用 matching 语法来匹配进程。...再让我们看看 Supervisor 的用法,假设我们要监控 100 个 PHP 实现的 Worker 进程,用来提供 Gearman 之类的服务,由于 PHP 本身运行模式的缘故,为了避免严重的内存泄漏问题...不管用什么来监控进程,如果监控者本身挂了,那么被监控者无疑就失控了。...此时需要考虑如何监控监控者本身,这似乎是一个递归问题,不过文章开头我们说过,Linux 本身的初始化系统就能实现简单的监控功能,以 SysVinit 为例,编辑 /etc/inittab 文件: SU:
用Python实现网速监控在网络应用开发和系统监控中,监控上传和下载速度是非常重要的一项任务。通过实时监控网速,我们可以及时了解网络性能,并进行相应的优化和调整。...本文将介绍如何使用Python来实现简单的网速监控功能。1. 安装依赖库首先,我们需要安装一个名为speedtest-cli的第三方库,它可以帮助我们方便地测试网络速度。...编写监控脚本接下来,我们编写一个Python脚本来实现网速监控。...运行监控脚本运行上面的Python脚本,即可实时监控当前的上传和下载速度。可以定时执行该脚本,或者结合其他监控工具实现更灵活的监控策略。 通过以上步骤,我们就实现了用Python监控网速的功能。...在Python编程中,结合speedtest-cli可以实现网络监控、性能评估等功能,为开发和运维工作提供有益支持。
/usr/bin/env python import os, sys, time while True: time.sleep(3) try: ret = os.popen('ps -C nginx
缘由 需要获取某程序运行过程中的内存消耗,一般情况可以使用 top 命令来人工分析,不过我遇到一个程序其内部调用包括 python, R, 以及一系列 linux 命令,这就导致人工统计不太现实 问题变成统计进程及其子进程的内存使用...,可以通过 pstree 命令查看进程与子进程的关系,但是其输出图形,不太方便获取所有子进程ID,因此打算自己编写 C++ 代码来实现 思路 用伪码表示: 当待查询进程存在: 遍历用户所有进程,...获取每个进程的ID和父进程ID及内存 维护一个表,记录与待查询进程相关的子进程及其内存,初始化只有待查询进程 遍历所有进程: 如果当前进程的父进程在表中:.../pm 25201 2 监控 id 为25201的进程,刷新间隔为2秒 结果输出: 2020-09-18 17:37:05 1932 2020-09-18 17:37:07 1932 2020-09-18...17:37:09 1932 这里输出的内存单位是 KB 注意:由于需要进程启动之后才能开启监控,导致进程内存无法从0开始;当进程结束,则监控程序也会退出 关于结果展示,直接将输出结果的第二列和第三列拷贝到
supervisord是用Python编写的工具,用于进程监控。...supervisor 添加程序 在配置文件中添加program区块,这里使用一个最简单的例子,cat命令: [program:foo] command=/bin/cat 启动supervisor 找到你的Python...supervisord命令的一些常用命令行参数: c 指定配置文件 n 在前台运行 u 指定用户运行 d 工作目录 l 日志文件路径 e 日志级别 运行supervisorctl supervisorctl用于管理监控的程序
需要后台运行,一般会用 nohup command & nohup /usr/bin/php /www/test.php >> /var/log/test.log 2>&1 & 但这样会有一些问题,不能监控进程状态...password=123456 保存后reload一下,使生效 supervisorctl reload 然后访问 http://localhost:9001/,即可看到如下界面 常用命令 #启动进程...supervisorctl start xxx #重启进程 supervisorctl restart xxx #重启所有属于名为group的分组进程 supervisorctl stop group...#停止全部进程 supervisorctl stop all #载入最新配置的文件 supervisorctl reload #根据最新的配置文件,启动新配置或有改动的进程 supervisorctl
Monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,适用于Linux/Unix平台。 它可以自动修复那些已经停止运作的程序,特使适合处理那些由于多种原因导致的软件错误....添加http服务监控 vi http check process http with pidfile /usr/local/apache/logs/httpd.pid start program...,然后查看进程是否启动 如果需要监控tomcat,需要开启tomcat的pid文件,默认是没有的 修改脚本,添加蓝色部分 vi /usr/local/tomcat/bin/catalina.sh # ...monit /etc/init.d/monit restart 测试关闭tomcat,查看tomcat是否启动 否则服务可能没有停止命令,比如rsync,那么只能kill掉,注意不要用killall,用pkill.../etc/init.d/monit restart 注意: Monit是是根据被监控的进程的pid文件来检测的,如果没有pid文件,是无法使用的。
新建监控项: 重点!!!...proc.num[,,,] 第一个参数是进程名字,没必要填写,填了反而会使监控不太准确(仅个人测试) 第二个参数是运行进程的用户名 第三个为进程的状态 ,一般选则all 包括:all (default)..., run, sleep, zomb 第四个参数用来指定进程名中包含的字符,对进程进行过滤。
Monit的核心功能就是邮件通知,当你配置好需要监控的进程之后,无论是进程死亡,或者是进程变更都会发送报警邮件并且会更具你的预先配置好的命令尝试重启它,更牛逼的事当monit被关闭的时候也会发送邮件通知...附加功能 比如你不是用的云服务器自己管理的机器,但是机器数量又没有特别多没有到要搭建一套完整的监控系统的份上(zabbix或open-falcon)的份上Monit可以比较好的帮你低成本的解决这个问题...) 注意:配置文件中还有系统报警等可以自行了解这里不做太多说明 配置报警的几种方式 重中之重就是监控进程或者是服务器的报警,我们一般会选择/etc/monit.d/下面建立和监控的进程名一样的文件,Monit...会自动读取解析,这里先来介绍几种常见的配置 按照PID进行监控 使用PID进行监控的基本上是一些程序组件比如Nginx,PHP-FPM,Supervisor,KafKa等,它们都会有一个共同点就是会有一个...*.pid的文件来记录系统进程标示,所以我们如下配置: /etc/monit.d/nginx check process nginx with pidfile /var/run/nginx.pid #通过
最近比较烦,研发给的pc服务版本在虚拟机上已经开始给客户使用了,服务老是莫名的死翘翘,客户不停的电话给我,搞的我心情很差,于是在一个下午,静下心来,用python写了个简单的监控进程的脚本,当发现进程消失的时候...脚本的工作原理是这样的:脚本读取配置文件,读取预先配置好的调用系统服务的路径和所要监控的服务在进程管理器中的进程名,之所以要用配置文件,是为了方便给需要的朋友,你只需要修改进程名和系统路径,源代码就不需要修改了...,我是需要监控SshClient.exe 这个程序,那就配置好他的调用的系统路径和他在任务管理器里面的进程名。... if ProcessName in ProList: #判断进程名是否在列表中,如果是True,则所监控的服务正在 运行状态,#打印服务正常运行 print '' ...print '' else: #如果进程名不在列表中,即监控的服务挂了,则在log文件下记录日志#日志文件名是以年月日为文件名 f=open('.
# "这段代码来自于一个很简单的场景: 在python中调一个程序。给这个程序设置一个timeout 假如一段时间程序还没有返回,就杀掉这个这个新开的进程。"
写在前面 博文内容涉及 Linux 进程内存监控 监控方式包括传统工具 ps/top/pmap ,以及 cgroup 内存子系统,proc 内存伪文件系统 监控内容包括进程内存使用情况, 内存全局数据统计...,内存事件指标,以及进程内存段数据监控 理解不足小伙伴帮忙指正 :),生活加油 我看远山,远山悲悯 持续分享技术干货,感兴趣小伙伴可以关注下 ^_^ 监控进程的内存使用量 这里分析的工具主要是原生工具...,后面还会分享一些 BPF 相关的内存观察工具以及系统内存的全局监控 PS/TOP 一般的内存监控工具,对于进程级别的,会使用如 ps/top 命令, 通过指标 VIRT 或 VSZ 和 RES 或 RSS...Cgroup 子系统 通过 Cgroup 子系统来获取内存信息,在获取之前需要获取当前进程的PID以及对应的 Cgroup 分组 获取 htop 进程ID, htop 是一个类似 top 的系统整体性能监控的进程...-- python3.9 0000561ae3589000 4K r---- python3.9 。。。。。。。。。。。。。。。。
在终端输入top: top -u xiximayou:监控指定用户 查看之后输入k,回车,再输入进程id,可以终止相关进程。...查看网络使用情况:netstat 基本语法:netstat 选项 -an:按一定顺序排列输出 -p:显示哪个进程在调用 比如:输入netstat -an | more:
有时我们会在 Linux 服务器上安装运行一些非服务方式启动的程序,如 Python 程序或 nodejs 程序等,他们无法可靠的保持运行,也无法在出现错误后自动重启。...这时我们就需要 Supervisor 来监控程序的运行,在意外终止时自动重启程序。...command 为需要执行的命令,如果需要在程序退出后自动重启,设置 autostart=true 即可;directory 为程序运行目录,startretries 可以设置启动失败时的尝试次数;user 则是进程运行的用户身份...#启动所有程序 supervisorctl stop all #停止所有程序 supervisorctl restart all #重启所有程序 最后需要注意的是,如果使用 Supervisor 监控
为了使Promethuse可以对进程进行监控,可以用利用process-exporter来检测所选进程的存活状态 一、安装process-exporter 1、安装部署 wget https://github.com...linux-amd64.tar.gz mv process-exporter-0.6.0.linux-amd64 /usr/local/exporter/process-exporter 2、配置文件,监控特定进程...- name: "{{.Matches}}" cmdline: - 'org.apache.hadoop.hdfs.qjournal.server.JournalNode' 监控所有服务进程...process_exporter systemctl enable process_exporter 4、访问 curl localhost:9256/metrics 二、配置prometheus采集进程数据