一、查看是否安装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_status2、查看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.targetsystemctl 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
九、查看是否监听到
http://192.168.1.41:9090/
十、Granfa导入模板
模板编号12708