Prometheus通过Nginx-vts-exporter模块监控nginx服务

文章目录

    • 1、编译安装nginx
      • [1.1 下载nginx-module-vts 第三方模块](#1.1 下载nginx-module-vts 第三方模块)
      • [1.2 下载nginx源码包并编译安装](#1.2 下载nginx源码包并编译安装)
    • [2. 配置nginx](#2. 配置nginx)
      • [2.1 修改配置文件](#2.1 修改配置文件)
      • [2.2 检查语法,启动服务](#2.2 检查语法,启动服务)
      • [2.3 查看vhost_traffic_status的监控页面](#2.3 查看vhost_traffic_status的监控页面)
    • [3. 安装Nginx-vts-exporter](#3. 安装Nginx-vts-exporter)
      • [3.1 下载Nginx-exporter](#3.1 下载Nginx-exporter)
      • [3.2 准备nginx-vts-exporter启动文件,使用-nginx.scrape_uri指定url路径,同时指定为json格式,否则数据转换失败](#3.2 准备nginx-vts-exporter启动文件,使用-nginx.scrape_uri指定url路径,同时指定为json格式,否则数据转换失败)
      • [3.3 启动ningx-exporter, 检查9913端口是否存在](#3.3 启动ningx-exporter, 检查9913端口是否存在)
    • [4. 配置Prometheus](#4. 配置Prometheus)
      • [4.1 修改Prometheus配置文件](#4.1 修改Prometheus配置文件)
      • [4.2 加载 Prometheus 配置](#4.2 加载 Prometheus 配置)
      • [4.3 检查Prometheus是否将对应nginx节点纳入监控](#4.3 检查Prometheus是否将对应nginx节点纳入监控)
    • [5. 导入Grafana模板](#5. 导入Grafana模板)
      • [5.1 下载官方提供的Dashboard, 或者选择2949](#5.1 下载官方提供的Dashboard, 或者选择2949)
      • [5.2 在Grafana中导入该json文件](#5.2 在Grafana中导入该json文件)

1、编译安装nginx

1.1 下载nginx-module-vts 第三方模块

bash 复制代码
[root@node02 ~]#wget https://codeload.github.com/vozlt/nginx-module-vts/tar.gz/refs/tags/v0.2.1
[root@node02 ~]#tar xf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz 

1.2 下载nginx源码包并编译安装

bash 复制代码
[root@node02 ~]# yum install gcc pcre-devel openssl-devel zlib-devel -y
[root@node02 ~]# wget https://nginx.org/download/nginx-1.22.1.tar.gz
[root@node02 ~]# tar xf nginx-1.22.1.tar.gz
[root@node02 ~]# cd nginx-1.22.1
[root@node02 ~]# ./configure --prefix=/usr/local/nginx \
                             --with-http_ssl_module \
                             --add-module=../nginx-module-vts-0.2.1
[root@node02 ~]# make -j 2  && make install

2. 配置nginx

2.1 修改配置文件

bash 复制代码
 [root@node02 ~]# cat /usr/local/nginx/conf/nginx.conf

worker_processes  1;

events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;
    keepalive_timeout  65;
    vhost_traffic_status_zone; 

    server {           # 找一个稳定的虚拟主机添加如下location即可
        listen       80;
        server_name  www.test.com;
        location / {
            root   html;
            index  index.html index.htm;
        }
        location /nginx_vhost_status {
            vhost_traffic_status_display;    # 显示该虚拟主机的流量信息
            vhost_traffic_status_display_format html; # 显示格式为html
        }
    }
    
    server {
        listen       80;
        server_name  news.test.com;
        location / {
            root   html;
            index  index.html index.htm;
        }
    }

 # 定义一组测试使用的负载均衡
    upstream map {
        server 127.0.0.1:8080;
        server 127.0.0.1:8081;
    }
    server {
        listen       80;
        server_name  map.test.com;
        location / {
            proxy_pass http://map;
            proxy_set_header Host $http_host;
        }
    }
}

2.2 检查语法,启动服务

bash 复制代码
[root@node02 ~]# /usr/local/nginx//sbin/nginx -t
[root@node02 ~]# /usr/local/nginx//sbin/nginx -s reload

2.3 查看vhost_traffic_status的监控页面

3. 安装Nginx-vts-exporter

3.1 下载Nginx-exporter

bash 复制代码
[root@node02 ~]# wget https://github.com/hnlq715/nginx-vts-exporter/releases/download/v0.10.3/nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
[root@node02 ~]# tar xf nginx-vts-exporter-0.10.3.linux-amd64.tar.gz
[root@node02 ~]# cp nginx-vts-exporter-0.10.3.linux-amd64/nginx-vts-exporter /usr/local/bin/

3.2 准备nginx-vts-exporter启动文件,使用-nginx.scrape_uri指定url路径,同时指定为json格式,否则数据转换失败

bash 复制代码
[root@node02 ~]# cat > /usr/lib/systemd/system/nginx-vts-exporter.service <<EOF
[Unit]
Description=nginx-vts-exporter
Documentation=https://prometheus.io/
After=network.target

[Service]
ExecStart=/usr/local/bin/nginx-vts-exporter -nginx.scrape_uri=http://127.0.0.1/nginx_vhost_status/format/json
Restart=on-failure
RestartSec=20

[Install]
WantedBy=multi-user.target
EOF

3.3 启动ningx-exporter, 检查9913端口是否存在

bash 复制代码
[root@node02 ~]# systemctl daemon-reload
[root@node02 ~]# systemctl restart nginx-vts-exporter
[root@node02 ~]# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      878460/nginx: maste     
tcp6       0      0 :::9913                 :::*                    LISTEN      3943361/nginx-vts-e 

4. 配置Prometheus

4.1 修改Prometheus配置文件

bash 复制代码
 [root@node01 ~]# /etc/prometheus/prometheus.yml
scrape_configs:
  - job_name: "nginx-exporter"
    metrics_path: "/metrics"
    static_configs:
    - targets: ["node02:9913"]

4.2 加载 Prometheus 配置

bash 复制代码
 [root@node01 ~]# curl -X  POST http://node01:9090/-/reload

4.3 检查Prometheus是否将对应nginx节点纳入监控

5. 导入Grafana模板

5.1 下载官方提供的Dashboard, 或者选择2949

bash 复制代码
wget https://raw.githubusercontent.com/hnlq715/nginx-vts-exporter/master/dashboard/nginx-vts-exporter.json

5.2 在Grafana中导入该json文件

相关推荐
闲云野鹤在人间3 小时前
Prometheus入门|搭建Prometheus+Node‑Exporter+Grafana完整主机监控平台
grafana·prometheus
Sayai3 小时前
Neo4j 图数据质量检查实战:环路检测、孤立节点与连通分量,两条 Cypher 引出的数据体检清单(含变长路径性能陷阱)
运维·neo4j·图数据库·数据质量·cypher
Elastic 中国社区官方博客4 小时前
更少的位数,相同的召回率:DiskBBQ 更保守的自动校准扫描
大数据·运维·开发语言·人工智能·elasticsearch·搜索引擎
方便面不加香菜4 小时前
Docker Volume -- 管理卷Volume详解
运维·docker·容器
沫璃染墨5 小时前
从零入门计算机网络系列(十八):TCP连接管理详解——从三次握手与四次挥手到TIME_WAIT机制
运维·服务器·网络·c++·网络协议·tcp/ip·tcp
Felven5 小时前
华为鲲鹏920s芯片serdestool工具使用说明
linux·运维·服务器·华为·鲲鹏920·serdestool
江湖有缘5 小时前
Docker实战 | 使用Docker部署lemonitor镜像站点列表程序
运维·docker·容器
莫晓燚5 小时前
mall 电商项目完整部署---实战
linux·运维·docker·容器
爱和冰阔落6 小时前
【Linux网络】JsonCpp 怎么实现序列化?从 Request/Response 到网络计算器消息设计
linux·运维·网络·php
Decay__6 小时前
01_SQLServer 体系架构全解 —— 实例进程、关系引擎、SQLOS 与事务日志深入
运维·数据库·sql·mysql·架构