今天來學(xué)一個真實的案例監(jiān)控一個網(wǎng)站的運行狀態(tài),如果網(wǎng)站因為其他原因?qū)е聼o法響應(yīng)和訪問,我們將發(fā)送電子郵件提醒管理員并重啟web服務(wù)器。
思路過程為:使用requests請求一個要監(jiān)控的web網(wǎng)址,根據(jù)返回的狀態(tài)值不是200或者出現(xiàn)異常的時候,我們發(fā)送郵件并重啟服務(wù)器。接下來看代碼部分,(該代碼腳本使用在linux服務(wù)器中運行的web服務(wù)為例):
#!/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')#定義提醒用戶發(fā)送郵件方法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 = '確保服務(wù)器已經(jīng)重新啟動完成。' msg = f'主題: {subject}\n\n{body}' smtp.sendmail(EMAIL_ADDRESS, EMAIL_RECEVIER, msg)#定義重啟服務(wù)器方法def reboot_server(): #直接重啟 linux web服務(wù)器 os.system("reboot")try: #比如這里監(jiān)控一個網(wǎng)址:奕中世界 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服務(wù)器中并并且為該腳本賦予可執(zhí)行權(quán)限:
chmod u+x py3_monitor.py我們創(chuàng)建一個定時任務(wù),每隔5分鐘執(zhí)行一次這個腳本,這里輸入crontab -e
*/5 * * * * ./path/to/py3_monitor.py至此一個簡單的自動化監(jiān)控腳本就算完成了,我們下節(jié)見。
關(guān)注公號yale記
下面的是我的公眾號二維碼圖片,歡迎關(guān)注。
掃描二維碼推送至手機訪問。
版權(quán)聲明:本文由信途科技轉(zhuǎn)載于網(wǎng)絡(luò),如有侵權(quán)聯(lián)系站長刪除。
轉(zhuǎn)載請注明出處http://macbookprostickers.com/xintu/12379.html