4

我正在处理一项需要配置和验证 prometheus alertmanager 的任务。当 mesos 进程和 HAProxy 进程关闭时,用户应该得到警报,我试图在互联网上找到这些警报规则,但没有找到合适的。谁能告诉我如何为这些编写警报规则。基本上需要条件子句。

4

2 回答 2

5

这取决于您如何监控事物。让我们以 HAProxy 为例,假设您正在使用 HAProxy Exporter ( https://github.com/prometheus/haproxy_exporter ) 对其进行监控。HAProxy Exporter 包含一个名为 的指标haproxy_up,指示它是否成功抓取 HAProxy(当 Prometheus 反过来抓取 exporter 时)。如果 HAProxy 无法被抓取,haproxy_up则会有一个值,0您可以对此发出警报。假设您的 HAProxy 导出器的 Prometheus 作业名称为haproxy-exporter. 然后,您可以编写如下警报规则:

ALERT HAProxyDown
  IF haproxy_up{job="haproxy-exporter"} == 0
  FOR 5m
  LABELS {
    severity = "page"
  }
  ANNOTATIONS {
    summary = "HAProxy {{ $labels.instance }} down",
    description = "HAProxy {{ $labels.instance }} could not be scraped."
  }

如果任何 HAProxy 实例无法被抓取超过 5 分钟,这将发送警报。

如果您想知道导出器(而不是 HAProxy 本身)是否已关闭,您可以改为使用表达式up{job="haproxy-exporter"} == 0来查找任何关闭的 HAProxy Exporter 实例。可能您实际上会想要检查两者。

关于 Mesos 及其出口商,我不能说太多,因为我对他们没有任何经验,但我想它会是类似的。

于 2016-05-04T22:18:19.103 回答
1

同样对于导出 mesos 指标,您应该使用 mesos-exporter。https://github.com/prometheus-junkyard/mesos_exporter https://hub.docker.com/r/prom/mesos-exporter/ 它也有 mesos_up 指标。您的警报应该与 HaProxy 警报相同:

ALERT MesosMasterDown
  IF mesos_up{job="mesos-master-exporter"} == 0
  FOR 5m
  LABELS {
    severity = "page"
  }
  ANNOTATIONS {
    summary = "Mesos master {{ $labels.instance }} down",
    description = "Mesos master {{ $labels.instance }} could not be scraped."
  }

ALERT MesosSlaveDown
  IF mesos_up{job="mesos-slave-exporter"} == 0
  FOR 5m
  LABELS {
    severity = "page"
  }
  ANNOTATIONS {
    summary = "Mesos slave {{ $labels.instance }} down",
    description = "Mesos slave {{ $labels.instance }} could not be scraped."
  }
于 2016-05-14T10:15:28.427 回答