date: 2021-05-12title: Prometheus监控nginx #标题
tags: 监控 #标签
categories: 监控 # 分类
记录下Prometheus如何监控nginx。nginx需要添加第三方模块nginx-module-vts,本文是基于源码编译的方式安装的,如果需要在容器中部署,那么搜索nginx-module-vts,会找到如何在容器中部署的。
nginx添加模块
参考:nginx-module-vts
nginx的安装这里不做展示,自行安装即可,如果你的nginx已经装上了,那么请添加第三方模块后重新编译,过程大概如下:
$ git clone https://github.com/vozlt/nginx-module-vts.git$ vts=$(readlink -f nginx-module-vts)$ ./configure --prefix=/apps/usr/nginx-1.18.0 --with-http_ssl_module \--with-http_addition_module --with-pcre \--with-http_stub_status_module --with-debug \--add-module=${vts} --with-stream --with-http_realip_module# 注,如果你是在现有nginx上添加此模块,请自行进行热升级,不要执行make install$ make && make install
配置vts模块
$ cat nginx.confhttp {vhost_traffic_status_zone;vhost_traffic_status_filter_by_host on; #开启此功能,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个上。...server {...location /status {vhost_traffic_status_display;vhost_traffic_status_display_format html;access_log off;}}}
添加 /status 状态页后,请自行重启nginx,使其生效。
访问/status状态页,看到如下页面,即表示成功。

访问IP/status/format/prometheus,可以看到Prometheus格式的监控数据,如下:

接入Prometheus
接入prometheus有两种方式:
- 直接用nginx-vts-exporter数据源;
- nginx-vts-exporter 抓取vts数据传向prometheus。
nginx-vts-exporter数据源
# 修改Prometheus配置文件,增加nginx的jobscrape_configs: # 在此字段中添加如下内容- job_name: nginxmetrics_path: /status/format/prometheusstatic_configs:- targets:- 192.168.20.2:80 # 这里的IP是你nginx访问的IP# 上述配置完成后,metrics_path为:http://192.168.20.2:80/status/format/prometheus
然后可以在Prometheus的target列表中发现新增的nginx即表示成功:

nginx-vts-exporter 抓取vts数据传向prometheus
nginx-vts-exporter方式可参考Github。
猜测是被墙的原因,无法构建二进制,可以下载较老的版本,较老的版本提供了二进制文件。
wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gztar zxf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz -C /opt/ln -sf /opt/nginx-vts-exporter-0.10.3.linux-amd64 /opt/nginx-vts-exporter-0.10.3cd /opt/nginx-vts-exporter-0.10.3nohup ./nginx-vts-exporter -nginx.scrape_uri http://192.168.20.2/status/format/json &# 可运行./nginx-vts-exporter 查看命令支持的选项$ ss -lnput | grep 9913 # 确定端口在监听tcp LISTEN 0 128 [::]:9913 [::]:* users:(("nginx-vts-expor",pid=104751,fd=3))# 自行修改Prometheus配置文件如下,然后重载Prometheus使其生效scrape_configs:- job_name: nginxmetrics_path: /metrics # 此处可省略不写,默认就是/metricsstatic_configs:- targets:- 192.168.20.2:9913 # 此处是nginx-vts-exporter的监听地址及端口

