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实现批量重命名文件的代码
May 25 Python
Django框架中render_to_response()函数的使用方法
Jul 16 Python
星球大战与Python之间的那些事
Jan 07 Python
同时安装Python2 & Python3 cmd下版本自由选择的方法
Dec 09 Python
详解Django之auth模块(用户认证)
Apr 17 Python
关于python写入文件自动换行的问题
Jun 23 Python
Django 后台获取文件列表 InMemoryUploadedFile的例子
Aug 07 Python
python opencv实现图片缺陷检测(讲解直方图以及相关系数对比法)
Apr 07 Python
Python Tornado实现WEB服务器Socket服务器共存并实现交互的方法
May 26 Python
10行Python代码实现Web自动化管控的示例代码
Aug 14 Python
Django filter动态过滤与排序实现过程解析
Nov 26 Python
Flask中jinja2的继承实现方法及实例
Mar 03 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作的文本留言本的例子(一)
2006/10/09 PHP
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
2011/04/18 PHP
php判断用户是否手机访问代码
2015/06/08 PHP
PHP 生成微信红包代码简单
2016/03/25 PHP
[原创]解决wincache不支持64位PHP5.5/5.6的问题(提供64位wincache下载)
2016/06/22 PHP
PHP简单遍历对象示例
2016/09/28 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
PHP pthreads v3下的Volatile简介与使用方法示例
2020/02/21 PHP
jQuery温习篇 强大的JQuery选择器
2010/04/24 Javascript
JavaScript Date对象 日期获取函数
2010/12/19 Javascript
JavaScript高级程序设计(第3版)学习笔记12 js正则表达式
2012/10/11 Javascript
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
JS动态加载当前时间的方法
2015/02/09 Javascript
jQuery实现右下角可缩放大小的层完整实例
2016/06/20 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
2017/09/20 jQuery
JavaScript实现删除数组重复元素的5种常用高效算法总结
2018/01/18 Javascript
深入理解Vue.js轻量高效的前端组件化方案
2018/12/10 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
jQuery/JS监听input输入框值变化实例
2019/10/17 jQuery
jquery实现直播视频弹幕效果
2020/02/25 jQuery
JavaScript实现页面高亮操作提示和蒙板
2021/01/04 Javascript
Python用zip函数同时遍历多个迭代器示例详解
2016/11/14 Python
详解Django中间件的5种自定义方法
2018/07/26 Python
windows下 兼容Python2和Python3的解决方法
2018/12/05 Python
劳资员岗位职责
2013/11/11 职场文书
学生会主席就职演讲稿
2014/01/14 职场文书
大学生村官事迹材料
2014/01/21 职场文书
运动会闭幕式解说词
2014/02/21 职场文书
珍爱生命演讲稿
2014/05/10 职场文书
国家税务局领导班子对照检查材料思想汇报
2014/10/04 职场文书
机关干部作风建设剖析材料
2014/10/23 职场文书
2019年幼儿园家长接送责任书
2019/10/29 职场文书
JS Canvas接口和动画效果大全
2021/04/29 Javascript