Prometheus监控系统:nginx-prometheus-exporter 服务的告警触发

Prometheus 自身能够处理告警规则并在WEB仪表盘页面中显示告警的触发状态。


主prometheus.yml中添加自定义的告警规则

告诉Prometheus去加载和执行在alert_rules.yml文件中定义的告警规则,并且注意重启Prometheus服务得以应用新的配置

[root@dev-centos7-shanghai-area1 ~]# vim /etc/prometheus/prometheus.yml

# prometheus.yml - Prometheus server configuration file
global:
  scrape_interval:     15s # 定义抓取目标频率,单位是秒,配置每15秒抓取一次数据
  evaluation_interval: 15s # 定义规则评估频率,单位是秒,配置每15秒评估一次报警规则

# 抓取配置,用于定义如何抓取监控目标的数据
scrape_configs:
  - job_name: 'Prometheus_Service_Port_9090' # 定义了一个名为Prometheus_Service_Port_9090的抓取任务
    static_configs: # 静态配置的目标列表,目标是直接抓取数据的地方
      - targets: ['localhost:9090'] # 目标列表,将抓取本地主机上运行在9090端口上的Prometheus服务器自身的指标

  - job_name: 'Nginx_Prometheus_Exporter_Port_9113' # 定义了抓取Nginx Prometheus Exporter的任务
    static_configs:
      - targets: ['203.0.113.128:9113'] # 目标列表,抓取远程主机上运行在9113端口上的Nginx Prometheus Exporter的指标

# 规则文件配置,用于加载自定义的告警规则
rule_files:
  - "/etc/prometheus/rules/alert_rules.yml" # 引用告警规则文件

创建一个包含告警规则的YAML文件

在这个文件中,可以定义一个或多个规则组,每个规则组可以包含一个或多个告警规则

[root@dev-centos7-shanghai-area1 ~]# vim /etc/prometheus/rules/alert_rules.yml
# alert_rules.yml - Prometheus alerting rules configuration file
groups:
- name: NginxAlerts # 规则组名称
  rules:
  # 当Nginx Prometheus Exporter服务不可用时触发报警
  - alert: NginxExporterDown # 报警名称
    expr: up{job="Nginx_Prometheus_Exporter_Port_9113"} == 0 # 表达式,检测Nginx Prometheus Exporter的up指标是否为0
    for: 30s # 如果表达式结果为真,需持续30秒才会触发报警
    labels: # 报警标签
      severity: critical # 报警严重程度
    annotations: # 报警注释
      summary: "Nginx Prometheus Exporter is down on {{ $labels.instance }}" # 报警摘要
      description: "The Nginx Prometheus Exporter has been down for more than 30 seconds." # 报警详细描述

模拟nginx-prometheus-exporter服务异常

[root@dev-centos7-shanghai-area1 ~]# systemctl stop nginx-prometheus-exporter.service

在Prometheus中,告警规则的状态可能显示为inactive,这通常意味着规则中的条件尚未满足,因此会没有触发任何告警



告警规则从inactive状态转变为firing状态,需要满足以下条件:

1、表达式评估:规则中的expr字段定义了用于评估的Prometheus查询表达式。如果该表达式的值满足规则定义的阈值,则规则可能变为firing状态。
2、持续时间:for字段定义了必须连续满足条件的时间长度。即使表达式评估为真,也必须在指定的时间段内保持为真,规则才会变成firing状态。
3、数据可用性:如果Prometheus无法从目标获取数据,或者数据不足(例如,时间序列数据太短),那么规则可能不会被评估,从而保持inactive状态。
4、配置问题:确保prometheus.yml配置文件正确引用了规则文件,并且Prometheus服务已经重启以应用新的规则。
5、规则文件语法:检查alert_rules.yml文件中的规则语法是否正确,包括是否有拼写错误或格式错误。
6、Prometheus版本兼容性:确认你的Prometheus版本与规则文件中的特性兼容,有些特性在较新版本中才被引入。

如果规则文件alert_rules.yml中的NginxAlerts规则组在手动模拟停止后依旧显示为inactive,可以根据实际情况我记录下来的四点进行检查:

1、确保Nginx Prometheus Exporter正在正常运行并且正在向Prometheus报告指标;
2、确保规则文件中的expr字段使用的指标名称和标签与实际收集到的指标相匹配;
3、检查规则的for字段设置是否合理,以及是否已经过了足够的时间让条件持续满足;
4、查看Prometheus的告警状态页面,通常可以通过http://<prometheus-server>:<port>/alerts访问,检查是否有任何错误信息或未满足的条件;
上一篇
下一篇