python實現(xiàn)監(jiān)控某個服務(wù) 服務(wù)崩潰即發(fā)送郵件報告
前言:最近我們的升級服務(wù)器有點不太穩(wěn)定,經(jīng)常崩潰掉。然后客戶連接不上,跟我們反饋才知道。所以寫這個腳本的目的就是為了比客戶提前知道升級服務(wù)的運行狀況,一旦崩潰掉,就能第一時間登錄上去,開啟服務(wù),避免客戶投訴。
目標:Python實現(xiàn)監(jiān)控某個服務(wù),服務(wù)崩潰發(fā)送郵件報告。
原理:服務(wù)對應(yīng)著端口,服務(wù)關(guān)閉的時候端口也會關(guān)閉。所以可以簡化為監(jiān)控某個端口,端口關(guān)閉發(fā)送郵件報告
方法:需要用到簡單郵件服務(wù)器和端口探測的方法
廢話不多說直接上代碼:
#-*- 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="升級服務(wù)器報告"+"<"+mail_user+"@"+mail_postfix+">" #這里的hello可以任意設(shè)置,收到信后,將按照設(shè)置顯示
msg = MIMEText(content,_subtype='html',_charset='gb2312') #創(chuàng)建一個實例,這里設(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升級服務(wù)器監(jiān)測異常","error")
time.sleep(1800)
#設(shè)置一分鐘監(jiān)測一次,如果發(fā)現(xiàn)端口9906消失則發(fā)送郵件報告,設(shè)置延遲為半小時,避免一直重復(fù)發(fā)送郵件
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Python 如何調(diào)試程序崩潰錯誤
- Python 程序報錯崩潰后如何倒回到崩潰的位置(推薦)
- jupyter notebook 使用過程中python莫名崩潰的原因及解決方式
- 解決python多線程報錯:AttributeError: Can''t pickle local object問題
- Python3下錯誤AttributeError: ‘dict’ object has no attribute’iteritems‘的分析與解決
- python錯誤:AttributeError: ''module'' object has no attribute ''setdefaultencoding''問題的解決方法
- Python進程崩潰AttributeError異常問題解決
相關(guān)文章
在Python中操作字符串之startswith()方法的使用
這篇文章主要介紹了在Python中操作字符串之startswith()方法的使用,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-05-05
Python OpenCV機器學(xué)習(xí)之圖像識別詳解
OpenCV中也提供了一些機器學(xué)習(xí)的方法,例如DNN等。本文將為大家詳細介紹一下OpenCV中利用機器學(xué)習(xí)實現(xiàn)的一些圖片識別功能:人臉識別、車牌識別等,感興趣的可以了解一下2022-01-01

