最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時(shí)間:2018年07月06日 09:55:52   作者:朱培  
這篇文章主要介紹了利用python腳本監(jiān)控Tomcat服務(wù)器的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

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

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

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

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ī) 帳號(hào) 密碼 收件人 郵件主題 
#定義主機(jī) 帳號(hào) 密碼 收件人 郵件主題 
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)異常了!,請(qǐng)及時(shí)處理", 
 "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定時(shí)任務(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)行的定時(shí)任務(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ī) 帳號(hào) 密碼 收件人 郵件主題 
#定義主機(jī) 帳號(hào) 密碼 收件人 郵件主題 
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)異常了!,請(qǐng)及時(shí)處理", 
 "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' 
#匹配的錯(cuò)誤信息關(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 = []           #定義一個(gè)列表,用于存放錯(cuò)誤信息. 
 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:      #如果這次的位置 小于 上次的位置說(shuō)明 日志文件輪換過(guò)了,那么就從頭開始 
  data.seek(0) 
 elif this_postion == last_position:      #如果這次的位置 等于 上次的位置 說(shuō)明 還沒有新的日志產(chǎn)生 
  exit() 
 elif this_postion > last_position:      #如果是大于上一次的位置,就移動(dòng)文件指針到上次的位置 
  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)        #形成一個(gè)字符串 
#調(diào)用發(fā)送郵件函數(shù)發(fā)送郵件 
error_info = analysis_log(tomcat_log) 
if error_info: 
 send_mail(error_info) 

5、添加crontab定時(shí)任務(wù):

*/10 * * * * python /usr/tools/qybd/cmd/tomcat_log_error_analysis.py >> /usr/tools/qybd/cmd/crontest.py.log 2>&1

效果如下:

總結(jié)

以上所述是小編給大家介紹的python腳本監(jiān)控Tomcat服務(wù)器的方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評(píng)論

昭通市| 哈尔滨市| 鹰潭市| 都安| 泸定县| 峨眉山市| 庆云县| 恩施市| 上杭县| 铁岭县| 昆山市| 祁连县| 闸北区| 辉县市| 裕民县| 龙口市| 浏阳市| 华坪县| 绵竹市| 黔东| 连山| 昌黎县| 常熟市| 礼泉县| 荃湾区| 曲周县| 扶绥县| 华亭县| 子洲县| 山东| 天祝| 饶平县| 夏邑县| 句容市| 马山县| 天祝| 仙游县| 乌海市| 彰化市| 威远县| 伊川县|