2.モニタnginxサーバ502ステータスコード
Nginx+php-fpm+MySQLのウェブサイトを運営したことがあると信じている友达は必ず502の問題に直面して、502の問題が発生する原因はいろいろありますが、最もよく見られるのはphp-fpmの資源が消耗したためです.
このケースでは、このサーバを監視するのがこのような状況であり、普段はよく行われていますが、サイトへのアクセスが高いと502のステータスコードが表示されます.502の問題が発生した場合、php-fpmリソースが枯渇した原因をタイムリーに分析する必要があるので、502ステータスコードがある場合、最初にメールで警告する監視スクリプトを作成します.
具体的な要求は以下の通りである.
警告するメールが必要といえばpythonでメールスクリプトを書いてメールを送ります.次はpythonコードです.
説明:このスクリプトはサードパーティのメールボックスアカウントを呼び出し、正しいmail_を記入する必要があります.host,mail_userおよびmail_pass.スクリプトの名前がmailの場合.pyの場合、メールを送信するコマンドは次のとおりです.
参照スクリプトは次のとおりです.
計画タスクの追加:
説明:cronの一番後ろにエラーログ出力を定義する必要があります.スクリプトの実行中にエラーが報告された場合は、/tmp/mon_502.errファイルでエラー情報を表示します.
このケースでは、このサーバを監視するのがこのような状況であり、普段はよく行われていますが、サイトへのアクセスが高いと502のステータスコードが表示されます.502の問題が発生した場合、php-fpmリソースが枯渇した原因をタイムリーに分析する必要があるので、502ステータスコードがある場合、最初にメールで警告する監視スクリプトを作成します.
具体的な要求は以下の通りである.
1) ;
2) 502 , curl http 。 , /data/logs/access.log ;
3) 502 50 ;
4) , [email protected] 。
警告するメールが必要といえば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 = '[email protected]'
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 [email protected] " " " "
参照スクリプトは次のとおりです.
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=[email protected]
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ファイルでエラー情報を表示します.