一、查看是否安装stub_status模块
1、查看www-nginx是否安装stub_status模块
#进入目录
cd /opt/nginx/www-nginx/sbin
#查看是否安装
./nginx -V 2>&1 | grep -o with-http_stub_status_module
##如果没安装重新安装编译
./configure --prefix=/opt/nginx/www-nginx --with-http_stub_status_module
make & make install
##启动
./nginx
##查看是否配置
curl http://192.168.1.41:20080/stub_status
2、查看www2-nginx是否安装stub_status模块
#进入目录
cd /opt/nginx/www-nginx/sbin
#查看是否安装
./nginx -V 2>&1 | grep -o with-http_stub_status_module
##如果没安装重新安装编译
./configure --prefix=/opt/nginx/www-nginx --with-http_stub_status_module
make & make install
##启动
./nginx
##查看是否配置
curl http://192.168.1.41:60080/stub_status
二、安装nginx_export
wget https://github.com/nginxinc/nginx-prometheus-exporter/releases/download/v1.3.0/nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz
tar -zxvf nginx-prometheus-exporter_1.3.0_linux_amd64.tar.gz -C /portal/monitor/nginx-prometheus-exporter
chown prometheus:prometheus -R /portal/monitor/
三、配置nginx的conf文件
server {
listen 20080;
listen [::]:20080;
server_name localhost;
error_page 404 403 500 502 503 504 /50x.html;
location / {
root html;
index index.html index.htm;
}
location = /50x.html {
root html;
}
location = /stub_status { # 具体路径可根据业务情况进行调整
stub_status on;
access_log off;
allow 192.168.1.41;
deny all;
}
}
四、配置www-nginx的systemd
cd etc/systemd/system
vim www_nginx_exporter.service
[Unit]
Description=www-nginx-prometheus-exporter
After=network.target
[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=always
ExecStart=/portal/monitor/nginx_exporter/nginx-prometheus-exporter -nginx.scrape-uri=http://192.168.1.41:20080/stub_status -web.listen-address=:9113
[Install]
WantedBy=multi-user.target
五、配置www2-nginx的systemd
cd etc/systemd/system
vim www2_nginx_exporter.service
[Unit]
Description=www2-nginx-prometheus-exporter
After=network.target
[Service]
Type=simple
User=prometheus
Group=prometheus
Restart=always
ExecStart=/portal/monitor/nginx_exporter/nginx-prometheus-exporter -nginx.scrape-uri=http://192.168.1.41:60080/stub_status -web.listen-address=:9114
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl start www_nginx_exporter.service
systemctl enable www2_nginx_exporter.service
##访问地址www
http://192.168.1.41:9113/metrics
##访问地址www2
http://192.168.1.41:9114/metrics
六、配置prometheus
# 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:
- localhost:9193
# Load rules once and periodically evaluate them according to the global 'evaluation_interval'.
rule_files:
- "alert.yml"
# - "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'.
scrape_interval: 15s
static_configs:
- targets: ["localhost:9090"]
- job_name: "node-exporter"
scrape_interval: 15s
static_configs:
- targets: ["192.168.1.41:9100"]
labels:
instance: 192.168.1.41服务器
- targets: ["192.168.1.42:9100"]
labels:
instance: 192.168.1.42服务器
- targets: ["192.168.1.43:9100"]
labels:
instance: 192.168.1.43服务器
- targets: ["192.168.1.44:9100"]
labels:
instance: 192.168.1.44服务器
## 添加一下内容
- job_name: "www_nginx_exporter"
static_configs:
- targets: ["192.168.1.41:9113"]
labels:
instance: prod4-nginx服务器
- job_name: "www2_nginx_exporter"
static_configs:
- targets: ["192.168.1.41:9114"]
labels:
instance: prod6-nginx服务器
七、prometheus配置alert
groups:
- name: Prometheus alert
rules:
# 对任何实例超过30s无法联系的情况发出警告
- alert: 服务告警
expr: up == 0
for: 30s
labels:
severity: critical
annotations:
instance: "{{ $labels.instance}}"
description: "{{ $labels.job}} 服务已关闭"
- name: Nginx
rules:
# 检查 nginx_exporter 端口 9113(适用于20080端口的nginx实例)
- alert: WWWNginxDown
expr: up{job="nginx_exporter", instance="192.168.1.41:9113"} == 0
for: 30s
labels:
severity: critical
annotations:
instances: "nginx异常,实例:{{ $labels.instance }}"
description: "prod4 的 nginx 已关闭"
# 检查 nginx_exporter 端口 9114(适用于60080端口的nginx实例)
- alert: WWW2NginxDown
expr: up{job="nginx_exporter", instance="192.168.1.41:9114"} == 0
for: 30s
labels:
severity: critical
annotations:
instances: "nginx异常,实例:{{ $labels.instance }}"
description: "prod6 的 nginx 已关闭"
八、重载
curl -X POST http://192.168.1.41:9090/-/reload
九、查看是否监听到
十、Granfa导入模板
模板编号12708