写点什么

Prometheus HTTP API 查询(五)告警接口

作者:耳东@Erdong
  • 2021 年 11 月 11 日
  • 本文字数:1847 字

    阅读完需:约 6 分钟

本文已经收录在 Prometheus 合集 你真的会 Prometheus 查询吗?--PromQL 合集 中。


这次我们来看一下告警相关的接口,Prometheus 提供的众多功能里,告警是不可或缺的一个功能,通过告警相关的接口,我们可以获取到告警信息来进行进一步的统计或者动作。


Alertmanagers

下面这个接口会返回 Prometheus 当前的告警管理状态。我想了一阵子,暂时没想到这个接口的应用场景,大家有找到这个接口的使用场景可以告诉我一下。


GET /api/v1/alertmanagers
复制代码


访问这个接口在响应里会包含活跃的告警管理和被遗弃的告警管理。


$ curl http://localhost:9090/api/v1/alertmanagers{  "status": "success",  "data": {    "activeAlertmanagers": [      {        "url": "http://127.0.0.1:9090/api/v1/alerts"      }    ],    "droppedAlertmanagers": [      {        "url": "http://127.0.0.1:9093/api/v1/alerts"      }    ]  }}
复制代码

Rules


Prometheus 的 `/rules` 接口会返回当前加载的已经触发的告警规则和记录的告警规则列表。


此外,它还返回由每个警报规则的 Prometheus 实例触发的当前处于 `active` 状态的告警。


`/rules` 是一个新的接口,目前来看和总体的 API v1 接口的稳定性相比还差一些。


GET /api/v1/rules
复制代码


对这个接口进行访问的时候可以使用一个type 参数可以对结果进行过滤,这个参数有两个值,当 type=alert 时只返回告警规则,当type=record时,只返回记录规则。当没有参数或者参数为空的时候,不对结果进行过滤。


$ curl http://localhost:9090/api/v1/rules
{ "data": { "groups": [ { "rules": [ { "alerts": [ { "activeAt": "2018-07-04T20:27:12.60602144+02:00", "annotations": { "summary": "High request latency" }, "labels": { "alertname": "HighRequestLatency", "severity": "page" }, "state": "firing", "value": "1e+00" } ], "annotations": { "summary": "High request latency" }, "duration": 600, "health": "ok", "labels": { "severity": "page" }, "name": "HighRequestLatency", "query": "job:request_latency_seconds:mean5m{job=\"myjob\"} > 0.5", "type": "alerting" }, { "health": "ok", "name": "job:http_inprogress_requests:sum", "query": "sum by (job) (http_inprogress_requests)", "type": "recording" } ], "file": "/rules.yaml", "interval": 60, "name": "example" } ] }, "status": "success"}
复制代码

Alerts

/alerts 接口会返回一个活跃的告警列表,可以定时获取这个接口的数据,这样就知道还有多少告警是处于触发状态,可以继续发送或者将告警升级,避免了本地存储一份的问题。


/rules 一样是一个新的 接口,稳定性还在进一步验证当中。


GET /api/v1/alerts
复制代码


我们来看一个例子。


$ curl http://localhost:9090/api/v1/alerts
{ "data": { "alerts": [ { "activeAt": "2018-07-04T20:27:12.60602144+02:00", "annotations": {}, "labels": { "alertname": "my-alert" }, "state": "firing", "value": "1e+00" } ] }, "status": "success"}
复制代码


发布于: 19 小时前阅读数: 10
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus HTTP API 查询(五)告警接口