监控访问日志的状态码

题目要求

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

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

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

我们设定:

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 xxx@xx.com "php-fpm重启失败" "`head -1 /tmp/php-fpm.err`"
        exit
    fi
fi
sleep 10
done
复制代码

 

posted @   星火撩原  阅读(66)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-02-19 Linux 内存分析工具—free命令
2020-02-19 kubeadm安装kubenetes1.15.4集群
点击右上角即可分享
微信分享提示