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实现从一组颜色中找出与给定颜色最接近颜色的方法
Mar 19 Python
详解Django中的form库的使用
Jul 18 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
Python与R语言的简要对比
Nov 14 Python
python基础教程项目三之万能的XML
Apr 02 Python
django+xadmin+djcelery实现后台管理定时任务
Aug 14 Python
对Python多线程读写文件加锁的实例详解
Jan 14 Python
Python匿名函数及应用示例
Apr 09 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
Oct 17 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
基于python实现可视化生成二维码工具
Jul 08 Python
一个入门级python爬虫教程详解
Jan 27 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 socke 向指定页面提交数据
2008/07/23 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
Zend Framework路由器用法实例详解
2016/12/11 PHP
ThinkPHP Where 条件中常用表达式示例(详解)
2017/03/31 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
PHP 对象接口简单实现方法示例
2020/04/13 PHP
php在linux环境中如何使用redis详解
2020/12/15 PHP
nicejforms——美化表单不用愁
2007/02/20 Javascript
js AspxButton的客户端操作
2009/06/26 Javascript
使用Post提交时须将空格转换成加号的解释
2013/01/14 Javascript
JavaScript中反正弦函数Math.asin()的使用简介
2015/06/14 Javascript
纯javascript响应式树形菜单效果
2015/11/10 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
详解Puppeteer 入门教程
2018/05/09 Javascript
jQuery ajax仿Google自动提示SearchSuggess功能示例
2019/03/28 jQuery
vue父组件触发事件改变子组件的值的方法实例详解
2019/05/07 Javascript
一文秒懂JavaScript构造函数、实例、原型对象以及原型链
2020/08/25 Javascript
python django集成cas验证系统
2014/07/14 Python
Python使用requests发送POST请求实例代码
2018/01/25 Python
在pandas多重索引multiIndex中选定指定索引的行方法
2018/11/16 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
浅谈tensorflow中Dataset图片的批量读取及维度的操作详解
2020/01/20 Python
摩托车和ATV零件、配件和服装的首选在线零售商:MotoSport
2017/12/22 全球购物
Perfume’s Club英国官网:购买香水和护肤品
2019/11/02 全球购物
如何配置、使用和清除Smarty缓存
2015/12/23 面试题
中层干部岗位职责
2013/12/18 职场文书
小学生美德少年事迹材料
2014/08/24 职场文书
2015年加油站站长工作总结
2015/05/27 职场文书
有关骆驼祥子的读书笔记
2015/06/26 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书
Pytorch反向传播中的细节-计算梯度时的默认累加操作
2021/06/05 Python
python中的3种定义类方法
2021/11/27 Python