歡迎您光臨本站 註冊首頁

python腳本監控logstash進程並郵件告警實例

←手機掃碼閱讀     ml5rwbikls @ 2020-04-30 , reply:0

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)


[ml5rwbikls ] python腳本監控logstash進程並郵件告警實例已經有309次圍觀

http://coctec.com/docs/python/shhow-post-232220.html