性能测试监控平台搭建-nginx_exporter(八)

8.安装nginx_exporter

8.1 安装nginx(二进制安装)

8.1.1 安装nginx的相关依赖包

[root@master ~]# yum install -y gcc-c++ zlib zlib-devel openssl openssl-devel pcre pcre-devel

8.1.2 下载nginx的tar包

下载nginx的tar包后解压

[root@master ~]# cd /opt/tgz
[root@master tgz]# wget http://nginx.org/download/nginx-1.24.0.tar.gz
[root@master tgz]# tar -zxvf nginx-1.24.0.tar.gz

下载ngx_devel_kit的zip包后解压

[root@master ~]# cd /opt/tgz
[root@master tgz]# wget https://github.com/vision5/ngx_devel_kit/archive/refs/tags/v0.3.3.zip
[root@master tgz]# unzip v0.3.3.zip

8.1.3 编译安装nginx

# 选择安装nginx的相关组件
[root@master tgz]# cd nginx-1.24.0
[root@master nginx-1.24.0]# ./configure --prefix=/usr/local/nginx-1.24.0 \
> --add-module=../ngx_devel_kit-0.3.3 \
> --with-http_stub_status_module \
> --with-http_ssl_module \
> --with-file-aio \
> --with-http_realip_module \
> --with-http_gzip_static_module

# 编译
[root@master nginx-1.24.0]# make

# 编译安装
[root@master nginx-1.24.0]# make install

8.1.4 开启nginx的stub_status配置

[root@master ~]# cd /usr/local/nginx-1.24.0
[root@master nginx-1.24.0]# vim conf/nginx.conf

在 nginx.conf文件中,在server的配置项内,添加 nginx_status{}的配置项目

…………………………………………
  server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        location /status {
            stub_status;
            access_log off;
            allow all;
            # allow 10.0.0.0/24;
            # deny all;
        }        

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;


…………………………………………

完成配置修改后,让nginx重新加载配置文件

[root@master nginx-1.24.0]# sbin/nginx -s reload

在浏览器中输入 http://10.0.0.100/status 展示内容如下

8.2 安装nginx-prometheus-exporter

8.2.1 下载对应的的 nginx-prometheus-exporter 的tar包

官方下载地址: https://github.com/nginxinc/nginx-prometheus-exporter/releases

下载nginx-prometheus-exporter

[root@master ~]# cd /opt/tgz
[root@master tgz]# wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v1.3.0/nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz

8.2.2 安装nginx-prometheus-exporter

解压 nginx-prometheus-exporter的tar包

[root@master ~]# mkdir -p /opt/app/nginx-prometheus-exporter
[root@master ~]# cd /opt/tgz
[root@master tgz]# cp nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz /opt/app/nginx-prometheus-exporter/.
[root@master tgz]# cd /opt/app/nginx-prometheus-exporter
[root@master nginx-prometheus-exporter]# tar zxvf nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz
[root@master nginx-prometheus-exporter]# rm -f nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz
[root@master nginx-prometheus-exporter]# cd ..
[root@master app]# chown -R root:root nginx-prometheus-exporter

创建nginx_exporter的系统启动文件

[root@master ~]# vim /usr/lib/systemd/system/nginx_exporter.service

文件内容如下,需要监控的 ip地址换成nginx开启status的服务地址

[Unit]
Description=prometheus nginx_exporter Daemon
Documentation=https://github.com/nginxinc/nginx-prometheus-exporter
Requires=network.target
After=network.target

[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/opt/app/nginx-prometheus-exporter
ExecStart=/opt/app/nginx-prometheus-exporter/nginx-prometheus-exporter -nginx.scrape-uri http://10.0.0.100/status
TimeoutSec=30
Restart=always

[Install]
WantedBy=multi-user.target

设置系统服务自动启动

# 启动nginx_exporter
[root@master nginx-prometheus-exporter]# systemctl start nginx_exporter

# 设置开机自启动
[root@master nginx-prometheus-exporter]# systemctl enable nginx_exporter

# 查看服务状态
[root@master nginx-prometheus-exporter]# systemctl status nginx_exporter
● nginx_exporter.service - prometheus nginx_exporter Daemon
   Loaded: loaded (/usr/lib/systemd/system/nginx_exporter.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2024-10-15 22:37:48 CST; 9s ago
     Docs: https://github.com/nginxinc/nginx-prometheus-exporter
 Main PID: 15685 (nginx-prometheu)
   CGroup: /system.slice/nginx_exporter.service
           └─15685 /opt/app/nginx-prometheus-exporter/nginx-prometheus-exporter -nginx.scrape-uri http://10.0.0.100/status

10月 15 22:37:48 master systemd[1]: Started prometheus nginx_exporter Daemon.
10月 15 22:37:49 master nginx-prometheus-exporter[15685]: the flag format is deprecated and will be removed in a future release, please use the new format: --nginx.scrape-uri
10月 15 22:37:49 master nginx-prometheus-exporter[15685]: ts=2024-10-15T14:37:49.094Z caller=exporter.go:124 level=info msg="Starting nginx-prometheus-exporter" version="(version=1.3.0, branch=HEAD,...ccc0ae1594a)"
10月 15 22:37:49 master nginx-prometheus-exporter[15685]: ts=2024-10-15T14:37:49.095Z caller=exporter.go:125 level=info msg="Build context" build_context="(go=go1.22.5, platform=linux/amd64, user=go...ags=unknown)"
10月 15 22:37:49 master nginx-prometheus-exporter[15685]: ts=2024-10-15T14:37:49.101Z caller=tls_config.go:313 level=info msg="Listening on" address=[::]:9113
10月 15 22:37:49 master nginx-prometheus-exporter[15685]: ts=2024-10-15T14:37:49.102Z caller=tls_config.go:316 level=info msg="TLS is disabled." http2=false address=[::]:9113
Hint: Some lines were ellipsized, use -l to show in full.

浏览器地址输入 http://10.0.0.100:9113/metrics 可以看到nginx的数据采集

修改prometheus的配置文件,用于添加对node_exporter的数据收集,在安装prometheus的目录下找到prometheus.yml的配置文件

[root@master ~]# cd /opt/app/prometheus-2.53.2/
[root@master prometheus-2.53.2]# ll
总用量 261328
drwxr-xr-x. 2 root root        38 8月   9 23:13 console_libraries
drwxr-xr-x. 2 root root       173 8月   9 23:13 consoles
drwxr-xr-x. 6 root root       138 10月 11 19:43 data
-rw-r--r--. 1 root root     11357 8月   9 23:13 LICENSE
-rw-r--r--. 1 root root      3773 8月   9 23:13 NOTICE
-rwxr-xr-x. 1 root root 137838575 8月   9 22:56 prometheus
-rw-r--r--. 1 root root       950 10月 11 16:14 prometheus.yml
-rwxr-xr-x. 1 root root 129735160 8月   9 22:56 promtool
-rw-r--r--. 1 root root        45 10月 11 16:11 reload-prometheus.sh

# 修改配置文件添加node_exporter的数据收集信息
[root@master prometheus-2.53.2]# vim prometheus.yml

在prometheus.yml文件中进行修改,添加 job_name: "nginx_exporter" 的部分

# my global config
global:
  scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute.
  evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute.
  # scrape_timeout is set to the global default (10s).

# Alertmanager configuration
alerting:
  alertmanagers:
    - static_configs:
        - targets:
          # - alertmanager:9093

# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
  # - "first_rules.yml"
  # - "second_rules.yml"

# A scrape configuration containing exactly one endpoint to scrape:
# Here it's Prometheus itself.
scrape_configs:
  # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config.
  - job_name: "prometheus"

    # metrics_path defaults to '/metrics'
    # scheme defaults to 'http'.

    static_configs:
      - targets: ["localhost:9090"]
# 添加node_exporter的配置信息
  - job_name: "node_exporter"
    static_configs:
      - targets: ["10.0.0.100:9100"]
# 添加mysqld_exporter的配置信息
  - job_name: "mysqld_exporter"
    static_configs:
      - targets: ["10.0.0.100:9104"]  
# 添加jmx_exporter的配置信息
  - job_name: "jmx_exporter"
    static_configs:
      - targets: ["10.0.0.100:39081"]
# 添加jmx_exporter的配置信息
  - job_name: "nginx_exporter"
    static_configs:
      - targets: ["10.0.0.100:9113"]


# 完成prometheus配置加载
[root@master prometheus-2.53.2]# curl -X POST http://10.0.0.100:9090/-/reload

通过浏览器地址访问 http://10.0.0.100:9090 的地址访问(ip地址使用实际的地址),在Status->Targets 下 看到 nginx_exporter启动成功的记录

posted @ 2024-12-15 15:44  tigerMao  阅读(783)  评论(0)    收藏  举报