Prometheus监控nginx

创建nginx-docker配置文件

bash 复制代码
mkdir /data/nginx/conf.d/ -p
cd /data/nginx/conf.d/
data/nginx/conf.d# ls



nginx/conf.d配置文件

cat >>server.conf<< 'EOF'
server {
    listen 80;
    server_name localhost;
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}
EOF

nginx-docker

mkdir /data/docker-compose -p
cd /data/docker-compose/


cat >docker-compose.yaml<<'EOF'
version: '3'
services:
  nginx:
    image: nginx:1.21.6
    container_name: nginx
    restart: always
    volumes:
      - /data/nginx/conf.d:/etc/nginx/conf.d
      - /data/nginx/html:/usr/share/nginx/html
      - /data/nginx/log:/var/log/nginx
    ports:
      - 80:80
EOF

启动nginx_docker

docker-compose up -d

nginx 开启stub_status

bash 复制代码
确认是否有该模块 with-http_stub_status_module 模块

docker exec -it nginx nginx -V 2>&1 | grep -o with-http_stub_status_module
with-http_stub_status_module

nginx 开启stub_status配置
```
cat >>server.conf<< 'EOF'
server {
    listen 80;
    server_name localhost;
......
    
    location /stub_status {
        stub_status on;
        access_log off;
        allow 0.0.0.0/0;
        deny all;
    }
......
}
EOF


具体配置
```
server {
    listen 80;
    server_name localhost;

    location /stub_status {
        stub_status on;
        access_log off;
        allow 0.0.0.0/0;
        deny all;
    }
    location / {
        root /usr/share/nginx/html;
        index index.html index.htm;
    }
    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/html;
    }
}

重新加载nginx 配置测试

bash 复制代码
root@prometheus220:/data/nginx/conf.d# docker exec -it nginx nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful



root@prometheus220:/data/nginx/conf.d# docker exec -it nginx nginx -s reload

root@prometheus220:/data/nginx/conf.d# curl http://localhost/stub_status
Active connections: 1 
server accepts handled requests
 1 1 1 
Reading: 0 Writing: 1 Waiting: 0 
```

配置nginx-exporter

bash 复制代码
cd /data/nginx/

cat >docker-compose.yaml <<'EOF'
version: '3.3'
services:
  nginx_exporter:
    image: nginx/nginx-prometheus-exporter:0.8.0
    container_name: nginx_exporter
    hostname: nginx_exporter
    command:
      - '-nginx.scrape-uri=http://10.19.1.220/stub_status'
    restart: always
    ports:
      - '9113:9113'
EOF

启动

docker-compose up -d

确认docker ps -a

bash 复制代码
http://10.19.1.220:9113/metrics

prometheus.yml 增加配置

bash 复制代码
nginx_exporter监控样本数据

cat >> prometheus/prometheus.yml << 'EOF'
  - job_name: 'nginx_exporter'
    scrape_interval: 30s
    static_configs:
    - targets: ['10.19.1.220:9113']
      labels:
        instance: nginx服务器 
EOF

curl -X POST http://localhost:9090/-/reload

prometheus 界面显示nginx_exporter

增加告警阀值

bash 复制代码
cd /data/docker-prometheus

cat >>prometheus/alert.yml << 'EOF'
- name: nginx
  rules:
  #对任何实例操过30s无法联系的情况发出告警
  - alert: NginxDown
    expr: nginx_up == 0
    for: 30s
    labels: 
      serverity: critical
    annotations:
      summary: "nginx异常,实例:{{ $labels.instance }}"
      description: "{{ $labels.job }} nginx 已关闭"
EOF
```
docker exec -it prometheus promtool check config /etc/prometheus/prometheus.yml
curl -X POST http://localhost:9090/-/reload

添加nginx_dashboard

bash 复制代码
https://grafana.com/grafana/dashboards/12708
相关推荐
Csvn1 小时前
认识 Nginx
后端·nginx
一个天蝎座 白勺 程序猿2 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
分布式存储与RustFS5 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希1236 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
@兽血沸腾7 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
讯捷蓝达12 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落15 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
陈希12315 小时前
Nginx 从入门到能扛事:反向代理、负载均衡与 HTTPS 实战
nginx·https·负载均衡
lisanmengmeng16 小时前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮16 小时前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频