prometheus监控nginx的两种方式

本文介绍了两种Nginx监控方法:一是利用tub_status模块,通过nginx-prometheus-exporter收集指标;二是使用vts模块,配合nginx-vts-exporter实现监控。详细步骤包括编译安装、配置nginx、启动监控服务,并在prometheus和grafana中设置监控模板,以全面掌握Nginx运行状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Nginx监控搭建介绍说明

文章介绍两种不同的Nginx监控方法,第一种是nginx自带的tub_status模块进行监控,第二种是用vts监控工具进行监控。都是基于prometheus、grafana结合第三方模块或监控工具搭建,监控Nginx中间件的使用情况 。

方法一、tub_status模块监控

  1. 下载 https://github.com/nginxinc/nginx-prometheus-exporter/releases
  2. 解压 tar -zxvf
  3. 开启nginx_stub_status模块
    开源nginx提供了一个简单页面用于展示状态数据,该页面由tub_status模块提供,如果已在本地服务安装nginx,进入nginx/sbin目录下执行
./nginx -V 2>&1 | grep -o with-http_stub_status_module
  1. 如果在终端输出with-http_stub_status_module,说明nginx已启用tub_status模块;

在这里插入图片描述
yum安装的是二进制文件,意思是已经编译好的nginx,它只有配置文件和二进制文件,没有源代码,所以你想加第三方模块,只能去nginx的官方网站:http://nginx.org 下载源代码,使用**–with-http_stub_status_module**参数从源码重新编译安装;

./configure --prefix=/DATA/soft/nginx/ --with-http_stub_status_module  --add-module=nginx-module-vts
make
sudo make install
  1. 确认stub_status模块启动之后,修改nginx的配置文件指定status页面的URL;
    server {
        listen   80;  
        #端口可以自己重新起一个,配置文件要在外层nginx.conf中添加
        location /nginx_status {
            stub_status on;
            access_log off;
            allow 127.0.0.1;
            deny all;
        }
}
  1. 执行命令启动nginx-prometheus -exporter
nohup ./nginx-prometheus-exporter -nginx.scrape-uri http://127.0.0.1:80/nginx_status &

启动成功如图所示启动成功如图所示
7. prometheus.yml文件添加被监控的机器节点;

- job_name: 'nginx_status_module' # 采集nginx的指标
  metrics_path: '/metrics' # 拉取指标的接口路径
  scrape_interval: 10s # 采集指标的间隔周期
  static_configs:
  - targets: ['127.0.0.1:9113'] # nginx-prometheus-exporter服务的ip和端口
  1. 重新启动prometheus后,导入grafan模板;
    模板链接:https://grafana.com/grafana/dashboards/12708

在这里插入图片描述

方法二、vts工具监控

  1. vts模块下载,链接:https://github.com/vozlt/nginx-module-vts
  2. tar -zxvf 解压nginx-module-vts,监控模块放至nginx目录下

在这里插入图片描述
3. nginx源码文件重新编译安装

./configure --prefix=/DATA/soft/nginx/ --with-http_stub_status_module  --add-module=nginx-module-vts
make
sudo make install
  1. 修改nginx配置
#nginx配置server中添加:
location /status {
        vhost_traffic_status_display;
        vhost_traffic_status_display_format html;
        }
    }

#http中添加:
vhost_traffic_status_zone;
vhost_traffic_status_filter_by_host on;
  1. 添加系统变量,启动nginx
vi /usr/lib/systemd/system/nginx.service 
[Unit]
Description=nginx
After=network.target

[Service]
Type=forking
ExecStart=/DATA/soft/nginx/sbin/nginx
ExecReload=DATA/soft/nginx/sbin/nginx -s reload
ExecStop=DATA/soft/nginx/sbin/nginx -s quit
PrivateTmp=true

[Install]
WantedBy=multi-user.target
# 完成启动:
systemctl enable nginx.service
systemctl start nginx.service
systemctl status nginx.service

启动nginx后访问http://locahost/status
在这里插入图片描述
6. 安装启动nginx-vts-exporter
下载链接:https://github.com/hnlq715/nginx-vts-exporter
tar -zxvf解压
chmod +x /usr/local/nginx_exporter/bin/nginx-vts-exporter -R #整个路径添加权限
7. nginx-vts-exporter设置系统变量

vim /usr/lib/systemd/system/nginx_exporter.service

[Unit]
Description=nginx_vts_exporter
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/nginx_exporter/bin/nginx-vts-exporter  -nginx.scrape_uri http://192.168.62.75/status/format/json   #ip替换成需要监控的ip
Restart=on-failure

[Install]
WantedBy=multi-user.target

启动nginx_exporter

systemctl enable nginx_exporter.service
systemctl status nginx_exporter.service
systemctl start nginx_exporter.service

在这里插入图片描述
8. 修改prometheus配置文件并重启
netstat -anlp | grep nginx-vts #查看nginx_vts_exporter启动的端口

- job_name: 'nginx'
  static_configs:
  - targets: ['127.0.0.1:9913']  #9913为工具启动的端口
    labels:
      instance: nginx
  1. grafana导入nginx-vts-exporter监控模板
    模板链接:https://grafana.com/grafana/dashboards/2949

在这里插入图片描述
在这里插入图片描述

### 配置 Prometheus 监控 Nginx 性能指标 为了实现对 Nginx 的性能监控,可以通过以下方式完成配置: #### 1. 安装并启用必要的模块 要让 Prometheus 抓取 Nginx 的指标数据,需先确保 Nginx 支持 Lua 模块。如果未安装该模块,则需要重新编译 Nginx 或者使用 OpenResty 来简化此过程[^3]。 对于基于 Debian/Ubuntu 系统的用户,可以按照如下命令安装 `libnginx-mod-http-lua`: ```bash sudo apt update && sudo apt install libnginx-mod-http-lua ``` #### 2. 下载并加载 prometheus.lua 脚本 下载官方提供的 Lua 脚本 `prometheus.lua` 并将其放置在一个可访问的位置。例如: ```bash wget https://raw.githubusercontent.com/knyar/nginx-lua-prometheus/master/prometheus.lua -O /etc/nginx/lua/prometheus.lua ``` 随后,在 Nginx 配置文件中引入该脚本,并设置其监听路径以暴露指标接口: ```nginx http { lua_shared_dict prometheus_metrics 10m; init_by_lua_block { require("resty.core") local.prometheus = require("prometheus").init("prometheus_metrics") -- 初始化计数器和其他度量标准 } server { listen 9161; location /metrics { content_by_lua_block { ngx.header["Content-Type"] = "text/plain" require("prometheus").collect(ngx) } } } } ``` #### 3. 更新 Prometheus 配置 编辑 Prometheus 的 YAML 配置文件 (`prometheus.yml`),添加一个新的 job 来抓取上述 `/metrics` 接口的数据[^2]: ```yaml scrape_configs: - job_name: 'nginx' static_configs: - targets: ['<your_nginx_server_ip>:9161'] ``` 替换 `<your_nginx_server_ip>` 为实际部署 Nginx 的服务器地址。 保存更改后重启 Prometheus 服务使新配置生效: ```bash systemctl restart prometheus ``` #### 4. 使用 Grafana 进行可视化展示 Grafana 是一种强大的仪表盘工具,能够帮助更直观地查看由 Prometheus 提供的时间序列数据。创建新的数据源并将它指向本地运行中的 Prometheus 实例之后,可以从社区模板库导入专门针对 Nginx 设计好的面板或者自定义查询语句绘制图表[^1]。 通过以上步骤即可成功搭建一套完整的解决方案用于持续跟踪和评估生产环境中 Nginx 的表现情况。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值