使用警報 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

    AuthorizationIBMInstanceID 是身份驗證所需的標頭。

    TeamID 是可選的。 當您指定此標頭時,您將請求限制為指定團隊可用的資料和資源。

    為了得到一個 AUTH_TOKENGUID 看,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

    AuthorizationIBMInstanceID 是身份驗證所需的標頭。

    TeamID 是可選的。 當您指定此標頭時,您將請求限制為指定團隊可用的資料和資源。

    為了得到一個 AUTH_TOKENGUID 看,IAM 令牌的標頭

  • 您可以傳遞資料來建立警報 alert.json 文件透過使用 -d

    建立警報時,請包含以下參數:typename嚴重性timespanconditionslotbyslotConditionnfilternotificationChannelIdsenabled

    有關更多信息,請參閱 警報模式

以下範例顯示了您可以設定來建立警報的請求正文參數:

{
  "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

    AuthorizationIBMInstanceID 是身份驗證所需的標頭。

    TeamID 是可選的。 當您指定此標頭時,您將請求限制為指定團隊可用的資料和資源。

    為了得到一個 AUTH_TOKENGUID 看,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

    AuthorizationIBMInstanceID 是身份驗證所需的標頭。

    TeamID 是可選的。 當您指定此標頭時,您將請求限制為指定團隊可用的資料和資源。

    為了得到一個 AUTH_TOKENGUID 看,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

    AuthorizationIBMInstanceID 是身份驗證所需的標頭。 為了得到一個 AUTH_TOKENGUID 看,IAM 令牌的標頭

  • tofrom 是您必須定義的查詢參數,以配置您想要有關警報的資訊的時間段。

有關響應格式的更多信息,請參見 警報模式

警報架構:請求正文

{
  "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
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(細繩)

定義警示的嚴重度。 有效值為 HIGHMEDIUMLOWINFO。 數值越小表示嚴重性越高。

下表顯示了必須根據嚴重性參數值設定的嚴重性狀態:

嚴重性等級值
嚴重性 嚴重性狀態
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。

類型(字串)

定義警示的類型。 有效值為MANUALBASELINEHOST_COMPARISON

設定 MANUAL 用於您想要在發送通知時控制的警報。 您必須定義確定何時觸發警報的閾值。

設定 BASELINE 用於在偵測到意外指標值時要通知的警報。 將新的指標資料與一段時間內收集的指標值進行比較。

設定 HOST_COMPARISON 用於群組中的 1 台主機報告與群組中其他主機不同的指標值時您想要通知的警報。

時間跨度(整數)

觸發警示之前必須符合警示條件的最短時間間隔(以微秒為單位)。

最小值為 60000000 微秒,即 1 分鐘。

此參數的值必須是 60000000 微秒的倍數。

版本(整數)

警報的版本。

每次更新警報時版本都會變更。

此版本用於樂觀鎖定。

查詢參數

alertId (整數)

警報ID。

從(長)

定義在請求有關已定義警報的資訊時使用的開始時間戳(以微秒為單位)。

到(長)

定義在請求有關已定義警報的資訊時所使用的結束時間戳記(以微秒為單位)。