

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 警报 API
<a name="Grafana-API-Alerting"></a>

**注意**  
本节仅适用于经典警报。有关更多信息，请参阅 [Grafana Alerting](alerts-overview.md)。

使用首选项 API 获取有关经典控制面板警报及其状态的信息。但是，不能使用此 API 来修改警报。要创建新警报或修改警报，您需要更新包含警报的控制面板 JSON。

**注意**  
要对 Amazon Managed Grafana 工作区使用 Grafana API，您必须拥有有效的 Grafana API 令牌。您可以将其包含在 API 请求的 `Authorization` 字段中。有关如何创建令牌对 API 调用进行身份验证的信息，请参阅 [使用令牌进行身份验证](authenticating-grafana-apis.md)。

## 获取警报
<a name="Grafana-API-Alerting-get"></a>

```
GET /api/alerts
```

**示例请求**

```
GET /api/alerts HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**Querystring 参数：**

这些参数用作 querystring 参数。例如：`/api/alerts?dashboardId=1`
+ **dashboardId**：限制对指定控制面板值中的警报的响应。您可以指定多个控制面板。例如，`dashboardId=23&dashboardId=35`
+ **panelId**：限制对控制面板上指定面板的警报的响应。
+ **query**：限制对其名称类似于此值的警报的响应。
+ **state**：返回具有以下一种或多种警报状态的警报：`ALL`、`alerting`、`ok`、`no_data`、`paused` 或 `pending`。要指定多个状态，请使用以下格式：`?state=paused&state=alerting`
+ **限制**：将响应限制为 X 个警报。
+ **folderId**：限制对指定文件夹中控制面板警报的响应。您可以指定多个文件夹。例如，`folderId=23&folderId=35`
+ **dashboardQuery**：限制对控制面板名称类似于此值的警报的响应。
+ **dashboardTag**：限制带有指定标签的控制面板的响应警报。要对多个标签进行 "AND" 筛选，请多次指定标签参数。例如 `dashboardTag=tag1&dashboardTag=tag2`。请注意，这些是 Grafana 标签，而不是标签。 AWS 

**响应示例**

```
HTTP/1.1 200
Content-Type: application/json

[
  {
    "id": 1,
    "dashboardId": 1,
    "dashboardUId": "ABcdEFghij"
    "dashboardSlug": "sensors",
    "panelId": 1,
    "name": "fire place sensor",
    "state": "alerting",
    "newStateDate": "2018-05-14T05:55:20+02:00",
    "evalDate": "0001-01-01T00:00:00Z",
    "evalData": null,
    "executionError": "",
    "url": "http://grafana.com/dashboard/db/sensors"
  }
]
```

## 按 ID 获取警报
<a name="Grafana-API-Alerting-getbyId"></a>

```
GET /api/alerts/:id
```

**示例请求**

```
GET /api/alerts/1 HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk
```

**响应示例**

```
HTTP/1.1 200
Content-Type: application/json

{
  "id": 1,
  "dashboardId": 1,
  "dashboardUId": "ABcdEFghij"
  "dashboardSlug": "sensors",
  "panelId": 1,
  "name": "fire place sensor",
  "state": "alerting",
  "message": "Someone is trying to break in through the fire place",
  "newStateDate": "2018-05-14T05:55:20+02:00",
  "evalDate": "0001-01-01T00:00:00Z",
  "evalData": "evalMatches": [
    {
      "metric": "movement",
      "tags": {
        "name": "fireplace_chimney"
      },
      "value": 98.765
    }
  ],
  "executionError": "",
  "url": "http://grafana.com/dashboard/db/sensors"
}
```

**重要**  
当且仅当警报状态发生变化时，`evalMatches` 数据才会缓存到数据库中。如果来自一台服务器的数据首先触发警报，而在看到该服务器离开警报状态之前，另一台服务器也进入了触发警报的状态，则第二台服务器在 `evalMatches` 数据中将不可见。

## 按 ID 暂停警报
<a name="Grafana-API-Alerting-pausebyId"></a>

```
POST /api/alerts/:id/pause
```

**示例请求**

```
POST /api/alerts/1/pause HTTP/1.1
Accept: application/json
Content-Type: application/json
Authorization: Bearer eyJrIjoiT0tTcG1pUlY2RnVKZTFVaDFsNFZXdE9ZWmNrMkZYbk

{
  "paused": true
}
```

`:id` 查询参数是要暂停或取消暂停的警报的 ID。`paused` 为 `true` 时将暂停警报，为 `false` 时将取消暂停警报。

**响应示例**

```
HTTP/1.1 200
Content-Type: application/json

{
  "alertId": 1,
  "state":   "Paused",
  "message": "alert paused"
}
```