2. 監控nginx伺服器502狀態碼
相信運維過Nginx+php-fpm+MySQL網站的朋友一定遇到502問題,發生502問題的原因有很多種,而最常見的是由於php-fpm資源耗完導致。
而本案例要監控這臺伺服器就是這種情況,平時一直都很好,但若網站訪問量很高,就會有502的狀態碼出現。發生502的問題時,需要及時分析php-fpm資源耗盡的原因,所以要做一個監控指令碼,當有502狀態碼時第一時間郵件告警通知我們。
具體要求如下:
1)指令碼一分鐘執行一次;
2)監控502狀態可以通過分析網站的訪問日誌,也可以通過curl工具發起http請求來獲取狀態碼。建議通過分析訪問日誌,假如訪問日誌路徑為 /data/logs/access.log ;
3)一分鐘內出現502的次數超過50次則需要告警;
4)告警需要發郵件通知,通知郵箱為lzx@lzxlinux.com 。
說到需要郵件來告警,這就要用python寫一個郵件指令碼來發郵件。下面是python程式碼:
#!/usr/bin/python
#coding:utf-8
import smtplib
from email.mine.text import MIMEText
import sys
mail_host = 'stmp.163.com'
mail_user = 'test@163.com'
mail_pass = 'your_mail_password'
mail_postfix = '163.com'
def send_mail(to_list,subject,content):
me = "zabbix 監控告警平臺"+"<"+mail_user+"@"+mail_postfix+">"
msg = MIMEText(content,'plain','utf-8')
msg['Subject'] = subject
msg['From'] = me
msg['to'] = to_list
try:
s = smtplib:SMTP()
s.connect(mail_host)
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
if __name__ == "__main__"
send_mail(sys.argv[1], sys.argv[2], sys.argv[3])
說明:該指令碼會呼叫第三方的郵箱賬戶,需要填寫正確的mail_host,mail_user及mail_pass。假如該指令碼名字為 mail.py ,則發郵件的命令為:
python mail.py lzx@lzxlinux.com "郵件主題" "郵件內容"
參考指令碼如下:
vim /usr/local/sbin/mon_502.sh
#!/bin/bash
##該指令碼用來監控網站的502問題
t=`date -d "-1 min" +"%Y:%H:%M:[0-5][0-9]"
log="/data/logs/access.log"
#假設mail.py已經寫好,並放在/usr/local/sbin/下
mail_script="/usr/local/sbin/mail.py"
mail_user=lzx@lzxlinux.com
n=`grep $t $log |grep -c "502"`
if [ $n -gt 50 ]
then
python $mail_script $mail_user "網站有502" "1分鐘內出現了$n次"
fi
增加計劃任務:
* * * * * /bin/bash /usr/local/sbin/mon_502.sh 2>/tmp/mon_502.err
說明:需要在該cron最後面定義一個錯誤日誌輸出,如果指令碼執行過程中有報錯,可以到 /tmp/mon_502.err 檔案中檢視錯誤資訊。
相關文章
- 監控Nginx的工作狀態Nginx
- Nginx服務狀態監控Nginx
- Nginx狀態圖形化監控工具Nginx
- 怎麼監控 Linux 伺服器狀態?Linux伺服器
- 開啟nginx狀態監控,檢視web伺服器的併發連線數NginxWeb伺服器
- Shell指令碼監控MySQL主從狀態指令碼MySql
- 利用shell指令碼監控網站狀態指令碼網站
- 監控Activity的啟動等狀態--- 原始碼級原始碼
- Docker 之 執行狀態監控Docker
- MySQL MHA 執行狀態監控MySql
- nagios監控drbd同步狀態iOS
- memcached的執行狀態監控
- nagios監控例項 -- 伺服器基本狀況監控iOS伺服器
- PIGOSS BSM 如何實現伺服器硬體狀態監控?Go伺服器
- nginx監控Nginx
- 7. 監控MySQL主從狀態MySql
- Galera Cluster for MySQL監控狀態說明MySql
- nagios監控 ogg同步狀態iOS
- 利用btrace線上監控java程式狀態Java
- 用c#監控網路狀態C#
- 伺服器監控運維方案,一體化智慧觀測伺服器狀態伺服器運維
- 伺服器狀態碼伺服器
- 配置CACTI監控MySQL資料庫狀態(5)增加MySQL監控模板MySql資料庫
- 利用superlance監控supervisor執行狀態
- 巧用Zabbix自定義監控Mysql效能狀態MySql
- MySQL監控SQL狀態及命中率MySql
- 2.檢查網路狀態
- 基於websocket的celery任務狀態監控Web
- zabbix應用-監控mysql slave 主從狀態MySql
- springCloud入門學習--Hystrix狀態監控SpringGCCloud
- 使用 Prometheus 監控 eKuiper 規則執行狀態PrometheusUI
- 利用AFNetworking監控網路狀態 - iOSiOS
- MySQL執行狀態監控(pt-mysql-summary)MySql
- oracle資料庫執行狀態監控SHELLOracle資料庫
- 【DataGuard】Oracle DataGuard 日誌傳輸狀態監控Oracle
- vmstat命令——監控給定時間間隔的伺服器的狀態值伺服器
- 指令碼監控MySQL伺服器指令碼MySql伺服器
- 05 . Prometheus監控NginxPrometheusNginx