性能测试监控平台搭建-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启动成功的记录