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
  • 相关阅读:
    物体也能正常移动
    同时按住两个键
    连续子数组的最大和Java实现
    Entity Framework基础01
    MVC知识进阶01
    面向对象基础进阶03
    面向对象基础进阶02
    面向对象基础进阶01
    little skill---ping
    SqlServer------范式小结
  • 原文地址:https://www.cnblogs.com/dingzp/p/10768807.html
Copyright © 2011-2022 走看看