您好,登錄后才能下訂單哦!
今天小編給大家分享一下python監控日志中的報錯并進行郵件報警怎么實現的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
1、在測試過程中,日志時時在刷,時時監控難度太大
2、轉換思路,每分鐘對日志進行掃描一次,發現報錯即報警
a.獲取當前時間前一分鐘的日志,并將日志全部寫入一個文件中,每次寫入前會將該文件清空
b.獲取前一分鐘文件時,方法是獲取前一分鐘日志的第一行的行號和最后一行的行號,然后將這兩個行號間的所有內容輸出到一個文件中(這樣做相比于直接根據時間過濾的好處就是會包含報錯內容,因為java日志中報錯信息前面是沒有時間的,根據時間過濾就會漏掉報錯信息)
c.在前一分鐘日志中進行java關鍵詞報錯過濾,并將查詢到的報錯信息的前后20行(具體多少行根據實際情況而定)內容都輸出到另一個文件中
d.發郵件之前判斷上一步生成的文件大小,如果大于0(說明有報錯)就觸發郵件,如果等于0就不觸發郵件報警
3.腳本寫好后,放入crond定時任務中,每分鐘執行一次,即可進行監控
僅供參考
#!/bin/sh #日志路徑 mall_c_log_path='/data/admin/log/mall-c/1.0.0/qa/base/1/mall-c.log' mall_mg_log_path='/data/admin/log/mall-mg/1.0.0/qa/base/1/mall-mg.log' #當前時間前一分鐘,精確到分 curdate=`date -d "1 minute ago" +"%Y-%m-%d %H:%M"` echo ${curdate} #獲取mall_c要截取日期日志的開始和結束行號 c_start_line=`cat -n $mall_c_log_path | grep "${curdate}" | head -1 | cut -f1` c_end_line=`cat -n $mall_c_log_path | grep "${curdate}" | tail -1 | cut -f1` #獲取mall_mg要截取日期日志的開始和結束行號 mg_start_line=`cat -n $mall_mg_log_path | grep "${curdate}" | head -1 | cut -f1` mg_end_line=`cat -n $mall_mg_log_path | grep "${curdate}" | tail -1 | cut -f1` sed -n "$c_start_line,${c_end_line}p" $mall_c_log_path > /data/admin/log_err/mall_c_now.log sed -n "$mg_start_line,${mg_end_line}p" $mall_mg_log_path > /data/admin/log_err/mall_mg_now.log #清空錯誤日志文件 > /data/admin/log_err/mall-c_err.txt > /data/admin/log_err/mall-mg_err.txt #將報錯信息寫入文件 err_list=(ArithmeticExecption NullPointerException ClassCastException NegativeArrayException ArrayIndexOutOfBoundsException SecturityException EOFException FileNotFoundException NumberFormatException SQLException IOException NoSuchMethodException SocketTimeoutException) for i in ${err_list[*]}; do cat /data/admin/log_err/mall_c_now.log | grep -C 20 "${i}" >> /data/admin/log_err/mall-c_err.txt cat /data/admin/log_err/mall_mg_now.log | grep -C 20 "${i}" >> /data/admin/log_err/mall-mg_err.txt done
# -*- coding: UTF-8 -*- import smtplib,os from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Header def send_mail_attch(): #發送郵箱 # sender='18706710668@163.com' sender='815618406@qq.com' #接收郵箱 receiver='815618406@qq.com' #發送郵箱服務器 # smtpserver='smtp.163.com' smtpserver='smtp.qq.com' #用戶名 口令 # username='18706710668@163.com' username='815618406@qq.com' password='vwrfpqwbwgsybdah' #中文需參數‘utf8',單字節字符不需要 # 發送郵件主題 subject = '互動贏家QA環境日志監控報警' msg = MIMEMultipart('mixed') msg['Subject'] = Header(subject, 'utf-8') #郵件正文 text = "Dear all!\n 附件是后端日志報錯內容,請查收~" zw = MIMEText(text,'plain','utf-8') msg.attach(zw) #郵件附件1 size_mall_c = os.path.getsize('/data/admin/log_err/mall-c_err.txt') if size_mall_c != 0: mall_c_log = open('/data/admin/log_err/mall-c_err.txt',"rb") send_mall_c_log = mall_c_log.read() mall_c_log.close() att_1 = MIMEText(send_mall_c_log, 'base64', 'utf-8') att_1["Content-Type"] = "application/octet-stream" att_1["Content-Disposition"] = "attachment;filename = 'mall_c_err.txt'" msg.attach(att_1) #郵件附件2 size_mall_mg = os.path.getsize('/data/admin/log_err/mall-mg_err.txt') if size_mall_mg != 0: mall_mg_log = open('/data/admin/log_err/mall-mg_err.txt',"rb") send_mall_mg_log = mall_mg_log.read() mall_mg_log.close() att_2 = MIMEText(send_mall_mg_log, 'base64', 'utf-8') att_2["Content-Type"] = "application/octet-stream" att_2["Content-Disposition"] = "attachment;filename = 'mall_mg_err.txt'" msg.attach(att_2) msg['to']='815618406@qq.com' msg['from']='815618406@qq.com' smtp=smtplib.SMTP_SSL('smtp.qq.com',port=465) #smtp=smtplib.SMTP() #smtp.connect('smtp.qq.com') #smtp.set_debuglevel(1) smtp.login(username,password) smtp.sendmail(sender,receiver,msg.as_string()) smtp.quit() if __name__ == '__main__': size_mall_c = os.path.getsize('/data/admin/log_err/mall-c_err.txt') size_mall_mg = os.path.getsize('/data/admin/log_err/mall-mg_err.txt') if (size_mall_c != 0) or (size_mall_mg != 0): send_mail_attch()
#!/bin/sh #執行收集報錯的腳本 sh /data/admin/log_err/monitor_log_err.sh sleep 10 #執行發送郵件腳本 /usr/bin/python /data/admin/log_err/send_email.py
以上就是“python監控日志中的報錯并進行郵件報警怎么實現”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。