zoukankan      html  css  js  c++  java
  • shell习题第8题:监控nginx的502状态

    【题目要求】

    服务器上跑的是LNMP环境,近期总是有502现象。502为网站访问的状态码,200正常,502错误是nginx最为普遍的错误状态码。

    由于502只是暂时的,并且只要一重启php-fpm服务则502消失,但不重启的话,则会一直持续很长时间。

    所以有必要写一个监控脚本,监控访问日志的状态码,一旦发生502,则自动重启一下php-fpm。

    502 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应

    我们设定:

    1)access_log /data/log/access.log

    2)脚本死循环,每10s检测一次(假设每10s钟的日志条数为300左右)

    3)重启php-fpm的方法是 /etc/init.d/php-fpm restart

    【核心要点】

    用curl检测状态码是否是502或者通过分析访问日志判断状态码的比率
    重启php-fpm服务的命令

    【脚本】

    #!/bin/bash
    
    log=/data/log/access.log
    while :
    do
        502_n=`tail -n 300 $log | grep -c ' 502 '`
        if [ -z "$502_n" ]; then
            exit
        fi
    
        if [ $502_n -gt 100 ]; then
            /etc/init.d/php-fpm restart > /dev/null 2 > /tmp/php-fpm.err
            fpm_p_n=`pgrep -l php-fpm | wc -l`
            
            if [ $fpm_p_n -eq 0 ]; then
                python mail.py 123@123.com "php-fpm重启失败" "`head -1 /tmp/php-fpm.err`"
            exit
            fi
        fi
    sleep 10
    done
  • 相关阅读:
    IceMx.Mvc 我的js MVC 框架 二、视图的数据绑定
    IceMx.Mvc 我的js MVC 框架 一、html代码的分离(视图)
    Android Socket编程基础
    第七次作业
    第六次作业
    第五次作业
    第4次作业
    关于个人项目的总结,最主要是不足
    第二次作业
    微信的优缺点以及发展史
  • 原文地址:https://www.cnblogs.com/dingzp/p/10768807.html
Copyright © 2011-2022 走看看