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')