Nginx|vts模块究竟是什么东西?
上篇主要讲,稀里胡涂的顺道把vts和sts也带上了.这两个东东是啥东西呢?今天就来讲讲
vts学名:Nginx virtual host traffic status module.也就是nginx虚拟主机流量状态监控模块.会记录从nginx重启以来,所有的nginx的请求情况.
如上图.可以说是网站请求分析最简单的方法了.
怎么配置呢?
http {
#首先http全局启用此模块
vhost_traffic_status_zone;
...
server {
...
#然后找个虚拟主机弄个路径,方便查看
location /status {
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
}
nginx reload一下,正常情况下访问,你的server所在的虚拟主机应该可以看到之前的截图了.
不过会有个问题,你当前访问的路径每秒钟刷新一次,你看到的Total因为你的页面自动刷新在不停的+1.怎么解决呢?可以设置指定的路径或主机vhost_traffic_status off.
server {
...
#然后找个虚拟主机弄个路径,方便查看
location /status {
vhost_traffic_status off;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
那个新的问题来了:我是可以访问,那么其它人也可以随意访问了,怎么办呢?可以添加basic_auth认证或cas认证或者最简单的限制指定的IP可以访问.
server {
...
#然后找个虚拟主机弄个路径,方便查看
location /status {
allow 111.197.252.173;
deny all;
vhost_traffic_status off;
vhost_traffic_status_display;
vhost_traffic_status_display_format html;
}
}
这个时候111.197.252.173可以正常访问,其它ip,只能403 Forbidden了
简单的演示到这里基本就结束了,但是有了数据不采集,不符合现代化运维管理精神啊.接下来简单说说怎样通过promethous采集.
用到的采集端:nginx-vts-exporter
直接docker运行了
docker run -dt \
--name nginx-vts-exporter \
--restart=always \
--env NGINX_STATUS="http://localhost/status/format/json" \
-p 9913:9913 \
sophos/nginx-vts-exporter
注意:NGINX_STATUS变量的配置,如果启用了ip白名单访问,记得允许127.0.0.1
Promethous配置
job_name: nginx-sts
scrape_interval: 5s
scrape_timeout: 5s
metrics_path: /metrics
static_configs:
targets:
192.168.1.18:9913
labels:
group: blog
instance: blog-01
Granfa直接导入 2949就可以了
https://grafana.com/grafana/dashboards/2949
that's all