Prometheus监控nginx

发布时间:2023年12月30日

创建nginx-docker配置文件

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


确认是否有该模块 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 配置测试

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

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?

http://10.19.1.220:9113/metrics

prometheus.yml 增加配置

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

增加告警阀值

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

https://grafana.com/grafana/dashboards/12708


?

文章来源:https://blog.csdn.net/zuopiezia/article/details/135308350
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。