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 相关文章推荐
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
实例讲解Python爬取网页数据
Jul 08 Python
python 求1-100之间的奇数或者偶数之和的实例
Jun 11 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
Django ORM 自定义 char 类型字段解析
Aug 09 Python
Pycharm 字体大小调整设置的方法实现
Sep 27 Python
解决Python3下map函数的显示问题
Dec 04 Python
Python生成器常见问题及解决方案
Mar 21 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
Apr 24 Python
基于Python把网站域名解析成ip地址
May 25 Python
python如何用matplotlib创建三维图表
Jan 26 Python
python+pytest接口自动化之token关联登录的实现
Apr 06 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可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
php面向对象全攻略 (五) 封装性
2009/09/30 PHP
php 缩略图实现函数代码
2011/06/23 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
javascript代码加载优化方法
2011/01/30 Javascript
jquery向.ashx文件post中文乱码问题的解决方法
2011/03/28 Javascript
JavaScript/jQuery 表单美化插件小结
2012/02/14 Javascript
仿中关村在线首页弹出式广告插件(jQuery版)
2012/05/03 Javascript
使用CSS样式position:fixed水平滚动的方法
2014/02/19 Javascript
javascript实现复制与粘贴操作实例
2014/10/16 Javascript
jQuery插件jPaginate实现无刷新分页
2015/05/04 Javascript
jQuery动态背景图片效果实现方法
2015/07/03 Javascript
jquery背景跟随鼠标滑动导航
2015/11/20 Javascript
jQuery EasyUI Pagination实现分页的常用方法
2016/05/21 Javascript
JS刷新父窗口的几种方式小结(推荐)
2016/11/09 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
Bootstrap3 多个模态对话框无法显示的解决方案
2017/02/23 Javascript
详解nodejs通过代理(proxy)发送http请求(request)
2017/09/22 NodeJs
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
Vue渲染过程浅析
2019/03/14 Javascript
vue随机验证码组件的封装实现
2020/02/19 Javascript
javascript实现移动端轮播图
2020/12/09 Javascript
[07:43]《辉夜杯》公开赛晋级外卡赛战队—TRG训练生活探秘
2015/12/11 DOTA
记一次python 内存泄漏问题及解决过程
2018/11/29 Python
Python爬虫——爬取豆瓣电影Top250代码实例
2019/04/17 Python
python2和python3实现在图片上加汉字的方法
2019/08/22 Python
详解利用css3的var()实现运行时改变scss的变量值
2021/03/02 HTML / CSS
AmazeUI中模态框的实现
2020/08/19 HTML / CSS
Stuart Weitzman欧盟:美国奢华鞋履品牌
2017/05/24 全球购物
应届大学生简历中的自我评价
2014/01/15 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
2014年安全生产责任书
2014/07/22 职场文书
三方股东合作协议书
2014/10/28 职场文书
2014年社区工作总结
2014/11/18 职场文书
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL