nginx 提供了 ngx_http_stub_status_module,ngx_http_reqstat_module模块,这个模块提供了基本的监控功能
进程监控
端口监控
web 服务器 nginx 以其高性能与抗并发能力越来越多的被用户使用作为一款服务器产品
nginx 提供了ngx_http_stub_status_module,ngx_http_reqstat_module模块,这个模块提供了基本的监控功能
Accepts(接受)、Handled(已处理)、Requests(请求数)是一直在增加的计数器。
Active(活跃)、Waiting(等待)、Reading(读)、Writing(写)随着请求量而增减
名称 | 描述 | 指标类型 |
---|---|---|
Accepts(接受) | NGINX 所接受的客户端连接数 | 资源: 功能 |
Handled(已处理) | 成功的客户端连接数 | 资源: 功能 |
Dropped(已丢弃,计算得出) | 丢弃的连接数(接受 - 已处理) | 工作:错误* |
Requests(请求数) | 客户端请求数 | 工作:吞吐量 |
NGINX worker 进程接受 OS 的连接请求时 Accepts 计数器增加,而Handled 是当实际的请求得到连接时(通过建立一个新的连接或重新使用一个空闲的)。这两个计数器的值通常都是相同的,如果它们有差别则表明连接被Dropped,往往这是由于资源限制,比如GINX的worker_connections的限制。
按照固定时间间隔采样请求数据,计算出单位时间的请求量可以看到web服务器的请求情况
通过持续的 QPS 监控,可以立刻发现是否被恶意攻击或对服务的可用性进行评估
当问题发生时,通过QPS不能定位到确切问题的位置,但是可以在第一时间提醒你环境可能出问题了
通过监控固定时间间隔内的错误代码(4XX代码表示客户端错误,5XX代码表示服务器端错误),可以了解到客户端收到的结果是否是正确的错误率突然的飙升很可能是网站漏洞发出的信号
如果需要通过access log分析错误率,那么需要配置nginx的日志模块,让nginx将响应码写入访问日志
请求处理时间也可以被记录在access log中,通过分析access log,统计请求的平均响应时间,通过持续观察,可以发现上游服务器的问题
配置文件中编辑
server{
location /nginx-status {
stub_status on; #开启进程模块
}
}
Active connections: 2
server accepts handled requests
26 26 48
Reading: 0 Writing: 1 Waiting: 1
Active connections: 2 //当前活动连接数
server accepts handled requests //服务器接受处理请求
26 //总连接数connection(Tcp),tcp三次握手四次挥手
26 //成功的连接数connection(Tcp),失败的连接数=总连接数-成功连接数
48 //总共处理的请求数requests(Http)
Active状态
Reading: 0 //读取客户端Header的信息数 请求头
Writing: 1 //返回给客户端的header的信息数量 响应头
Waiting: 1 //等待的请求数 开启了keepalive
nginx 的 access log 中可以记录很多有价值的信息,通过分析 access log,可以收集到很多指标
python 编写的 linux 工具 ngxtop 就实现了对 access log 的分析功能
PV:PV(访问量): 即Page View, 即页面浏览量或点击量,用户每次刷新即被计算一次。
UV:UV(独立访客):即Unique Visitor,访问您网站的一台电脑客户端为一个访客。00:00-24:00内相同的客户端只被计算一次。
根据访问IP统计UV
awk '{print $1}' access.log |sort | uniq -c |wc -l
统计访问URL统计PV
awk '{print $7}' access.log |wc -l
查询访问最频繁的URL
awk '{print $7}' access.log |sort | uniq -c |sort -n -k 1 -r|more
查询访问最频繁的IP
awk '{print $1}' access.log |sort | uniq -c |sort -n -k 1 -r|more
查询访问最频繁的前10的IP
awk '{print $1}' access.log |sort | uniq -c |sort -n -k 1 -r|head -n 10