国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python腳本監(jiān)控Tomcat服務(wù)器的方法

2020-02-15 22:12:58
字體:
供稿:網(wǎng)友

文章出處:https://blog.csdn.net/sdksdk0/article/details/80933444

作者:朱培      ID:sdksdk0    
--------------------------------------------------------------------------------------------

對于最近的開發(fā)環(huán)境,偶爾會有掛掉的現(xiàn)象發(fā)生,然而并沒有及時發(fā)現(xiàn),下載需要添加一個監(jiān)控功能,當(dāng)服務(wù)掛掉的時候需要有郵件提醒,同時我們的系統(tǒng)每天晚上會跑定時任務(wù),想知道有沒有異常發(fā)生,所以添加了兩個python監(jiān)本監(jiān)控,因?yàn)楸旧硐到y(tǒng)不大,所以沒必要去配置kafka+storm這種日志監(jiān)控了,只用了很簡單的方式來處理了。

1、監(jiān)控tomcat是否掛掉

from smtplib import SMTP_SSL from email.mime.text import MIMEText from email.header import Header from os.path import getsize from sys import exit from re import compile, IGNORECASE import sys, time import os #定義主機(jī) 帳號 密碼 收件人 郵件主題 #定義主機(jī) 帳號 密碼 收件人 郵件主題 mail_info = {  "from": "info@sogoucloud.cn",  "to": "zhupei@sogoucloud.cn",  "hostname": "smtp.exmail.qq.com",  "username": "info@sogoucloud.cn",  "password": "123456",  "mail_subject": "qybd服務(wù)器異常",  "mail_text": "hello, tomcat服務(wù)器出現(xiàn)異常了!,請及時處理",  "mail_encoding": "utf-8" } #發(fā)送郵件函數(shù) def send_mail(error):  #定義郵件的頭部信息  #連接SMTP服務(wù)器,然后發(fā)送信息  smtp = SMTP_SSL(mail_info["hostname"])  smtp.set_debuglevel(1)  smtp.ehlo(mail_info["hostname"])  smtp.login(mail_info["username"], mail_info["password"])  msg = MIMEText(error, "plain", mail_info["mail_encoding"])  msg["Subject"] = Header(mail_info["mail_subject"], mail_info["mail_encoding"])  msg["from"] = mail_info["from"]  msg["to"] = mail_info["to"]  smtp.sendmail(mail_info["from"], mail_info["to"], msg.as_string())  smtp.quit() def isRunning(process_name):  try:   process = len(os.popen('ps aux | grep "' + process_name + '" | grep -v grep').readlines())   if process >= 1:    return True   else:    return False  except:   print("Check process ERROR!!!")   return False #調(diào)用發(fā)送郵件函數(shù)發(fā)送郵件 if __name__ == '__main__':  process_name = "qybd"  isrunning = isRunning(process_name)  print(isrunning)  if isrunning == False:   send_mail("老鐵!qybd服務(wù)器掛了!") 

2、添加crontab定時任務(wù):

*/3 * * * * python /usr/tools/qybd/cmd/sendEmail.py >> /usr/tools/qybd/cmd/tomcatlife.py.log 2>&1

3、使用crontab -u root -l 命令查看當(dāng)前運(yùn)行的定時任務(wù)

4、監(jiān)控日志的腳本

from smtplib import SMTP_SSL from email.mime.text import MIMEText from email.header import Header from os.path import getsize from sys import exit from re import compile, IGNORECASE #定義主機(jī) 帳號 密碼 收件人 郵件主題 #定義主機(jī) 帳號 密碼 收件人 郵件主題 mail_info = {  "from": "info@sogoucloud.cn",  "to": "zhupei@sogoucloud.cn",  "hostname": "smtp.exmail.qq.com",  "username": "info@sogoucloud.cn",  "password": "123456",  "mail_subject": "qybd服務(wù)器異常",  "mail_text": "hello, tomcat服務(wù)器出現(xiàn)異常了!,請及時處理",  "mail_encoding": "utf-8" } #定義tomcat日志文件位置 tomcat_log = '/usr/tools/qybd/tomcat/logs/catalina.out' #該文件是用于記錄上次讀取日志文件的位置,執(zhí)行腳本的用戶要有創(chuàng)建該文件的權(quán)限 last_position_logfile = '/usr/tools/qybd/tomcat/logs/last_position.txt' #匹配的錯誤信息關(guān)鍵字的正則表達(dá)式 pattern = compile(r'Exception|^/t+/bat/b',IGNORECASE) #發(fā)送郵件函數(shù) def send_mail(error):  #定義郵件的頭部信息  #連接SMTP服務(wù)器,然后發(fā)送信息  smtp = SMTP_SSL(mail_info["hostname"])  smtp.set_debuglevel(1)  smtp.ehlo(mail_info["hostname"])  smtp.login(mail_info["username"], mail_info["password"])  msg = MIMEText(error, "plain", mail_info["mail_encoding"])  msg["Subject"] = Header(mail_info["mail_subject"], mail_info["mail_encoding"])  msg["from"] = mail_info["from"]  msg["to"] = mail_info["to"]  smtp.sendmail(mail_info["from"], mail_info["to"], msg.as_string())  smtp.quit() #讀取上一次日志文件的讀取位置 def get_last_position(file):  try:   data = open(file,'r')   last_position = data.readline()   if last_position:    last_position = int(last_position)   else:    last_position = 0  except:   last_position = 0  return last_position #寫入本次日志文件的本次位置 def write_this_position(file,last_positon):  try:   data = open(file,'w')   data.write(str(last_positon))   data.write('/n' + "Don't Delete This File,It is Very important for Looking Tomcat Error Log !! /n")   data.close()  except:   print "Can't Create File !" + file   exit() #分析文件找出異常的行 def analysis_log(file):  error_list = []           #定義一個列表,用于存放錯誤信息.  try:   data = open(file,'r')  except:   exit()  last_position = get_last_position(last_position_logfile) #得到上一次文件指針在日志文件中的位置  this_postion = getsize(tomcat_log)      #得到現(xiàn)在文件的大小,相當(dāng)于得到了文件指針在末尾的位置  if this_postion < last_position:      #如果這次的位置 小于 上次的位置說明 日志文件輪換過了,那么就從頭開始   data.seek(0)  elif this_postion == last_position:      #如果這次的位置 等于 上次的位置 說明 還沒有新的日志產(chǎn)生   exit()  elif this_postion > last_position:      #如果是大于上一次的位置,就移動文件指針到上次的位置   data.seek(last_position)  for line in data:   if pattern.search(line):    error_list.append(line)  write_this_position(last_position_logfile,data.tell()) #寫入本次讀取的位置  data.close()  return ''.join(error_list)        #形成一個字符串 #調(diào)用發(fā)送郵件函數(shù)發(fā)送郵件 error_info = analysis_log(tomcat_log) if error_info:  send_mail(error_info)             
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 平乐县| 绩溪县| 新乡市| 六枝特区| 保山市| 罗城| 昌都县| 云林县| 金沙县| 阿拉善盟| 拉萨市| 黔东| 田东县| 巧家县| 枣庄市| 新源县| 新巴尔虎右旗| 舟曲县| 九江县| 虹口区| 宝山区| 仁怀市| 崇礼县| 左贡县| 保定市| 凭祥市| 安岳县| 苍南县| 浦北县| 安仁县| 环江| 腾冲县| 双桥区| 桂阳县| 建宁县| 宽城| 葫芦岛市| 蓝田县| 锦屏县| 廊坊市| 绥滨县|