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
  • 相关阅读:
    struts2乱码
    修改maven的war包生成路径
    cookie的坑
    linux jps 命令
    (转)如何使VMware ip与本机ip处于同一网段
    springboot + swagger2 学习笔记
    can not find java.util.map java.lang.Double问题
    为什么不写 @RequestParam 也能拿到参数?
    乱码问题
    PostMan的使用注意事项
  • 原文地址:https://www.cnblogs.com/dingzp/p/10768807.html
Copyright © 2011-2022 走看看