“Python监控今测状态并实现告警”的版本间的差异

来自CloudWiki
跳转至: 导航搜索
Python监控进程状态并实现告警
Python监控进程状态并实现告警
第6行: 第6行:
 
Supervisor用Python开发的一个client/server服务,是Linux/Unix系统 下的一个进程管理工具,不支持Windows系统。它可以很方便地监听、启动、停止、重劃-个或多个进程。用Supervisor管理的进程, 当-个进程意外被杀死,或者是意外被停止(系统负载过高,cpu 占用率很等),supervisor 监听到进程死后,自动将它重新拉起来,很方便地做到进程自动恢复的功能,不再需要自己写shel脚本来控制。
 
Supervisor用Python开发的一个client/server服务,是Linux/Unix系统 下的一个进程管理工具,不支持Windows系统。它可以很方便地监听、启动、停止、重劃-个或多个进程。用Supervisor管理的进程, 当-个进程意外被杀死,或者是意外被停止(系统负载过高,cpu 占用率很等),supervisor 监听到进程死后,自动将它重新拉起来,很方便地做到进程自动恢复的功能,不再需要自己写shel脚本来控制。
  
'''通过代码实现'''
+
'''通过Python代码实现'''
  
 
第一步:我们首先判断进程是否存在的逻辑,采用psutil来实现,先安装库
 
第一步:我们首先判断进程是否存在的逻辑,采用psutil来实现,先安装库
 
  pip3 install psutil
 
  pip3 install psutil
实现代码如下:
+
进程检测实现代码如下:
 
  #coding:utf-8
 
  #coding:utf-8
 
  import psutil
 
  import psutil
第28行: 第28行:
  
 
[[文件:2020-08-09_090714.png]]
 
[[文件:2020-08-09_090714.png]]
 +
 +
代码解析:
 +
解析: .
 +
首先我们先定义一个proc_exist函数,函数的第一个参数传入进程名, 中pl =sutil.pids()示把所有的进程列出来。接着我们for循环一下pid的列表,当找到psutil. Process(pid) .name()的名词为传入的参数的名字的时候就返回pid 值,没有就不做任何操作(可以认为返回内容为空)接着isinstance用于检测返回内容。
 +
 +
上面可以进行进程检测了,我们实现发送邮箱代码实现:
 +
(通过多次实验发现,需要先获取对于的SMTP邮箱授权码,我这里使用的163邮箱)
 +
[[文件:2020-08-09 094100.png]]

2020年8月9日 (日) 01:43的版本

Python监控进程状态并实现告警

公司的Java应用程序会莫名其妙的挂掉,然后我们再去登录服务器看看程序是不是挂掉了,这样是非常耗时间麻烦的事,这种情况和什么行业没有直接联系但却普遍存在。后来我们可以使用supervisor进行守护进程。

Supervisor用Python开发的一个client/server服务,是Linux/Unix系统 下的一个进程管理工具,不支持Windows系统。它可以很方便地监听、启动、停止、重劃-个或多个进程。用Supervisor管理的进程, 当-个进程意外被杀死,或者是意外被停止(系统负载过高,cpu 占用率很等),supervisor 监听到进程死后,自动将它重新拉起来,很方便地做到进程自动恢复的功能,不再需要自己写shel脚本来控制。

通过Python代码实现

第一步:我们首先判断进程是否存在的逻辑,采用psutil来实现,先安装库

pip3 install psutil

进程检测实现代码如下:

#coding:utf-8
import psutil
def proc_exist(process_name):
   pl = psutil.pids()
   for pid in pl:
       if psutil.Process(pid).name() == process_name:
           return pid
if isinstance(proc_exist('sshdd'),int):
   print('进程存在')
else:
   print('进程不存在')

2020-08-08 220422.png

运行代码我们这里检测ssh服务是否开启:

2020-08-09 090714.png

代码解析: 解析: . 首先我们先定义一个proc_exist函数,函数的第一个参数传入进程名, 中pl =sutil.pids()示把所有的进程列出来。接着我们for循环一下pid的列表,当找到psutil. Process(pid) .name()的名词为传入的参数的名字的时候就返回pid 值,没有就不做任何操作(可以认为返回内容为空)接着isinstance用于检测返回内容。

上面可以进行进程检测了,我们实现发送邮箱代码实现: (通过多次实验发现,需要先获取对于的SMTP邮箱授权码,我这里使用的163邮箱) 2020-08-09 094100.png