一.安装nginx
1.安装相关依赖
yum install -y gcc gcc-c++ make libtool wget pcre pcre-devel zlib zlib-devel openssl openssl-devel
2.下载nginx安装包
3. 安装nginx
# 解压
tar -xzvf nginx-1.27.1.tar.gz
# 预编译
./configure --prefix=/usr/local/nginx --with-http_realip_module --with-http_ssl_module --with-pcre --with-http_stub_status_module
#编译&安装
make && make install
4.修改nginx.conf配置文件
server {
listen 80;
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
}
一.编译安装
# ./nginx -t #安装查看配置文件是否正确
# ./nginx -s reload #重新加载配置文件
二.docker安装
# docker exec -it nginx nginx -t
# docker exec -it nginx nginx -s reload
5.启动nginx,查看是都开启stub_status
# ./nginx -V 2>&1 | grep -o with-http_stub_status_module #编译安装查看
# docker exec -it nginx nginx -V 2>&1 | grep -o with-http_stub_status_module #docker安装查看
# curl http://localhost:80/nginx_status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
6.安装nginx-prometheus-exporter
1.下载nginx-prometheus-exporter
# wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/nginx-prometheus-exporter_0.11.0_linux_amd64.tar.gz
2.解压安装包
# mkdir nginx-prometheus-exporter
# tar -zxvf nginx-prometheus-exporter_0.11.0_linux_amd64.tar.gz -C nginx-prometheus-exporter
3.启动nginx-prometheus-exporter
# ./nginx-prometheus-exporter -nginx.scrape-uri http://127.0.0.1:80/nginx_status
4.配置自启动
# vim /etc/systemd/system/nginx-prometheus-exporter.service
[Unit]
Description=Nginx Prometheus Exporter
After=network.target
[Service]
ExecStart=/path/to/nginx-prometheus-exporter --nginx.scrape-uri http://127.0.0.1:80/nginx_status
Restart=always
User=root
[Install]
WantedBy=multi-user.target
# systemctl enable nginx-prometheus-exporter
# systemctl start nginx-prometheus-exporter
# systemctl status nginx-prometheus-exporter
7.修改Prometheus.yml文件
- job_name: "nginx"
static_configs:
- targets: ['192.168.1.201:9113']
# 修改配置后需要重启Prometheus
8.docker安装nginx-exporter
1.确认nginx是否有with-http_stub_status_module 模块
# docker exec -it nginx nginx -V 2>&1 | grep -o with-http_stub_status_module
2.nginx开启stub_status配置
# vim nginx.conf
server {
listen 80;
server_name localhost;
......
location /nginx_status {
stub_status on;
access_log off;
allow 0.0.0.0/0;
deny all;
}
......
3.重新加载配置
# docker exec -it nginx nginx -t
# docker exec -it nginx nginx -s reload
# curl http://localhost/nginx_status
4.拉取nginx-exporter镜像
# docker pull registry.cn-beijing.aliyuncs.com/insights-ops/nginx-prometheus-exporter:1.2
# docker tag registry.cn-beijing.aliyuncs.com/insights-ops/nginx-prometheus-exporter:1.2 nginx-prometheus-exporter:1.2
5 配置nginx-exporter
cat >docker-compose.yaml <<'EOF'
version: '3.3'
services:
nginx_exporter:
image: nginx/nginx-prometheus-exporter:1.2
container_name: nginx_exporter
hostname: nginx_exporter
command:
- '-nginx.scrape-uri=http://192.168.1.201/nginx_status'
restart: always
ports:
- '9113:9113'
network_mode: host
EOF
6.启动nginx-exporter
# docker-compose up nginx-exporter -d
# docker ps -a | grep nginx-prometheus-exporter
# netstat -nltp | grep 9113
7.修改Prometheus配置文件
- job_name: 'nginx'
static_configs:
- targets: ['192.168.1.201:9113']
labels:
instance: 测试环境
group: 项目1
environment: test
# 修改完成后重启Prometheus