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 相关文章推荐
Python2.x版本中基本的中文编码问题解决
Oct 12 Python
使用Python从零开始撸一个区块链
Mar 14 Python
python解决js文件utf-8编码乱码问题(推荐)
May 02 Python
详解Python如何生成词云的方法
Jun 01 Python
Python日期时间Time模块实例详解
Apr 15 Python
python控制台实现tab补全和清屏的例子
Aug 20 Python
详解如何用python实现一个简单下载器的服务端和客户端
Oct 28 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python中关于logging模块的学习笔记
Jun 03 Python
基于TensorFlow的CNN实现Mnist手写数字识别
Jun 17 Python
python交互模式基础知识点学习
Jun 18 Python
Python单元测试及unittest框架用法实例解析
Jul 09 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
超神学院:天使彦公认最美的三个视角,网友:我的天使快下凡吧!
2020/03/02 国漫
PHP静态新闻列表自动生成代码
2007/06/14 PHP
PHP 判断常量,变量和函数是否存在
2009/04/26 PHP
php 中英文语言转换类代码
2011/08/11 PHP
php文件压缩之PHPZip类用法实例
2015/06/18 PHP
PHP常用排序算法实例小结【基本排序,冒泡排序,快速排序,插入排序】
2017/02/07 PHP
syntaxhighlighter 使用方法
2007/07/02 Javascript
javascript OFFICE控件测试代码
2009/12/08 Javascript
javascript常用方法总结
2015/05/14 Javascript
JS模式之简单的订阅者和发布者模式完整实例
2015/06/30 Javascript
JS实现浏览器状态栏文字闪烁效果的方法
2015/10/27 Javascript
javascript实现简易计算器的代码
2016/05/31 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
JavaScript 是什么意思
2016/09/22 Javascript
学习vue.js条件渲染
2016/12/03 Javascript
微信小程序-获得用户输入内容
2017/02/13 Javascript
AngularJS中$http使用的简单介绍
2017/03/17 Javascript
node.js学习之事件模块Events的使用示例
2017/09/28 Javascript
微信小程序实现签到功能
2018/10/31 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
Echarts.js无法引入问题解决方案
2020/10/30 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
python多进程读图提取特征存npy
2019/05/21 Python
Python Django 前后端分离 API的方法
2019/08/28 Python
django和flask哪个值得研究学习
2020/07/31 Python
python操作redis数据库的三种方法
2020/09/10 Python
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
IFCHIC台湾:欧美国际设计师品牌
2019/05/18 全球购物
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
澳大利亚女装精品店:Alannah Hill
2020/07/29 全球购物
学习十八大演讲稿
2014/09/15 职场文书
工作违纪的检讨书范文
2019/07/09 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL