杨梅冲
每天在想什么呢?

地址:

  https://github.com/martin-helmich/prometheus-nginxlog-exporter

  https://www.martin-helmich.de/en/blog/monitoring-nginx.html

客户端配置:

配置接口监控:

cd /opt/prometheus/prometheus-nginxlog-exporter
vim prometheus-nginxlog-exporter.yaml
listen:
  port: 4040
  address: "0.0.0.0"

namespaces:
  - name: nginx
  # 指定日志格式,必须与 nginx.conf 中的定义匹配
    format: format = '[$time_local]-[$real_ip]- \"$request\" $status $body_bytes_sent \"$http_referer\" \"$http_user_agent\" \"$upstream_response_time\" > $request_time'
    source:
      files:
        - /data/logs/nginx/www. xx.com.log  # nginx日志地址
 # 核心配置:从 'request' 字段中提取请求的 URI
    relabel_configs:
      - target_label: request_uri
        from: request
        split: 2
        separator: ' '
    labels:
      job: "nginx"
      environment: "prod"

# 系统启动配置
cat /etc/systemd/system/prometheus-nginxlog-exporter.service
[Unit]
Description=NGINX metrics exporter for Prometheus
Documentation= https://github.com/martin-helmich/prometheus-nginxlog-exporter
After=network-online.target

[Service]
Type=simple
ExecStart=/opt/prometheus/prometheus-nginxlog-exporter/prometheus-nginxlog-exporter -config-file /opt/prometheus/prometheus-nginxlog-exporter/prometheus-nginxlog-exporter.yaml
Restart=always
RestartSec=5
ProtectSystem=strict
ProtectHome=true
ReadWritePaths=/data/logs/nginx
NoNewPrivileges=true
CapabilityBoundingSet=

[Install]
WantedBy=multi-user.target

启动命令:

systemctl daemon-reload

systemctl start prometheus-nginxlog-exporter

服务端配置:

# 警告配置alert.yml
# /auth/rest/register-new-account-common该接口5分钟内访问超过20次发报警邮件
- name: nginx_api_alert
  rules:
  - alert: HighFrequencyRegisterAPI
    expr: sum(increase(nginx_http_requests_total{uri="/auth/rest/register-new-account-common"}[5m])) > 20
    for: 0m # 条件满足立即告警
    labels:
      severity: warning
      service: user-registration
    annotations:
      summary: "用户注册接口调用频率过高 (实例: {{ $labels.instance }})"
      description: "接口 /auth/rest/register-new-account-common 在过去5分钟内已被访问 {{ $value }} 次,超过20次的阈值。"

# prometheus.yaml配置
  - job_name: "nginxlog"
    static_configs:
      - targets: ["192.168.1.10:4040"]
    metrics_path: '/metrics'
    scrape_interval: 15s
在http://192.168.1.1:9090/的status-》target中可以看到

image

image

 

 

 

posted on 2025-12-01 19:20  杨梅冲  阅读(0)  评论(0)    收藏  举报