nginx nginx-module-vts 监控模块
大纲
- nginx-module-vts 安装
- nginx-module-vts 配置
- 监控字段总结
- 配置参数总结
- vhost_traffic_status_filter_by_host 使用
- vhost_traffic_status_filter_by_set_key 使用
nginx-module-vts 安装
nginx-module-vts 可以实现对nginx 各个虚拟主机,upstream等的请求 流量监控
官网地址:https://github.com/vozlt/nginx-module-vts
下载地址:https://github.com/vozlt/nginx-module-vts/tags
本次测试使用:
- nginx 版本 openresty-1.17.8.2.tar.gz
- nginx-module-vts 版本 v0.1.17 nginx-module-vts-0.1.17.tar.gz
使用 ./nginx -V 查看安装的模块
安装nginx-module-vts
1 解压nginx-module-vts
tar -zxvf nginx-module-vts-0.1.17.tar.gz
#pwd 得到解压后的model文件位置
/ops/openresty/model/nginx-module-vts-0.1.17
2 解压openresty-1.17.8.2.tar.gz
tar -zxvf openresty-1.17.8.2.tar.gz
#使用--add-module 添加nginx-module-vts
./configure --prefix=/ops/openresty/nginx --add-module=/ops/openresty/model/nginx-module-vts-0.1.17
make && make install
安装完成后出现nginx-module-vts
配置 nginx-module-vts
使用nginx-module-vts 最小配置需要在http块中加入vhost_traffic_status_zone;
并且配置一个server 来暴露监控的页面
以下为开启vts的最小配置
http {
#开启vts模块
vhost_traffic_status_zone;
#配置一个虚拟主机暴露 /status 展示监控的数据
server {
listen 8080;
server_name localhost;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
配置完成后启动nginx 访问 IP:8080/status
其他数据格式:
- /status/format/json
访问 IP:8080/status/format/json 输出json字符串各式的监控数据
- /status/format/jsonp
访问 IP:8080/status/format/jsonp 输出json字符串各式的监控数据,注意包含jsonp所需 callback
- /status/format/html
访问 IP:8080/status 与 /status/format/html效果一样 输出html监控管理界面
- /status/format/prometheus
访问 IP:8080/status/format/prometheus 输出prometheus监控需要的数据格式
- /status/control
监控字段总结
Server main 主服务器
Host:主机名
Version:版本号
Uptime:服务器已经运行时间
Connections active:当前客户端的连接数
reading:读取客户端连接的总数
writing:写入客户端连接的总数
Requsts accepted:接收客户端的连接总数
handled:已处理客户端的连接总数
Total:请求总数
Req/s:每秒请求的数量
Shared memory:共享内存
name:配置中指定的共享内存名称
maxSize:配置中指定的共享内存的最大限制
usedSize:共享内存的当前大小
usedNode:共享内存中当前使用的节点数
Server zones 服务器区域
zone: 当前区域
Requests Total:请求总数
Req/s:每秒请求数
time:时间
Responses:状态码数量 1xx、2xx、3xx、4xx、5xx 表示响应不同状态码数量
Total:响应状态码的总数
Traffic表示流量
Sent:发送的流量
Rcvd:接收的流量
Sent/s:每秒发送的流量
Rcvd/s:每秒接收的流量
Cache表示缓存
Miss:未命中的缓存数
Bypass:避开的缓存数
Expirde:过期的缓存数
Stale:生效的缓存数
Updating:缓存更新的次数
Revalidated:重新验证的缓存书
Hit:缓存命中数
Scarce:未达缓存要求的请求次数
Total:总数
配置参数总结
nginx-module-vts 配置参数:
1 vhost_traffic_status
vhost_traffic_status <on|off> 默认值off
可配置在 http, server, location块中
作用:控制开启或关闭vts模块工作,如果配置了vhost_traffic_status_zone 则默认开启
2 vhost_traffic_status_zone
vhost_traffic_status_zone [shared:name:size] 默认为:shared:vhost_traffic_status:1m
可配置在 http 块中
作用:为共享内存区域设置参数,该共享内存区域将保留各种key的状态,配置此参数默认开启vts模块,
注意:如果使用vhost_traffic_status_filter_by_set_key配置,则需要配置大于32m内存
例如:
3 vhost_traffic_status_dump
vhost_traffic_status_dump path [period] 默认没有此配置
可配置在 http 块中
作用:保存统计数据,默认period为60s
例如:vhost_traffic_status_dump /data/tmp/vts.db 32
4 vhost_traffic_status_display 和 vhost_traffic_status_display_format
vhost_traffic_status_display和vhost_traffic_status_display_format都可以可配置在 http, server, location块中
作用:
vhost_traffic_status_display 表示开启模块监控数据展示
vhost_traffic_status_display_format 配置数据格式可以是<json|html|jsonp|prometheus>
5 vhost_traffic_status_display_jsonp
vhost_traffic_status_display_jsonp 【callback的js方法名称】
可配置在 http, server, location块中
作用:修改使用jsonp展示数据的时候那个callback js方法的名称
例如:
6 vhost_traffic_status_display_sum_key
vhost_traffic_status_display_sum_key 【sum key的名称】默认是*
可配置在 server块中
作用:
配置sum key的名称
例如默认是*
添加配置
server {
listen 8080;
server_name localhost;
#使用自定义字符串jim
vhost_traffic_status_display_sum_key jim;
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
7 vhost_traffic_status_filter
vhost_traffic_status_filter <on|off> 默认值on
可配置在 http, server, location块中
作用:控制是否开启过滤功能
8 vhost_traffic_status_filter_by_host
vhost_traffic_status_filter_by_host <on|off> 默认值off
可配置在 http, server, location块中
作用:控制是否使用请求中的 host字段作为key 进行展示
注意:是对通配符配置的虚拟主机进行分组过滤
例如server_name这样配置 使用*通配符
server {
listen 80;
server_name *.liuyijiang.com;
location / {
root html;
index index.html index.htm;
}
}
9 vhost_traffic_status_filter_by_set_key
vhost_traffic_status_filter_by_set_key 自定义key
可配置在 http, server, location块中
作用:配置自定义的key名称
例如
效果