今天來學(xué)一個(gè)真實(shí)的案例監(jiān)控一個(gè)網(wǎng)站的運(yùn)行狀態(tài),如果網(wǎng)站因?yàn)槠渌驅(qū)е聼o法響應(yīng)和訪問,我們將發(fā)送電子郵件提醒管理員并重啟web服務(wù)器。
思路過程為:使用requests請(qǐng)求一個(gè)要監(jiān)控的web網(wǎng)址,根據(jù)返回的狀態(tài)值不是200或者出現(xiàn)異常的時(shí)候,我們發(fā)送郵件并重啟服務(wù)器。接下來看代碼部分,(該代碼腳本使用在linux服務(wù)器中運(yùn)行的web服務(wù)為例):
#!/usr/bin/env pythonimport osimport smtplibimport requests#電子郵件的賬號(hào) 密碼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 = '您的站點(diǎn)崩潰了!' body = '確保服務(wù)器已經(jīng)重新啟動(dò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)控一個(gè)網(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)建一個(gè)定時(shí)任務(wù),每隔5分鐘執(zhí)行一次這個(gè)腳本,這里輸入crontab -e
*/5 * * * * ./path/to/py3_monitor.py至此一個(gè)簡(jiǎn)單的自動(dòng)化監(jiān)控腳本就算完成了,我們下節(jié)見。
關(guān)注公號(hào)yale記
下面的是我的公眾號(hào)二維碼圖片,歡迎關(guān)注。
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由信途科技轉(zhuǎn)載于網(wǎng)絡(luò),如有侵權(quán)聯(lián)系站長(zhǎng)刪除。
轉(zhuǎn)載請(qǐng)注明出處http://www.quickersubmitter.com/xintu/12379.html