通过 API 快速创建 AlertManager silence

简介: 通过 API 快速创建 AlertManager silence


概述

通常我们要 silence 某个 AlertManager 的 alert 时,需要通过 UI 界面操作,如下图:

AlertManager silence

效率有点低,而且不够自动化,那么是否可以有一种办法快速创建 AlertManager silence 呢?

– 有的,通过 API.

API Payload

v1

如下:

{
    "matchers": [
        {
            "name": "alername1",
            "value": ".*",
            "isRegex": true
        }
    ],
    "startsAt": "2022-04-29T22:12:33.533Z",
    "endsAt": "2022-04-29T23:11:44.603Z",
    "createdBy": "api",
    "comment": "Silence",
    "status": {
        "state": "active"
    }
}
JSON

v2

{
    "matchers": [
        {
            "name": "service",
            "value": "rancher",
            "isRegex": false,
            "isEqual": true
        },
        {
            "name": "alertname",
            "value": "TargetDown",
            "isRegex": false,
            "isEqual": true
        }
    ],
    "startsAt": "2022-04-29T10:11:35.656Z",
    "endsAt": "2022-04-29T12:11:35.656Z",
    "createdBy": "Casey Cui",
    "comment": " 配置错误导致的误报 ",
    "id": null
}
JSON

具体实现

curl 实现

📝 Notes:

以 v1 api 为例

如下:

curl https://alertmanager.ewhisper.cn/api/v1/silences -d '{
      "matchers": [
        {
          "name": "alername1",
          "value": ".*",
          "isRegex": true
        }
      ],
      "startsAt": "2022-04-29T22:12:33.533Z",
      "endsAt": "2022-04-29T23:11:44.603Z",
      "createdBy": "api",
      "comment": "Silence",
      "status": {
        "state": "active"
      }
}'
BASH

📝Notes:

在 K8S 集群内,地址一般为:http://alertmanager:9093

python 实现

如下:

#!/usr/bin/python3
import requests
import socket
import datetime
import time
res = requests.post("http://alertmanager:9093/api/v2/silences", json={
    "matchers": [
        {"name": "job", "value": "myjob", "isRegex": False},
        {"name": "instance", "value": "{}:1234".format(socket.gethostname()), "isRegex": False},
        ],
    "startsAt": datetime.datetime.utcfromtimestamp(time.time()).isoformat(),
    "endsAt": datetime.datetime.utcfromtimestamp(time.time() + 4*3600).isoformat(),
    "comment": "Backups on {}".format(socket.gethostname()),
    "createdBy": "My backup script",
    },
    )
res.raise_for_status()
silenceId = res.json()["silenceID"]
PYTHON

移除 silence 的脚本:

res = requests.delete("http://alertmanager:9093/api/v2/silence/{}".format(silenceId))
res.raise_for_status()
PYTHON

EOF


相关文章
|
7月前
|
资源调度 监控 API
开源API网关APISIX分析与使用
开源API网关APISIX分析与使用
482 0
|
Kubernetes 监控 安全
如何访问kubernetes API?
如何访问kubernetes API?
249 0
|
存储 前端开发 安全
webhook是什么 与API的区别在哪里
webhooks是一个api概念,是微服务api的使用范式之一,也被成为反向api,即:前端不主动发送请求,完全由后端推送。 举个常用例子,比如你的好友发了一条朋友圈,后端将这条消息推送给所有其他好友的客户端,就是 Webhooks 的典型场景。
webhook是什么 与API的区别在哪里
|
4月前
|
资源调度 Kubernetes API
在K8S中,能否实现不通过api-Server创建Pod?
在K8S中,能否实现不通过api-Server创建Pod?
|
4月前
|
存储 API 开发工具
【Azure API 管理】API Management如何有效且快速更新呢?如对APIs/Policy等设置内容
【Azure API 管理】API Management如何有效且快速更新呢?如对APIs/Policy等设置内容
|
Kubernetes JavaScript API
使用 Kubernetes API
使用 Kubernetes API
93 0
|
Kubernetes 监控 网络协议
Kubernetes的API流量查看器-Kubeshark
Kubeshark 由 2021 年 UP9 公司开源的 K8s API 流量查看器 Mizu 发展而来,试图成为一款 K8s 全过程流量监控工具。
673 1
|
JSON Prometheus Cloud Native
|
存储 Kubernetes API
Kubernetes 集群 API 创建管理
Kubernetes 集群 API 创建管理
555 1
|
JSON Kubernetes API
Kubernetes API
Kubernetes API
189 0