暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

平台新增nginx状态码监控

IT那活儿 2023-07-05
443
点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

Nginx状态码监控
Nginx是一款高性能的Web服务器,它采用C语言编写,能够快速处理静态和动态内容。Nginx服务器在处理HTTP请求时会返回一组状态码,这些状态码可以帮助我们了解请求的处理结果及可能存在的问题,以便快速排除故障并优化服务器性能

Nginx状态码监控对于确保服务器及时响应客户端请求,保障用户体验水平,提供良好的服务质量是非常有必要的。通过对Nginx状态码进行监控,我们可以实时了解服务的健康状况,快速发现问题并对其进行解决。


常见状态码
  • 200 OK(请求成功):表示请求成功,并且服务器已成功返回页面或资源。例如,当你在浏览器中访问某个网站时,如果你看到了网页内容,那么你收到的状态码就是200 OK;
  • 201 Created(已创建):表示请求已经成功,并且服务器已经创建了一个新的资源。例如,当你通过网页表单提交数据时,如果服务器成功地将其存储到数据库中,那么你可能会收到此类状态码;
  • 204 No Content(无内容):表示请求成功,但没有内容返回。例如,当你发送一个删除请求时,服务器成功地删除了该资源,并返回204状态码,但不返回任何内容;
  • 301 Moved Permanently(永久重定向):表示请求成功,并且请求的资源被永久性地移动到了一个新的地址。例如,当你通过浏览器访问一个网站时,如果该网站被重定向到了另一个网站,则你可能会收到301状态码,并被自动重定向到新的网站;
  • 302 Found(临时重定向):表示请求成功,并且请求的资源被临时性地移动到了一个新的地址。例如,当你通过浏览器请求一个页面时,如果该页面被临时移动到另一个位置,则你可能会收到302状态码,并被自动重定向到新的地址;
  • 304 Not Modified(未修改):表示请求资源未被修改,通常在使用缓存时返回,表示使用缓存数据而未向服务器发起新请求;
  • 400 Bad Request(请求错误):表示请求错误,通常表示请求中有语法错误或请求方法不被服务器支持,例如,请求的方法不是GET或POST;
  • 401 Unauthorized(未授权):表示请求失败,表示该请求需要用户认证,例如,尝试访问需要登录的页面时,如果未满足登录要求,可能会收到此类状态码;
  • 403 Forbidden(禁止访问):表示服务器拒绝提供请求的资源,因为客户端没有访问该资源的权限;
  • 404 Not Found(资源未找到):表示服务器无法找到请求的资源。如果你在浏览器中访问某个不存在的页面或资源,你就会收到404错误;
  • 405 Method Not Allowed(方法不允许):表示服务器不支持请求中使用的HTTP方法。例如,使用POST方法访问不支持POST方法的URL时,可能会收到此类状态码;
  • 408 Request Timeout(请求超时):表示服务器在等待客户端发送请求时,超时了。例如,在客户端长时间没有响应时,可能会出现此类状态码;
  • 499客户端主动断开连接:表示客户端在向服务器发送请求时中断了连接。换句话说,如果客户端在向Nginx服务器发送请求的过程中,突然中断了连接(不是由于Nginx服务器终止连接),此时可能会出现此类状态码;
  • 500 Internal Server Error(服务器内部错误):表示服务器在处理请求时,遇到了错误。例如,在服务器上的服务宕机或出现配置问题时,可能会出现此类状态码;
  • 502 Bad Gateway(网关错误):表示Nginx收到了无效的响应,通常发生在代理服务器和Web服务器之间的通信中;
  • 503 Service Unavailable(服务不可用):表示服务器暂时无法处理请求,并且该状态可能是临时的。例如,可能是由于服务器出现故障、过载或维护等原因导致;
  • 504 Gateway Timeout(网关超时):表示Nginx服务器在代理请求时,未能及时收到来自上游服务器的响应。

平台新增nginx状态码监控

1. 日志切割—nginx服务器

平台需要从凌晨0点开始每隔五分钟统计一次nginx状态码数量,Nginx日志切割可以确保日志文件的可读性和日志查询的效率。
1)定时任务如下
0 0 * * * /data/gzopen/check/nginx_log_rotate.sh > /dev/null 2>&1
2)nginx_log_rotate.sh脚本内容如下
#!/bin/bash

#定义Nginx日志文件目录和日志文件名
log_dir='/data/gzopen/nginx/logs'
log_name='access.log'

#获取昨天日期,用于命名归档文件夹和新的日志文件名
yesterday=$(date -d "yesterday" +%Y-%m-%d)

#将Nginx访问日志复制到新的日志文件中,并将原始文件重命名为归档文件
if [ -f "$log_dir/$log_name" ]; then
    mkdir -p $log_dir/archive
    cp $log_dir/$log_name $log_dir/archive/$log_name.$yesterday
    cat dev/null > $log_dir/$log_name
fi

#删除超过15天的历史日志文件
find $log_dir/archive -type f -name "$log_name.*" -mtime +15 -delete

2. 新增监控脚本—监控平台

监控中心--配置管理--监控脚本--新增脚本如下:

#!/bin/sh

LogPath=$1  #nginx_log
action=$2   #get_code_info

get_code_info(){
    get_200_counts=`grep -c " 200 " $LogPath `
    get_400_counts=`grep -c " 400 " $LogPath`
    get_401_counts=`grep -c " 401 " $LogPath`
    get_403_counts=`grep -c " 403 " $LogPath`
    get_404_counts=`grep -c " 404 " $LogPath`
    get_499_counts=`grep -c " 499 " $LogPath`
    get_500_counts=`grep -c " 500 " $LogPath`
    get_502_counts=`grep -c " 502 " $LogPath`
    get_503_counts=`grep -c " 503 " $LogPath`
    get_504_counts=`grep -c " 504 " $LogPath`

    echo "{
        \"get_200_counts\" : \"${get_200_counts}\",
        \"get_400_counts\" : \"${get_400_counts}\",
        \"get_401_counts\" : \"${get_401_counts}\",
        \"get_403_counts\" : \"${get_403_counts}\",
        \"get_404_counts\" : \"${get_404_counts}\",
        \"get_499_counts\" : \"${get_499_counts}\",
        \"get_500_counts\" : \"${get_500_counts}\",
        \"get_502_counts\" : \"${get_502_counts}\",
        \"get_503_counts\" : \"${get_503_counts}\",
        \"get_504_counts\" : \"${get_504_counts}\"
     }"

}
if [ $# -ne 2 ];then
    echo "参数错误,仅支持2个入参"
    exit 0
else
    case ${action} in
        'get_code_info')
            get_code_info
            ;;

        *)
            echo "Usag: $0 nginx_status_logpath get_code_info"
            ;;
    esac
fi

3. 监控模板增加配置项—监控平台

监控中心--配置管理--监控模板配置--找到Nginx_SncAgent_常规监控模板--点开监控项--新增

先增加获取nginx状态码信息监控项,再做具体监控项配置,因为nginx具体状态码监控项的值是调用获取nginx状态码信息的内容
需注意的是状态哪儿不要开启,因为修改模板会对全部已监控的nginx生效,如没有对nginx日志做切割,很有可能会消耗掉nginx服务器大量资源。
1)获取nginx状态码信息配置如下
2)其他具体状态码控项配置如下

4. 成果展示

图一:
图二:

END


本文作者:事业二部(上海新炬中北团队)

本文来源:“IT那活儿”公众号

文章转载自IT那活儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论