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)         ,     [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ファイルでエラー情報を表示します.