prometheus + nginx-vts-exporter监控nginx(八)

基于 prometheus 监控 nginx 可选两个 exporter,一个是通过 nginx_exporter 主要是获取 nginx-status 中的内建的指标,nginx 自身提供 status 信息,较为简单,promethues 中对应的 metrics 也较少。另外一个是可以通过 nginx-vts-exporter 监控更多的指标,但 nginx-vts-exporter 依赖在编译nginx 的时候添加 nginx-module-vts 模块来实现。vts 提供了访问虚拟主机状态的信息,包含 server,upstream 以及 cache 的当前状态,显然指标会更丰富一些。主要是介绍基于 prometheus 使用 nginx-vts-exporter 对 nginx 进行监控。

相关安装文件:

https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.1.18.tar.gz

https://github.com/hnlq715/nginx-vts-exporter/archive/refs/tags/v0.10.7.tar.gz

一、nginx-module-vts安装配置

1、安装nginx-module-vts

# 进入nginx安装目录
cd /usr/local/nginx/nginx-1.20.1/
# 下载nginx-module-vts
wget https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.1.18.tar.gz
# 解压nginx-module-vts
tar -zxvf v0.1.18.tar.gz
# 预编译
./configure --add-module=nginx-module-vts-0.1.18
# 编译(这里只make,不要make install,不然会覆盖。如果是新装nginx,可以继续make install)
make
问题1:wget下载nginx-module-vts报错Unable to establish SSL connection.
解决办法:加上跳过验证证书的参数 --no-check-certificate
wget --no-check-certificate https://github.com/vozlt/nginx-module-vts/archive/refs/tags/v0.1.18.tar.gz

2、调整启动脚本

/usr/local/nginx/sbin/
# 停止nginx
./nginx -s stop
# 备份原启动脚本
mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# 替换新的启动脚本
cp /usr/local/nginx/nginx-1.20.1/objs/nginx /usr/local/nginx/sbin/
# 启动nginx
cd /usr/local/nginx/sbin/
./nginx

3、查看插件安装成功

./nginx -V
configure arguments: 最后是否有 --add-module=/etc/nginx/modules/nginx-module-vts-0.1.18

4、配置/status

cd /usr/local/nginx/conf/
# 备份原配置文件
cp /usr/local/nginx/conf/nginx.conf /usr/local/nginx/conf/nginx.conf.bak
# 修改nginx.conf配置,增加以下内容
http {
    ...
    vhost_traffic_status_zone;  
    vhost_traffic_status_filter_by_host on;
    ...
    server {
        ...   
        location /status {
            vhost_traffic_status_display;
            vhost_traffic_status_display_format html;
        }
	}
}

配置解析:

1、打开vhost过滤:
vhost_traffic_status_filter_by_host on;
开启此功能,在Nginx配置有多个server_name的情况下,会根据不同的server_name进行流量的统计,否则默认会把流量全部计算到第一个server_name上。

2、在不想统计流量的server区域禁用vhost_traffic_status,配置示例:

server {
	...
	vhost_traffic_status off;
	...
}

假如nginx没有规范配置server_name或者无需进行监控的server上,那么建议在此vhost上禁用统计监控功能。否则会出现“127.0.0.1”,hostname等的域名监控信息。

5、重启nginx

cd /usr/local/nginx/sbin/
# 校验配置文件
./nginx -t
# 停止nginx
./nginx -s stop
# 启动nginx
./nginx

6、验证

二、nginx-vts-exporter安装配置

1、本地下载后上传到linux服务器

官网下载地址:https://github.com/hnlq715/nginx-vts-exporter/releases/download/

2、直接在linux服务器上wget方式下载

# 进入nginx目录
cd /usr/local/nginx/
# 下载
wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
# 解压
tar -zxvf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
# 移动到安装目录
mv /usr/local/nginx/nginx-vts-exporter-0.10.3.linux-amd64 /usr/local/nginx/nginx-vts-exporter
# 进入目录
cd /usr/local/nginx/nginx-vts-exporter

3、将nginx-vts-exporter配置为系统服务

# 进入systemd目录
cd /usr/lib/systemd/system
# 创建文件
vim nginx-vts-exporter.service

# 添加如下内容
[Unit]
Description=https://github.com/hnlq715/nginx-vts-exporter
After=network-online.target

[Service]
Restart=on-failure
ExecStart=/usr/local/nginx/nginx-vts-exporter/nginx-vts-exporter -nginx.scrape_uri http://39.101.198.57/status/format/json

[Install]
WantedBy=multi-user.target

4、生效系统文件

systemctl daemon-reload

5、设置开机自启

systemctl enable nginx-vts-exporter

6、启动和停止服务命令

# 查看状态
systemctl status nginx-vts-exporter
# 启动
systemctl start nginx-vts-exporter.service
# 停止
systemctl stop nginx-vts-exporter.service

7、验证

三、添加 Prometheus 监控配置

# 进入prometheus目录
/usr/local/prometheus
# 修改 prometheus.yml
vim prometheus.yml

# 添加如下内容
- job_name: 'nginx'
    scrape_interval: 30s
    static_configs:
      - targets: ['39.101.198.57:9913']
        labels:
          instance: '监控(39.101.198.57:9913)'

四、grafana展示

1、导入模板2949

2、nginx监控指标说明

指标

说明

nginx_server_requests

统计nginx各个host 各个请求的总数,精确到状态码

nginx_upstream_requests

统计各个upstream 请求总数,精确到状态码

nginx_server_connections

统计nginx几种连接状态type的连接数

nginx_server_cache

统计nginx缓存计算器,精确到每一种状态和转发type

nginx_server_bytes

统计nginx进出的字节计数可以精确到每个host,in进,out出

nginx_upstream_bytes

统计nginx各个 upstream 分组的字节总数,细分到进出

nginx_upstream_responseMsec

统计各个upstream 平均响应时长,精确到每个节点

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值