使用異常偵測 API

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。
info

您用來建立及管理異常狀況快訊,以及收集異常狀況指標的大部分 API,都與固定快訊使用的 API 相同。下列警報 API 的運作方式,在固定警報和異常警報中都相同:

不過,部分 API 還有其他屬性,可用於支援異常狀況警報,包括:

設定 $ACCESS_TOKEN

以下顯示的所有 API 呼叫都會在名為 $ACCESS_TOKEN 的環境變數中傳遞憑證。如「取得 OAuth 2.0 存取權杖」一文所述,將 $ACCESS_TOKEN 設為 OAuth 2.0 存取權杖。如要瞭解這些範例中使用的 cURL 選項,請參閱「使用 cURL」。

取得快訊

根據預設,Get alerts API 會傳回所有已定義快訊的相關資訊。這個 API 現在會使用查詢參數,讓您篩選結果:

  • enabled - If true specifies to return only enabled alerts. 預設值為 false。
  • alertType - 指定要傳回的快訊類型。允許的值為 runtime (預設值) 和 cert。
  • alertSubType:指定要傳回的警示子類型。預設值為「未設定」,表示傳回所有警報子類型。指定 anomaly 即可傳回異常狀況快訊。

舉例來說,使用下列 API 呼叫,只傳回名為「myorg」的機構啟用快訊:

curl -H "Authorization: Bearer $ACCESS_TOKEN" \
'https://apimonitoring.enterprise.apigee.com/alerts?org=myorg&enabled=true'

以下呼叫只會傳回異常警報,無論是否啟用:

curl -H "Authorization: Bearer $ACCESS_TOKEN" \
'https://apimonitoring.enterprise.apigee.com/alerts?org=myorg&alertType=runtime&alertSubType=anomaly'

建立或更新異常狀況快訊

使用與目前固定警報相同的 API,建立或更新異常警報。建立或更新異常狀況快訊的 API 呼叫主體與固定快訊相同,但有以下變更:

  • 您必須新增下列屬性,指定快訊為異常快訊:

    "alertType": "runtime"
    "alertSubType": "anomaly"

    這些屬性的預設值如下:

    "alertType": "runtime"
    "alertSubType": "fixed"
  • 在 conditions 陣列中:

    • metrics 屬性只會採用下列值:

      • count - 針對 HTTP 錯誤計數發出快訊。
      • totalLatency - 針對延遲時間發出快訊。
    • threshold 屬性會採用字串而非數字。支援的值包括:slight、moderate 和 severe。
    • 系統不支援 durationSeconds 和 comparator 屬性。
  • 在 conditions 陣列的 dimensions 元素中:

    • 您必須將 proxy 屬性的值設為 ALL。
    • statusCode 屬性僅支援 4xx, 503, 504, and 5xx 值。
    • 系統不支援 developerApp、collection、faultCodeCategory、faultCodeSubCategory、faultCodeName 屬性。
  • 異常狀況快訊不支援 reportEnabled 屬性。

以下 API 呼叫範例會建立異常狀況快訊,當任何區域的 prod 環境中,所有 API Proxy 的 5xx 狀態碼發生率達到中等程度時,就會觸發快訊。觸發快訊時,系統會將通知傳送到指定的電子郵件地址:

curl 'https://apimonitoring.enterprise.apigee.com/alerts' \
 -X POST \
 -H 'Accept: application/json, text/plain, */*' -H "Content-Type: application/json" \
 -H "Authorization: Bearer $ACCESS_TOKEN" \
 -d '{
     "organization":"myorg",
     "name":"5xx Anomaly Alert",
     "description":"My 5xx alert",
     "environment":"prod",
     "enabled":true,
     "alertType": "runtime",
     "alertSubType": "anomaly",
     "conditions":[
     {
        "description":"",
        "dimensions":{
            "org":"myorg",
            "env":"prod",
            "proxy":"ALL",
            "region":"ANY",
            "statusCode":"5xx"
        },
        "metric":"count",
        "threshold": "moderate"
     }
     ],
     "notifications":[{
         "channel":"email",
         "destination":"ops@acme.com"
     }],
     "playbook":"http://acme.com/myplaybook.html",
     "throttleIntervalSeconds":3600
    }'

搭配使用 Events API 與異常狀況

使用 /metrics/events API 取得指定時間間隔內機構的所有事件。事件清單包括 Edge 偵測到的異常狀況和觸發的任何快訊。快訊可包含固定快訊和異常快訊。

根據預設,API 會傳回前一小時的所有事件。使用 from 和 to 查詢參數指定其他時間長度。from 和 to 查詢參數值,指定不同時間長度。

舉例來說,下列 API 呼叫會傳回機構 myorg 前 12 小時內的所有事件:

curl -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://apimonitoring.enterprise.apigee.com/metrics/events?org=myorg&from=-12h&to=now"

如「取得 OAuth 2.0 存取權杖」一文所述,將 $ACCESS_TOKEN 設為 OAuth 2.0 存取權杖。如要瞭解本範例中使用的 cURL 選項,請參閱「使用 cURL」。

下一個呼叫會傳回過去 24 小時內,中等門檻的所有異常事件:

curl -H "Authorization: Bearer $ACCESS_TOKEN" \
"https://apimonitoring.enterprise.apigee.com/metrics/events?org=myorg&type=anomaly&threshold=moderate&from=-24h&to=now"

這個 API 只需要 org 查詢參數。除了 /metrics/events API 文件中說明的查詢參數,這項 API 也支援下列選項,可協助偵測異常狀況:

名稱 說明 預設
threshold

依指定門檻篩選事件:slight、moderate 或 severe。

只有在設定 type=anomaly 時才能使用。

所有嚴重程度
type 依指定類型篩選事件:alert 或 anomaly。 以逗號分隔的清單形式指定多個值。 所有類型