今天来学一个真实的案例监控一个网站的运行状态,如果网站因为其他原因导致无法响应和访问,我们将发送电子邮件提醒管理员并重启web服务器。
思路过程为:使用requests请求一个要监控的web网址,根据返回的状态值不是200或者出现异常的时候,我们发送邮件并重启服务器。接下来看代码部分,(该代码脚本使用在linux服务器中运行的web服务为例):
#!/usr/bin/env pythonimport osimport smtplibimport requests#电子邮件的账号 密码EMAIL_ADDRESS = os.environ.get('EMAIL_USER')EMAIL_PASSWORD = os.environ.get('EMAIL_PASS')#获取收件人的邮箱地址EMAIL_RECEVIER = os.environ.get('EMAIL_RECEVIER')#定义提醒用户发送邮件方法def notify_user(): with smtplib.SMTP('smtp.qq.com', 25) as smtp: smtp.ehlo() smtp.starttls() smtp.ehlo() smtp.login(EMAIL_ADDRESS, EMAIL_PASSWORD) subject = '您的站点崩溃了!' body = '确保服务器已经重新启动完成。' msg = f'主题: {subject}\n\n{body}' smtp.sendmail(EMAIL_ADDRESS, EMAIL_RECEVIER, msg)#定义重启服务器方法def reboot_server(): #直接重启 linux web服务器 os.system("reboot")try: #比如这里监控一个网址:奕中世界 r = requests.get('https://xintu.liuluanyi.cn', timeout=5) if r.status_code != 200: notify_user() reboot_server() else: # opexcept Exception as e: notify_user() reboot_server()我们将该脚本另存为py3_monitor.py,放在web服务器中并并且为该脚本赋予可执行权限:
chmod u+x py3_monitor.py我们创建一个定时任务,每隔5分钟执行一次这个脚本,这里输入crontab -e
*/5 * * * * ./path/to/py3_monitor.py至此一个简单的自动化监控脚本就算完成了,我们下节见。
关注公号yale记
下面的是我的公众号二维码图片,欢迎关注。