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创建进程fork用法
Jun 04 Python
python中函数默认值使用注意点详解
Jun 01 Python
Python文本相似性计算之编辑距离详解
Nov 28 Python
解决PyCharm的Python.exe已经停止工作的问题
Nov 29 Python
python 内置模块详解
Jan 01 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
利用Python进行图像的加法,图像混合(附代码)
Jul 14 Python
Python中join()函数多种操作代码实例
Jan 13 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
Python运行异常管理解决方案
Mar 09 Python
利用Python实现学生信息管理系统的完整实例
Dec 30 Python
Opencv 图片的OCR识别的实战示例
Mar 02 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读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
ThinkPHP实现非标准名称数据表快速创建模型的方法
2014/11/29 PHP
php+curl 发送图片处理代码分享
2015/07/09 PHP
让你的PHP7更快之Hugepage用法分析
2016/05/31 PHP
Win7环境下Apache连接MySQL提示连接已重置的解决办法
2017/05/09 PHP
php处理抢购类功能的高并发请求
2018/02/08 PHP
js封装的textarea操作方法集合(兼容很好)
2010/11/16 Javascript
javascript使用中为什么10..toString()正常而10.toString()出错呢
2013/01/11 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
js时间戳转为日期格式的方法
2015/12/28 Javascript
JavaScript实现图片滑动切换的代码示例分享
2016/03/06 Javascript
浅谈JavaScript对象与继承
2016/07/10 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
2016/08/03 Javascript
全面解析Angular中$Apply()及$Digest()的区别
2016/08/04 Javascript
在js代码拼接dom对象到页面上去的模板总结(必看)
2017/02/14 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
vue3.0中setup使用(两种用法)
2020/12/02 Vue.js
[01:33:07]VGJ.T vs Newbee Supermajor 败者组 BO3 第一场 6.6
2018/06/07 DOTA
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
Python创建二维数组实例(关于list的一个小坑)
2017/11/07 Python
django+mysql的使用示例
2018/11/23 Python
在python环境下运用kafka对数据进行实时传输的方法
2018/12/27 Python
Python中常用的8种字符串操作方法
2019/05/06 Python
python 绘制正态曲线的示例
2020/09/24 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
找到您丢失的钥匙、钱包和手机:Tile
2017/05/19 全球购物
C++面试题目
2013/06/25 面试题
毕业自我评价
2014/02/05 职场文书
军训鉴定表自我鉴定
2014/02/13 职场文书
《夜晚的实验》教学反思
2014/02/19 职场文书
革命英雄事迹演讲稿
2014/09/13 职场文书
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
道歉信怎么写
2015/05/12 职场文书
python xlwt模块的使用解析
2021/04/13 Python
python numpy中multiply与*及matul 的区别说明
2021/05/26 Python