[TOC]
## **API Version**
AlertManager有两套API,v1与v2,不过两套API的内部逻辑基本是一致的,调用哪套都没有关系。v1没有相关的文档,不过我们可以找到v2的相关文档。
API-v2的swagger文件的链接为:
https://github.com/prometheus/alertmanager/blob/master/api/v2/openapi.yaml
把这个文件的内容拷贝到 https://editor.swagger.io 里面,便可以查看API。下面罗列了v2版本的所有API:
```
# Alert
GET /api/v2/alerts
POST /api/v2/alerts
# AlertGroup
GET /api/v2/alerts/groups
# General
GET /api/v2/status
# Receiver
GET /api/v2/receivers
# Silence
GET /api/v2/silences
POST /api/v2/silences
GET /api/v2/silence/{silenceID}
DELETE /api/v2/silence/{silenceID}
```
其中最重要的是Alert与AlertGroup的那三个API,接下来我们详细地讲解一下
## **`POST /api/v2/alerts`**
Body参数示例如下:
```
[
{
"labels": {"label": "value", ...},
"annotations": {"label": "value", ...},
"generatorURL": "string",
"startsAt": "2020-01-01T00:00:00.000+08:00", # optional
"endsAt": "2020-01-01T01:00:00.000+08:00" # optional
},
...
]
```
Body参数是一个数组,里面是一个个的告警。其中startsAt与endsAt是可选参数,且格式必须是上面的那种,不能是时间戳。
## **`GET /api/v2/alerts`**
Query参数如下,以下参数用来过滤告警
| 参数名 | 类型 | 默认值 | 是否必须 | 其他说明 |
| --- | --- | --- | --- | --- |
| active | bool | true | optional | - |
| silenced | bool | true | optional | - |
| inhibited | bool | true | optional | - |
| unprocessed | bool | true | optional | - |
| filter | array[string] | 无 | optional | - |
| receiver | string| 无 | optional | - |
其返回值如下:
```
[
{
"labels": {"label": "value", ...},
"annotations": {"label": "value", ...},
"generatorURL": "string",
"startsAt": "2020-01-01T00:00:00.000+08:00",
"endsAt": "2020-01-01T01:00:00.000+08:00",
"updatedAt": "2020-01-01T01:00:00.000+08:00",
"fingerprint": "string"
"receivers": [{"name": "string"}, ...],
"status": {
"state": "active", # active, unprocessed, ...
"silencedBy": ["string", ...],
"inhibitedBy": ["string", ...]
},
...
]
```
## **`GET /api/v2/alerts/groups`**
Query参数如下,以下参数用来过滤告警
| 参数名 | 类型 | 默认值 | 是否必须 | 其他说明 |
| --- | --- | --- | --- | --- |
| active | bool | true | optional | - |
| silenced | bool | true | optional | - |
| inhibited | bool | true | optional | - |
| unprocessed | bool | true | optional | - |
| filter | array[string] | 无 | optional | - |
| receiver | string| 无 | optional | - |
其返回值如下:
```
[
{
"labels": {"label": "value", ...},
"receiver": {"name": "string"}, # 注意与alert的receivers的区别
"alerts": [alert1, alert2, ...] # alert的Json结构与 `GET /api/v2/alerts` 返回值中的结构一致
},
...
]
```
- (一)快速开始
- 安装Prometheus
- 使用NodeExporter采集数据
- AlertManager进行告警
- Grafana数据可视化
- (二)探索PromQL
- 理解时间序列
- Metrics类型
- 初识PromQL
- PromQL操作符
- PromQL内置函数
- rate和irate
- 常见指标的PromQL
- 主机CPU使用率
- 主机内存使用率
- 主机磁盘使用率
- 主机磁盘IO
- 主机网络IO
- API的响应时间
- (三)Promtheus告警处理
- 自定义告警规则
- 示例-对主机进行监控告警
- 部署AlertManager
- 告警的路由与分组
- 使用Receiver接收告警信息
- 集成邮件系统
- 屏蔽告警通知
- 扩展阅读
- AlertManager的API
- Prometheus发送告警机制
- 实践:接收Prometheus的告警
- 实践:AlertManager
- (四)监控Kubernetes集群
- 部署Prometheus
- Kubernetes下的服务发现
- 监控Kubernetes集群
- 监控Kubelet的运行状态
- 监控Pod的资源(cadvisor)
- 监控K8s主机的资源
- KubeStateMetrics
- K8S及ETCD常见监控指标
- ETCD监控指标
- Kube-apiserver监控指标
- (五)其他
- Prometheus的relabel-config
- Target的Endpoint
- Prometheus的其他配置
- (六)BlackboxExporter
- 安装
- BlackboxExporter的应用场景
- 在Promtheus中使用BlackboxExporter
- 参考
