溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

python實(shí)現(xiàn)監(jiān)控某個(gè)服務(wù) 服務(wù)崩潰即發(fā)送郵件報(bào)告

發(fā)布時(shí)間:2020-09-21 02:28:12 來(lái)源:腳本之家 閱讀:161 作者:黑面狐 欄目:開(kāi)發(fā)技術(shù)

前言:最近我們的升級(jí)服務(wù)器有點(diǎn)不太穩(wěn)定,經(jīng)常崩潰掉。然后客戶連接不上,跟我們反饋才知道。所以寫(xiě)這個(gè)腳本的目的就是為了比客戶提前知道升級(jí)服務(wù)的運(yùn)行狀況,一旦崩潰掉,就能第一時(shí)間登錄上去,開(kāi)啟服務(wù),避免客戶投訴。

目標(biāo):Python實(shí)現(xiàn)監(jiān)控某個(gè)服務(wù),服務(wù)崩潰發(fā)送郵件報(bào)告。

原理:服務(wù)對(duì)應(yīng)著端口,服務(wù)關(guān)閉的時(shí)候端口也會(huì)關(guān)閉。所以可以簡(jiǎn)化為監(jiān)控某個(gè)端口,端口關(guān)閉發(fā)送郵件報(bào)告

方法:需要用到簡(jiǎn)單郵件服務(wù)器和端口探測(cè)的方法

廢話不多說(shuō)直接上代碼:

#-*- encoding:utf-8 -*- 
#!/usr/bin/env python 
# name IsOpen.py 
import os 
import socket 
import time 
import smtplib  
from email.mime.text import MIMEText 
 
mailto_list=["872766492@qq.com"]  
mail_host="smtp.qq.com" #設(shè)置服務(wù)器 
mail_user="1124794084"  #用戶名 
mail_pass="密碼"  #口令  
mail_postfix="qq.com" #發(fā)件箱的后綴 
  
def send_mail(to_list,sub,content): #to_list:收件人;sub:主題;content:郵件內(nèi)容 
  me="升級(jí)服務(wù)器報(bào)告"+"<"+mail_user+"@"+mail_postfix+">"  #這里的hello可以任意設(shè)置,收到信后,將按照設(shè)置顯示 
  msg = MIMEText(content,_subtype='html',_charset='gb2312')  #創(chuàng)建一個(gè)實(shí)例,這里設(shè)置為html格式郵件 
  msg['Subject'] = sub  #設(shè)置主題 
  msg['From'] = me  
  msg['To'] = ";".join(to_list)  
  try:  
    s = smtplib.SMTP()  
    s.connect(mail_host) #連接smtp服務(wù)器 
    s.login(mail_user,mail_pass) #登陸服務(wù)器 
    s.sendmail(me, to_list, msg.as_string()) #發(fā)送郵件 
    s.close()  
    return True  
  except Exception, e:  
    print str(e)  
    return False 
 
 
def IsOpen(ip,port,flag): 
  s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
  try: 
    s.connect((ip,int(port))) 
    s.shutdown(2) 
    print '%d is open' % port 
    return True 
  except: 
    print '%d is down' % port  
    return False 
   
if __name__ == '__main__': 
  while(1>0): 
    flag=1 
    IsOpen('127.0.0.1',9906) 
    time.sleep(60) 
    flag=IsOpen('127.0.0.1',9906) 
    print flag 
    if flag==False: 
      send_mail(mailto_list,"XX升級(jí)服務(wù)器監(jiān)測(cè)異常","error") 
      time.sleep(1800) 
 
#設(shè)置一分鐘監(jiān)測(cè)一次,如果發(fā)現(xiàn)端口9906消失則發(fā)送郵件報(bào)告,設(shè)置延遲為半小時(shí),避免一直重復(fù)發(fā)送郵件 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持億速云。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI