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服务器在代理请求时,未能及时收到来自上游服务器的响应。
1. 日志切割—nginx服务器
0 0 * * * /data/gzopen/check/nginx_log_rotate.sh > /dev/null 2>&1
#!/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_常规监控模板--点开监控项--新增



4. 成果展示



本文作者:事业二部(上海新炬中北团队)
本文来源:“IT那活儿”公众号

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




