您好,登錄后才能下訂單哦!
前言:最近我們的升級(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í)有所幫助,也希望大家多多支持億速云。
免責(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)容。