vlambda博客
学习文章列表

Nginx|vts模块究竟是什么东西?

上篇主要讲,稀里胡涂的顺道把vts和sts也带上了.这两个东东是啥东西呢?今天就来讲讲

vts学名:Nginx virtual host traffic status module.也就是nginx虚拟主机流量状态监控模块.会记录从nginx重启以来,所有的nginx的请求情况.

Nginx|vts模块究竟是什么东西?

如上图.可以说是网站请求分析最简单的方法了.

怎么配置呢?

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; }}

Nginx|vts模块究竟是什么东西?

那个新的问题来了:我是可以访问,那么其它人也可以随意访问了,怎么办呢?可以添加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