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文件

相关推荐
无足鸟ICT1 小时前
【RHCA+】_etc_yum.repos.d_文件名.repo
linux·运维·centos
溪语流沙1 小时前
【Web全栈进阶】Nginx反向代理 + HTTPS:正式上线
前端·vue.js·python·nginx·https·fastapi
红姐跨境书2 小时前
Facebook账号频繁被要求验证怎么办?从登录异常到浏览器环境排查
运维·服务器
月落汀兰2 小时前
服务器出问题没人告警?Zabbix6.0 LNMP 部署,MySQL 监控 + 邮件告警保姆级实战
运维·服务器·zabbix
运维踩坑日记2 小时前
【无标题】
linux·运维·windows
xiaoyunxuexibiji2 小时前
供应商绩效评价体系如何建立?从评价指标到自动化考核
运维·人工智能·自动化
Z21-X2 小时前
云原生运维学习笔记:从云计算概念到服务器硬件的入门之旅
运维·笔记·学习·云原生
虚无的纽扣3 小时前
【Linux】线程(下):怎么创建、终止与分离一个线程
linux·运维·服务器
墨神谕3 小时前
Docker 数据卷(Volume)详解:Dockerfile 声明、Docker Compose 挂载宿主机目录及持久化实战
运维·docker·容器