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中的正则表达式的用法
Apr 09 Python
Python面向对象编程中关于类和方法的学习笔记
Jun 30 Python
python实现树形打印目录结构
Mar 29 Python
Python实现购物车购物小程序
Apr 18 Python
python 按照固定长度分割字符串的方法小结
Apr 30 Python
python脚本实现验证码识别
Jun 07 Python
Flask框架模板继承实现方法分析
Jul 31 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
python变量的作用域是什么
May 26 Python
python 通过pip freeze、dowload打离线包及自动安装的过程详解(适用于保密的离线环境
Dec 14 Python
Python基于百度AI实现抓取表情包
Jun 27 Python
Python Flask搭建yolov3目标检测系统详解流程
Nov 07 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通过COM类调用组件的实现代码
2012/01/11 PHP
php计算title标题相似比的方法
2015/07/29 PHP
ThinkPHP项目分组配置方法分析
2016/03/23 PHP
PHP全局使用Laravel辅助函数dd
2019/12/26 PHP
mouse_on_title.js
2006/08/25 Javascript
javascript 读取图片文件的大小
2009/06/25 Javascript
jQuery学习5 jQuery事件模型
2010/02/07 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
js判断IE6/IE7/FF的代码[XMLHttpRequest]
2011/02/16 Javascript
电子商务网站上的常用的js放大镜效果
2011/12/08 Javascript
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
批量修改标签css样式以input标签为例
2014/07/31 Javascript
jQuery中not()方法用法实例
2015/01/06 Javascript
基于JavaScript实现树形下拉框
2016/08/10 Javascript
基于js实现checkbox批量选中操作
2016/11/22 Javascript
详解vue数据渲染出现闪烁问题
2017/06/29 Javascript
Angular2 自定义validators的实现方法
2017/07/05 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
Python 字典与字符串的互转实例
2017/01/13 Python
Python列表切片用法示例
2017/04/19 Python
浅谈python中的数字类型与处理工具
2017/08/02 Python
Python学习小技巧总结
2018/06/10 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
Python异常的检测和处理方法
2018/10/26 Python
解决pycharm运行时interpreter为空的问题
2018/10/29 Python
python获取服务器响应cookie的实例
2018/12/28 Python
centos 安装Python3 及对应的pip教程详解
2019/06/28 Python
Python3 集合set入门基础
2020/02/10 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
Infababy英国:婴儿推车、Travel System婴儿车和婴儿汽车座椅销售
2018/05/23 全球购物
商场消防演习方案
2014/02/12 职场文书
保安公司服务承诺书
2014/05/28 职场文书
网络工程专业大学生求职信
2014/10/01 职场文书
写给妈妈的感谢信
2015/01/22 职场文书