使用警報 API 管理警報
您可以在以下位置管理警報IBM Cloud Monitoring實例透過使用Monitoring API。
若要了解如何使用cURL,請參閱 cURL指令。
獲取有關用戶警報的詳細信息
您可以使用以下內容cURL取得有關警報的資訊的命令:
curl -X GET <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"
其中
-
<REST_API_ENDPOINT>指示 REST API 呼叫的目標端點。 有關更多信息,請參閱 Monitoring REST API 端點。 例如,us-south 中可用的實例的公共端點如下:https://us-south.monitoring.cloud.ibm.com/api -
您可以使用以下方法傳遞多個標頭
-H。Authorization和IBMInstanceID是身份驗證所需的標頭。TeamID是可選的。 當您指定此標頭時,您將請求限制為指定團隊可用的資料和資源。為了得到一個
AUTH_TOKEN和GUID看,IAM 令牌的標頭。 -
<ALERT_ID>定義您要修改的警報的 ID。
例如,警報的回應正文如下所示:
{
"alert": {
"autoCreated": false,
"condition": "min(min(dallas_prod)) = 0",
"createdOn": 1551358413000,
"enabled": false,
"id": 23211,
"modifiedOn": 1551634372000,
"name": "Monitoring Uptime Alert",
"filter": "env in (\"prod\")",
"notificationChannelIds": [
4
],
"segmentBy": [
"host.hostname"
],
"segmentCondition": {
"type": "ANY"
},
"notificationCount": 60,
"rateOfChange": false,
"reNotify": false,
"severity": 0,
"severityLabel": "HIGH",
"teamId": 493,
"timespan": 60000000,
"type": "MANUAL",
"version": 9
}
}
建立警報
您可以使用以下內容cURL建立警報的命令:
curl -X POST <REST_API_ENDPOINT>/api/alerts -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json
其中
-
<REST_API_ENDPOINT>指示 REST API 呼叫的目標端點。 有關更多信息,請參閱 Monitoring REST API 端點。 例如,us-south 中可用的實例的公共端點如下:https://us-south.monitoring.cloud.ibm.com/api -
您可以使用以下方法傳遞多個標頭
-H。Authorization和IBMInstanceID是身份驗證所需的標頭。TeamID是可選的。 當您指定此標頭時,您將請求限制為指定團隊可用的資料和資源。為了得到一個
AUTH_TOKEN和GUID看,IAM 令牌的標頭。 -
您可以傳遞資料來建立警報
alert.json文件透過使用-d。建立警報時,請包含以下參數:type、name、嚴重性、timespan、condition、slotby、slotConditionn、filter、notificationChannelIds、enabled
有關更多信息,請參閱 警報模式。
以下範例顯示了您可以設定來建立警報的請求正文參數:
{
"alert": {
"version": null,
"name": "My Alert!",
"description": null,
"teamId": null,
"enabled": false,
"filter": null,
"type": "MANUAL",
"condition": "avg(timeAvg(uptime)) <= 0",
"timespan": 600000000,
"notificationChannelIds": [],
"reNotify": false,
"reNotifyMinutes": 30,
"segmentBy": [
"host.hostName"
],
"segmentCondition": {
"type": "ANY"
},
"severityLabel": "LOW"
}
}
更新警示
若要更新現有警報,您需要該警報的 ID。
您可以使用以下內容cURL更新警報的命令:
curl -X PUT <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json" -d @alert.json
其中
-
<REST_API_ENDPOINT>指示 REST API 呼叫的目標端點。 有關更多信息,請參閱 Monitoring REST API 端點。 例如,us-south 中可用的實例的公共端點如下:https://us-south.monitoring.cloud.ibm.com/api -
您可以使用以下方法傳遞多個標頭
-H。Authorization和IBMInstanceID是身份驗證所需的標頭。TeamID是可選的。 當您指定此標頭時,您將請求限制為指定團隊可用的資料和資源。為了得到一個
AUTH_TOKEN和GUID看,IAM 令牌的標頭。 -
<ALERT_ID>定義您要修改的警報的 ID。 -
您可以傳遞資料來建立警報
alert.json文件透過使用-d。有關更多信息,請參閱 警報模式。
以下範例顯示了您可以設定用於更新警報的請求正文參數:
{
"alert": {
"type": "MANUAL",
"id": 23212,
"version": 10,
"name": "CheckNginxConnections",
"description": "Active connections of nginx server",
"enabled": false,
"severity": 2,
"timespan": 1000000,
"condition": "avg(avg(nginx.net.connections)) > 1000",
"segmentBy": [
"host.hostName"
],
"segmentCondition": {
"type": "ANY"
},
"notificationChannelIds": [
2
]
}
}
刪除警示
若要刪除現有警報,您需要該警報的 ID。
您可以使用以下內容cURL刪除警報的命令:
curl -X DELETE <REST_API_ENDPOINT>/api/alerts/<ALERT_ID> -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "TeamID: $TEAM_ID" -H "content-type: application/json"
其中
-
<REST_API_ENDPOINT>指示 REST API 呼叫的目標端點。 有關更多信息,請參閱 Monitoring REST API 端點。 例如,us-south 中可用的實例的公共端點如下:https://us-south.monitoring.cloud.ibm.com/api -
您可以使用以下方法傳遞多個標頭
-H。Authorization和IBMInstanceID是身份驗證所需的標頭。TeamID是可選的。 當您指定此標頭時,您將請求限制為指定團隊可用的資料和資源。為了得到一個
AUTH_TOKEN和GUID看,IAM 令牌的標頭。 -
<ALERT_ID>定義您要刪除的警報的 ID。
獲取所有用戶警報
您可以使用以下內容cURL命令獲取有關所有警報的資訊:
curl -X GET <REST_API_ENDPOINT>/api/alerts?from=<START_TIMESTAMP>&to=<END_TIMESTAMP> -H "Authorization: Bearer $AUTH_TOKEN" -H "IBMInstanceID: $GUID"
其中
-
<REST_API_ENDPOINT>指示 REST API 呼叫的目標端點。 有關更多信息,請參閱 Monitoring REST API 端點。 例如,us-south 中可用的實例的公共端點如下:https://us-south.monitoring.cloud.ibm.com/api -
您可以使用以下方法傳遞多個標頭
-H。Authorization和IBMInstanceID是身份驗證所需的標頭。 為了得到一個AUTH_TOKEN和GUID看,IAM 令牌的標頭。 -
to和from是您必須定義的查詢參數,以配置您想要有關警報的資訊的時間段。
有關響應格式的更多信息,請參見 警報模式。
警報架構:請求正文
{
"alerts": [
{
"alert": {
"version": null,
"name": "",
"description": null,
"teamId": null,
"enabled": false,
"filter": null,
"type": "",
"condition": "",
"timespan": 600000000,
"notificationChannelIds": [],
"reNotify": false,
"reNotifyMinutes": 30,
"segmentBy": [],
"segmentCondition": {
"type": ""
},
"severityLabel": ""
}
}
]
}
警報架構:響應正文
{
"alerts": [
{
"alert": {
"autoCreated": false,
"condition": "",
"createdOn": 1551358413000,
"enabled": false,
"id": 23211,
"modifiedOn": 1551634372000,
"name": "",
"filter": "",
"notificationChannelIds": [],
"segmentBy": [],
"segmentCondition": {
"type": "ANY"
},
"notificationCount": 60,
"rateOfChange": false,
"reNotify": false,
"severity": 0,
"severityLabel": "",
"teamId": 493,
"timespan": 60000000,
"type": "",
"version": 9
}
}
]
}
錯誤回應碼
下表顯示了常見的錯誤回應代碼:
| RC | 說明 |
|---|---|
400 |
警報配置無效。 |
401 |
未獲授權的存取。 |
404 |
無法辨識警報 ID。 |
409 |
存在版本不符的情況。 |
422 |
警報名稱無效。 該名稱已被使用。 |
主體參數
id(整數)
警報ID。
條件(字串)
定義針對警示配置的臨界值。 此參數是必需的 MANUAL 僅警報。
例如,您可以定義一個條件,如下所示:avg(timeAvg(uptime)) <= 0
createdOn(整數)
定義警報的建立時間(以毫秒為單位)。
此參數傳回建立警報時的 Unix 時間戳記。
描述(字串)
此參數描述了警報。
當您在以下位置查看警報時,該描述可用警報監控 UI 部分,它包含在通知電子郵件中。
啟用(布林值)
定義警報的狀態。
預設情況下,此參數設定為 true 並且警報在建立時啟用。
過濾器(字串)
透過配置分段來定義警報的範圍。
當此欄位為空時,將包含所有指標來源。 範圍設定為一切。
例如,您可以定義以下篩選器:
kubernetes.namespace.name='production'
container.image='nginx'*.
kubernetes.namespace.name='production' and container.image='nginx'*.
名稱(字串)
警示的名稱。 必須是唯一的。
此名稱用於識別警報警報監控 UI 部分,它包含在通知電子郵件中。
modifiedOn(整數)
定義上次修改警報的時間(以毫秒為單位)。
此參數定義上次修改警報時的 Unix 時間戳記。
notificationChannelIds (數組)
列出配置為在觸發警報時發出通知的通知通道。
有效選項是 EMAIL,PAGER_DUTY,WEBHOOK,VICTOROPS,和 SLACK。
"notificationChannelIds": [
"EMAIL",
"WEBHOOK"
]
notificationCount(整數)
定義過去 2 週內發送的警報通知數量。
reNotify(布林值)
定義您是否希望在警報條件得到確認和解決之前收到後續通知。
預設情況下,未啟用後續通知,此欄位設定為 false。
reNotifyMinutes (整數)
定義您希望接收未解決警報的通知的頻率。
您指定發送提醒之前的分鐘數。
嚴重性(整數)
定義系統日誌編碼的警報嚴重性。
下表列出了您可以設定的值:
| 嚴重性 | 資訊 |
|---|---|
0 |
emergency |
1 |
alert |
2 |
critical |
3 |
error |
4 |
warning |
5 |
notice |
6 |
informational |
7 |
debug |
severityLabel(細繩)
定義警示的嚴重度。 有效值為 HIGH、MEDIUM、LOW 和 INFO。 數值越小表示嚴重性越高。
下表顯示了必須根據嚴重性參數值設定的嚴重性狀態:
| 嚴重性 | 嚴重性狀態 |
|---|---|
0 |
HIGH |
1 |
HIGH |
2 |
MEDIUM |
3 |
MEDIUM |
4 |
LOW |
5 |
LOW |
6 |
INFO |
7 |
INFO |
segmentBy (字串陣列)
定義附加分段標準。
例如,您可以以下方式對 CPU 警報進行分段 ['host.mac', 'proc.name'] 因此,警報可以報告您在監控實例中獲取資料的任何電腦中的任何進程。
segmentCondition(細繩)
定義何時為segmentBy參數中指定的每個受監控實體觸發警報。 此參數是必需的 MANUAL 僅警報。
有效值如下:
- 任何:當至少一個受監控實體滿足條件時觸發警報。
- 全部:當所有受監控實體滿足條件時觸發警報。
teamId (細繩)
定義擁有警報的團隊的 GUID。
類型(字串)
定義警示的類型。 有效值為MANUAL、BASELINE和HOST_COMPARISON。
設定 MANUAL 用於您想要在發送通知時控制的警報。 您必須定義確定何時觸發警報的閾值。
設定 BASELINE 用於在偵測到意外指標值時要通知的警報。 將新的指標資料與一段時間內收集的指標值進行比較。
設定 HOST_COMPARISON 用於群組中的 1 台主機報告與群組中其他主機不同的指標值時您想要通知的警報。
時間跨度(整數)
觸發警示之前必須符合警示條件的最短時間間隔(以微秒為單位)。
最小值為 60000000 微秒,即 1 分鐘。
此參數的值必須是 60000000 微秒的倍數。
版本(整數)
警報的版本。
每次更新警報時版本都會變更。
此版本用於樂觀鎖定。
查詢參數
alertId (整數)
警報ID。
從(長)
定義在請求有關已定義警報的資訊時使用的開始時間戳(以微秒為單位)。
到(長)
定義在請求有關已定義警報的資訊時所使用的結束時間戳記(以微秒為單位)。