python 服务监控_python实现监控某个服务 服务崩溃即发送邮件报告
python實現監控某個服務 服務崩潰即發送郵件報告
發布時間:2020-09-21 02:28:12
來源:腳本之家
閱讀:69
作者:黑面狐
前言:最近我們的升級服務器有點不太穩定,經常崩潰掉。然后客戶連接不上,跟我們反饋才知道。所以寫這個腳本的目的就是為了比客戶提前知道升級服務的運行狀況,一旦崩潰掉,就能第一時間登錄上去,開啟服務,避免客戶投訴。
目標:Python實現監控某個服務,服務崩潰發送郵件報告。
原理:服務對應著端口,服務關閉的時候端口也會關閉。所以可以簡化為監控某個端口,端口關閉發送郵件報告
方法:需要用到簡單郵件服務器和端口探測的方法
廢話不多說直接上代碼:
#-*- 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" #設置服務器
mail_user="1124794084" #用戶名
mail_pass="密碼" #口令
mail_postfix="qq.com" #發件箱的后綴
def send_mail(to_list,sub,content): #to_list:收件人;sub:主題;content:郵件內容
me="升級服務器報告"+"" #這里的hello可以任意設置,收到信后,將按照設置顯示
msg = MIMEText(content,_subtype='html',_charset='gb2312') #創建一個實例,這里設置為html格式郵件
msg['Subject'] = sub #設置主題
msg['From'] = me
msg['To'] = ";".join(to_list)
try:
s = smtplib.SMTP()
s.connect(mail_host) #連接smtp服務器
s.login(mail_user,mail_pass) #登陸服務器
s.sendmail(me, to_list, msg.as_string()) #發送郵件
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升級服務器監測異常","error")
time.sleep(1800)
#設置一分鐘監測一次,如果發現端口9906消失則發送郵件報告,設置延遲為半小時,避免一直重復發送郵件
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。
總結
以上是生活随笔為你收集整理的python 服务监控_python实现监控某个服务 服务崩溃即发送邮件报告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何传date参数_如何使用Python
- 下一篇: python socket 发送十六进制