监控node exporter状态

下面介绍如何对node exporter进行监控,通过配置alert规则,检测node exporter是否挂掉。

为了能够让Prometheus能够启用定义的告警规则,我们需要在Prometheus全局配置文件中通过rule_files指定一组告警规则文件的访问路径,Prometheus启动后会自动扫描这些路径下规则文件中定义的内容,并且根据这些规则计算是否向外部发送通知。

修改Prometheus配置文件prometheus.yml,添加以下配置:

rule_files:
  - "rules/myrules.yml"

image-20210510151021090 在prometheus目录下创建rules文件夹,并创建告警文件myrules.yml, 内容如下:

groups:
  - name: my-rules
    rules:
    - alert: NodeExporterDown
      expr: up{job='node_exporter'}  == 0   # 检测node_exporter是否挂掉

在告警规则文件中,我们可以将一组相关的规则设置定义在一个group下。在每一个group中我们可以定义多个告警规则(rule)。一条告警规则主要由以下几部分组成:

  • alert:告警规则的名称。
  • expr:基于PromQL表达式告警触发条件,用于计算是否有时间序列满足该条件。
  • for:评估等待时间,可选参数。用于表示只有当触发条件持续一段时间后才发送告警。在等待期间新产生告警的状态为pending。
  • labels:自定义标签,允许用户指定要附加到告警上的一组附加标签。
  • annotations:用于指定一组附加信息,比如用于描述告警详细信息的文字等,annotations的内容在告警产生时会一同作为参数发送到Alertmanager。

重新启动prometheus和node exporter。

查看告警状态

如下所示,用户可以通过Prometheus WEB界面中的Alerts菜单查看当前Prometheus下的所有告警规则,以及其当前所处的活动状态。

image-20210510151430867 把node exporter手动停止掉一段时间。执行up{job="node_exporter"} == 0查询,prometheus已经检测到node expoter挂掉:

image-20210510151559921 到Alerts菜单下查看,状态更新为Firing

image-20210510151711151 对于已经pending或者firing的告警,Prometheus也会将它们存储到时间序列ALERTS{}中。

通过表达式查询告警实例:

image-20210510152104452 可以构造更详细的查询语句:

ALERTS{alertname="<alert name>", alertstate="pending|firing", <additional alert labels>}

样本值为1表示当前告警处于活动状态。