AIOps 一场颠覆传统运维的盛筵
630
2022-08-31
如何监控 Nginx?(如何监控电脑)
监控 Nginx 的参数
Nginx 提供哪些监控参数
下表是 Nginx 提供的监控参数及其简单释义。
参数名称 | 参数描述 |
---|---|
Active connections | 当前活跃的用户连接(包含Waiting状态) |
accepts | 接收到的用户连接总数 |
handled | Nginx处理的用户连接总数 |
requests | 用户请求总数 |
Reading | 当前连接中Nginx读取请求首部的个数 |
Writing | 当前连接中Nginx写返回给用户的个数 |
Waiting | 当前没有请求的活跃用户连接数 |
通过下面的图,可以清晰的看到参数的具体意义和作用。
当用户请求连接Nginx服务器时,accepts计数器会加一。且当服务器处理该连接请求时,handled计数器同样会加一。一般而言,两者的值是相等的,除非达到了某些资源极限(如worker_connection的限制)。
用户连接请求被处理,就会进入 active 状态。如果该连接没有其他 request,则进入 waiting 的子状态;如果有 request,nginx 会读取 request 的 header,计数器 request 加一,进入 reading 的子状态。 reading 状态持续时间非常短,header 被读取后就会进入 writing 状态。事实上,直到服务器将响应结果返回给用户之前,该连接会一直保持 writing 状态。所以说,writing 状态一般会被长时间占用。
Nginx提供哪些监控参数
下表是Nginx Plus提供的主要监控参数、说明以及和Nginx的差异。
参数名称 | 参数描述 | 与Nginx差异 |
---|---|---|
Active | 当前活跃的用户连接(不包含 Idel 状态) | 等同 Active connections |
Accepted | 接收到的用户连接总数 | 等同 accepts |
Dropped | Nginx 丢弃的用户连接总数 | accepts - handled |
Idle | 当前没有请求的活跃用户连接数 | 等同 Waiting |
Total | 用户请求总数 | 等同 requests |
Current(Requests) | 当前有请求的活跃用户连接数(等同 Active) | Reading + Writing |
Current(Connections) | 当前在线用户数(Active + Idle) | Reading + Writing + Waiting |
主要参数和开源的Nginx相比较,区别不大。主要就是换了名字,以及通过加减法的参数整合。同样,通过下面的图也能看清这些参数的作用。
怎么利用这些参数
开源的 Nginx 提供的原始参数中,实时性的会比较有用,如 Active connections、Reading、Writing 以及 Waiting。这些数据能够反映当前 Nginx 的负载情况,方便在服务器出现问题时及时发现问题。而另一些数据由于不是状态量,Nginx 无法计算当前的量值而改做其统计数,如 accepts、handled 和 requests。
对于维护网站人员,accepts、handled 和 requests 的统计值用处是不大的,值得参考的是短时间内这三者数值的增量。这个短时间可以是一秒,如 acceptspersecond、handledpersecond 和 requestspersecond。一个简单的做法就是每秒都去读取这些参数,返回一个和上一秒的差值就行。当然,handledpersecond 替换成 droppedpersecond=acceptspersecond-handledpersecond 就更完美了。
以上步骤搞定后,还有需要一个配置 URL 来开启 Nginx 状态页。打开你的网站对应 Nginx 的配置文件,添加以下修改:
server{ listen your-website-port; location /basic_status { stub_status; }}
如果 Nginx 版本低于1.7.5,则需要语法指令添加参数(任意参数):
server{ listen your-website-port; location /basic_status { stub_status on; }}
修改完成后,需要重新载入 Nginx,键入命令 nginx -s reload,然后就能在状态页(127.0.0.1:your-website-port/basic_status)看见你的监控参数了。大概是这个样子:
Active connections: 1 server accepts handled requests 38 38 38Reading: 0 Writing: 1 Waiting: 0
Nginx Plus 和 Nginx 在前面的设置差不多。配置状态页时,需要在配置文件中加上 server 模块:
server { listen your-website-port; location /status { status; } location = /status.html { }}
重载一下Nginx,你会在状态页(127.0.0.1:your-website-port/status.html)看到大概这个样子:
发表评论
暂时没有评论,来抢沙发吧~