nginx和php-fpm一样内建了一个状态页,对于想了解nginx的状态以及监控nginx非常有帮助。为了后续的监控,我们需要先了解nginx状态页是怎么回事。
利用nginx-status配置可以用网页的形式查看nginx服务器的连接数、请求数等情况。,下面来介绍下如何配置nginx-status页面

  1. 创建perl脚本pwd.pl,作为nginx basic auth模块的密码生成器,代码如下
#!/usr/bin/perl
use strict;
my $pw=$ARGV[0];
print crypt($pw,$pw)."\n";
  1. 启用nginx status配置

打开nginx.conf配置文件,在server块中加入以下代码即可


location /ngx_status{
    stub_status on;
    access_log off;
    #allow 127.0.0.1;
    #deny all;
    auth_basic              "NginxStatus";
    auth_basic_user_file    /lnmp/nginx/conf/htpasswd;
}
  1. 设置pwd.pl的可执行权限并执行./pwd.pl,将显示出来的密码复制。
  2. 创建或打开 /lnmp/nginx/conf/htpasswd文件,按用户名:加密后的密码的格式设置。
    5.kill -HUP nginx主进程号
# service nginx restart

6.用浏览器打开http://ip/nginx-status,输入设置的用户名密码即可看到服务器连接状态,如下所示:

Active connections: 对后端发起的活动连接数.
Server accepts handled requests: Nginx总共处理了77个连接,成功创建77次握手(证明中间没有失败的),总共处理了239个请求.
Reading: Nginx 读取到客户端的Header信息数.
Writing: Nginx 返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是Nginx已经处理完成,正在等候下一次请求指令的驻留连接。

# curl http://127.0.0.1/ngx_status
Active connections: 11921
server accepts handled requests
 11989 11989 11991
Reading: 0 Writing: 7 Waiting: 42
  1. nginx status详解

active connections – 活跃的连接数量
server accepts handled requests — 总共处理了11989个连接 , 成功创建11989次握手, 总共处理了11991个请求
reading — 读取客户端的连接数.
writing — 响应数据到客户端的数量
waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

  1. 可以以此用shell脚本算出平均每秒的请求数
#!/bin/bash
QINGQIU1=`curl -s  http://ip/nginx-status | awk '/server accepts handled requests/ {getline a;split(a,s); print s[length(s)]}'`
sleep 5
QINGQIU2=`curl -s  http://ip/nginx-status | awk '/server accepts handled requests/ {getline a;split(a,s); print s[length(s)]}'`
if [ $QINGQIU2 -gt 0 ]
then
QINGQIU=`expr $QINGQIU2 - $QINGQIU1`
PER=`expr $QINGQIU / 5`
echo "The nginx request is ${PER} per second"
fi
作者:Jeebiz  创建时间:2023-01-24 21:42
最后编辑:Jeebiz  更新时间:2024-01-25 09:10