python 监控linux进程并发送告警

需求:服务器上运行着elasticsearch,logstash,kibana等进程,最近经常发现elastcisearch无故停止,不能在第一时间发现,从而导致数据丢失。于是乎,想写一个监控脚本,实时监控进程状态,如果有异常,发送邮件通知。这样就可以在第一时间去解决问题。

之前python发送邮件使用的是smtplib模块,该模块使用比较复杂,现在有一个更方便的模块,yagmail,本次以yagmail模块作为演示。

话不多说,直接上代码

#!/usr/bin/env python3.7
# _*_ coding:utf-8 _*_

import yagmail
import subprocess

def send_mail(send_user,send_password,send_host,to_user,to_subject,to_contents):
    yag = yagmail.SMTP(user=send_user,password=send_password,host=send_host)
    yag.send(to_user,to_subject,to_contents)

def check_process(Process):
    cmd = 'ps axu | grep %s | grep -v grep | wc -l'%Process
    res = subprocess.Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)      
    if res.stdout.read().decode('utf-8').strip() == '0':
       subject = '%s 宕机'%Process
       msg = ['%s 已停止运行,请检查'%Process]
       send_mail("发件地址","客户端授权码","smtp.qq.com","收件地址",subject,msg)

if __name__ == '__main__':
    check_process('kibana')
    check_process('logstash')
    check_process('elasticsearch')

  

posted @ 2021-09-08 10:16  羊脂玉净瓶  阅读(442)  评论(0)    收藏  举报