這篇文章主要講解了python腳本監(jiān)控logstash進(jìn)程并郵件告警的實(shí)現(xiàn)方法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。

supervisor雖然也能拉起來(lái)logstash進(jìn)程,但是有時(shí)候supervisor也會(huì)掛,也有時(shí)會(huì)拉不起,就算拉起來(lái)了也沒(méi)有郵件告警功能 ,所以編寫一個(gè)python腳本監(jiān)控所有服務(wù)器,以下代碼只列舉了一臺(tái)服務(wù)器,需要更多服務(wù)器在列表里面添加就行!
(日志采集過(guò)程中連續(xù)幾天數(shù)據(jù)異常,由于服務(wù)器太多,當(dāng)時(shí)不太想一一去將近40臺(tái)服務(wù)器查看logstash進(jìn)程,但又一直查不出原因,后來(lái)就每臺(tái)服務(wù)器查看logstash進(jìn)程,果然發(fā)現(xiàn)3臺(tái)采集搜索日志的logstash進(jìn)程沒(méi)了,然后就編寫了此腳本監(jiān)控,效果很好)
# 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("開(kāi)始檢查進(jìn)程。。。時(shí)間為:%s" % beginTime)
for ipAndUrl in ipAndUrlList:
ip = ipAndUrl[0]
configName = ipAndUrl[1]
alist = ip.split("@")
username = alist[0]
#將進(jìn)程信息寫入log文件
os.system("ssh %s ps -ef |grep %s |grep -v 'grep'> %s" %(ip,configName,log))
#判斷文件大小,當(dāng)logstash沒(méi)有運(yùn)行時(shí)上一步寫入log的內(nèi)容為空
if not(os.path.getsize(log)):
# 重啟進(jìn)程
print("ip為%s,配置文件名稱為 %s 不在進(jìn)程中,正在重啟進(jìn)程......" %(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("重啟進(jìn)程成功,開(kāi)始發(fā)送郵件")
# 發(fā)送郵件
sendMail(ip,configName)
endTime = datetime.datetime.now()
print("檢查進(jìn)程結(jié)束。。。時(shí)間為:%s" % endTime)
print("=============================================================================")
def sendMail(ip,configName):
# 當(dāng)前時(shí)間
now = datetime.datetime.now()
# 第三方 SMTP 服務(wù)
mail_host = "mail.qq.com" # 設(shè)置服務(wù)器
mail_user = "aa@qq.com" # 用戶名
mail_pass = "deretrgt4556h" # 口令
sender = 'aa@qq.com'
receivers = ['bb@qq.com','cc@qq.com','dd@qq.com'] # 接收郵件,可設(shè)置為你的QQ郵箱或者其他郵箱
message = MIMEText('logstash進(jìn)程異常,但已自動(dòng)重啟...服務(wù)器為 %s , 配置文件為 %s , 時(shí)間為 %s ' %(ip,configName,now), 'plain', 'utf-8')
message['From'] = Header("logstash_ps", 'utf-8')
message['To'] = Header("users", 'utf-8')
subject = 'logstash進(jìn)程異常告警!!!'
message['Subject'] = Header(subject, 'utf-8')
try:
smtpObj = smtplib.SMTP()
smtpObj.connect(mail_host, 25) # 25 為 SMTP 端口號(hào)
smtpObj.login(mail_user, mail_pass)
smtpObj.sendmail(sender, receivers, message.as_string())
print ("郵件發(fā)送成功!!!")
except smtplib.SMTPException:
print("Error: 郵件發(fā)送失敗。。。")
if __name__ == '__main__':
while True:
try:
checkPS()
except Exception as e:
print('Error:', e)
本文題目:python腳本監(jiān)控logstash進(jìn)程并郵件告警的實(shí)現(xiàn)方法-創(chuàng)新互聯(lián)
文章網(wǎng)址:http://www.chinadenli.net/article44/dgscee.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、虛擬主機(jī)、外貿(mào)建站、微信小程序、定制開(kāi)發(fā)、移動(dòng)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容