python脚本监控logstash进程并邮件告警实例


Posted in Python onApril 28, 2020

supervisor虽然也能拉起来logstash进程,但是有时候supervisor也会挂,也有时会拉不起,就算拉起来了也没有邮件告警功能 ,所以编写一个python脚本监控所有服务器,以下代码只列举了一台服务器,需要更多服务器在列表里面添加就行!

(日志采集过程中连续几天数据异常,由于服务器太多,当时不太想一一去将近40台服务器查看logstash进程,但又一直查不出原因,后来就每台服务器查看logstash进程,果然发现3台采集搜索日志的logstash进程没了,然后就编写了此脚本监控,效果很好)

# coding=utf-8
#!/usr/bin/env python
_author_ = 'liuzc'
import os
import datetime
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 定义日志输出文件
log = "/home/data/liuzc/check_ps/logstash_process.log"
ipAndUrlList = [
  ["log@10.10.10.10","aiu-service-agent.conf"]
]
def checkPS():
 beginTime = datetime.datetime.now()
 print("开始检查进程。。。时间为:%s" % beginTime)
 for ipAndUrl in ipAndUrlList:
  ip = ipAndUrl[0]
  configName = ipAndUrl[1]
  alist = ip.split("@")
  username = alist[0]
  #将进程信息写入log文件
  os.system("ssh %s ps -ef |grep %s |grep -v 'grep'> %s" %(ip,configName,log))
  #判断文件大小,当logstash没有运行时上一步写入log的内容为空
  if not(os.path.getsize(log)):
   # 重启进程
   print("ip为%s,配置文件名称为 %s 不在进程中,正在重启进程......" %(ip,configName))
   # os.system('ssh %s /home/%s/elk/logstash/bin/logstash -f %s &'%(ip,username,url))
   os.system('ssh %s /home/%s/elk/logstash/bin/logstash -f /home/%s/elk/logstash/etc/%s &' % (ip, username,username, configName))
   print("重启进程成功,开始发送邮件")
   # 发送邮件
   sendMail(ip,configName)
 endTime = datetime.datetime.now()
 print("检查进程结束。。。时间为:%s" % endTime)
 print("=============================================================================")
 
def sendMail(ip,configName):
 # 当前时间
 now = datetime.datetime.now()
 # 第三方 SMTP 服务
 mail_host = "mail.qq.com" # 设置服务器
 mail_user = "aa@qq.com" # 用户名
 mail_pass = "deretrgt4556h" # 口令
 sender = 'aa@qq.com'
 receivers = ['bb@qq.com','cc@qq.com','dd@qq.com'] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱
 message = MIMEText('logstash进程异常,但已自动重启...服务器为 %s , 配置文件为 %s , 时间为 %s ' %(ip,configName,now), 'plain', 'utf-8')
 message['From'] = Header("logstash_ps", 'utf-8')
 message['To'] = Header("users", 'utf-8')
 subject = 'logstash进程异常告警!!!'
 message['Subject'] = Header(subject, 'utf-8')
 try:
  smtpObj = smtplib.SMTP()
  smtpObj.connect(mail_host, 25) # 25 为 SMTP 端口号
  smtpObj.login(mail_user, mail_pass)
  smtpObj.sendmail(sender, receivers, message.as_string())
  print ("邮件发送成功!!!")
 except smtplib.SMTPException:
  print("Error: 邮件发送失败。。。")
 
if __name__ == '__main__':
 while True:
  try:
   checkPS()
  except Exception as e:
   print('Error:', e)

以上这篇python脚本监控logstash进程并邮件告警实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中Collection的使用小技巧
Aug 18 Python
linux环境下python中MySQLdb模块的安装方法
Jun 16 Python
python3+PyQt5泛型委托详解
Apr 24 Python
Python3实现的回文数判断及罗马数字转整数算法示例
Mar 27 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
Python定时任务APScheduler安装及使用解析
Aug 07 Python
Python rabbitMQ如何实现生产消费者模式
Aug 24 Python
python,Java,JavaScript实现indexOf
Sep 09 Python
python关于倒排列的知识点总结
Oct 13 Python
Python经典五人分鱼实例讲解
Jan 04 Python
使用Python+Appuim 清理微信的方法
Jan 26 Python
Pygame Draw绘图函数的具体使用
Nov 17 Python
用Python在Excel里画出蒙娜丽莎的方法示例
Apr 28 #Python
全网首秀之Pycharm十大实用技巧(推荐)
Apr 27 #Python
python实时监控logstash日志代码
Apr 27 #Python
python实现秒杀商品的微信自动提醒功能(代码详解)
Apr 27 #Python
浅析python 定时拆分备份 nginx 日志的方法
Apr 27 #Python
python异步Web框架sanic的实现
Apr 27 #Python
python库skimage给灰度图像染色的方法示例
Apr 27 #Python
You might like
php中error与exception的区别及应用
2014/07/28 PHP
PHP解析RSS的方法
2015/03/05 PHP
php生成二维码图片方法汇总
2016/12/17 PHP
浅谈使用 Yii2 AssetBundle 中 $publishOptions 的正确姿势
2017/11/08 PHP
thinkphp5.1 框架钩子和行为用法实例分析
2020/05/25 PHP
js中的escape及unescape函数的php实现代码
2007/09/04 Javascript
jQuery Ajax之$.get()方法和$.post()方法
2009/10/12 Javascript
ASP 过滤数组重复数据函数(加强版)
2010/05/31 Javascript
jQuery过滤选择器:not()方法使用介绍
2014/04/20 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
javascript笛卡尔积算法实现方法
2015/04/08 Javascript
js绘制购物车抛物线动画
2020/11/18 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
JavaScript 中 avalon绑定属性总结
2016/10/19 Javascript
Vue-cli项目部署到Nginx服务器的方法
2019/11/01 Javascript
nuxt配置通过指定IP和端口访问的实现
2020/01/08 Javascript
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
webpack安装配置与常见使用过程详解(结合vue)
2020/06/01 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
[54:41]2018DOTA2亚洲邀请赛3月30日 小组赛B组 VGJ.T VS paiN
2018/03/31 DOTA
分析Python读取文件时的路径问题
2018/02/11 Python
python3实现163邮箱SMTP发送邮件
2018/05/22 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
python3.X 抓取火车票信息【修正版】
2018/06/19 Python
Python3自定义http/https请求拦截mitmproxy脚本实例
2020/05/11 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
python里glob模块知识点总结
2021/01/05 Python
Boden英国官网:英国知名原创时装品牌
2018/11/06 全球购物
销售文员岗位职责
2013/11/29 职场文书
股东授权委托书范本
2014/09/13 职场文书
乡镇三严三实学习心得体会
2014/10/13 职场文书
面试通知单大全
2015/04/20 职场文书
2015年财务个人工作总结范文
2015/05/22 职场文书
python函数指定默认值的实例讲解
2021/03/29 Python
总结Python变量的相关知识
2021/06/28 Python
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技