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 檔案中檢視錯誤資訊。
相關文章
- 怎麼監控 Linux 伺服器狀態?Linux伺服器
- 開啟nginx狀態監控,檢視web伺服器的併發連線數NginxWeb伺服器
- Shell指令碼監控MySQL主從狀態指令碼MySql
- PIGOSS BSM 如何實現伺服器硬體狀態監控?Go伺服器
- MySQL MHA 執行狀態監控MySql
- Docker 之 執行狀態監控Docker
- nginx監控Nginx
- 利用superlance監控supervisor執行狀態
- 7. 監控MySQL主從狀態MySql
- 伺服器監控運維方案,一體化智慧觀測伺服器狀態伺服器運維
- 伺服器狀態碼伺服器
- 巧用Zabbix自定義監控Mysql效能狀態MySql
- springCloud入門學習--Hystrix狀態監控SpringGCCloud
- 使用 Prometheus 監控 eKuiper 規則執行狀態PrometheusUI
- zabbix應用-監控mysql slave 主從狀態MySql
- 基於websocket的celery任務狀態監控Web
- 05 . Prometheus監控NginxPrometheusNginx
- Docker Nginx 502 Bad getwayDockerNginx
- WGLCOUD 使用手冊 - 監控攝像頭的狀態
- 使用Nagios打造專業的業務狀態監控iOS
- prometheus+grafana 監控nginxPrometheusGrafanaNginx
- Zabbix實戰--監控NginxNginx
- metricbeat 監控 nginx 情況Nginx
- 在Kubernetes中監控NginxNginx
- 【flask】使用prometheus_client監控服務相關狀態FlaskPrometheusclient
- iStat Menus:Mac系統狀態監控的終極利器Mac
- git實戰-linux定時監控github更新狀態(二)LinuxGithub
- 判斷Nginx存活狀態Nginx
- 案例五:shell指令碼實現定時監控http服務的執行狀態指令碼HTTP
- 手把手教你搭建高逼格監控平臺,第四彈,監控主機存活狀態
- NiosII+GPS/GSM實現汽車狀態監控系統iOS
- 專案實戰:zabbix監控MySQL狀態、服務資訊MySql
- jProfiler遠端連線Linux監控jvm、tomcat執行狀態LinuxJVMTomcat
- 動態監控程式
- day64:nginx模組之限制連線&狀態監控&Location/用nginx+php跑專案/擴充套件應用節點NginxPHP套件
- 解Bug之路-Nginx 502 Bad GatewayNginxGateway
- nginx 502 和 504 超時演示Nginx
- ELK監控nginx日誌總結Nginx