アラートと通知の設定

Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動
情報

アラート条件は、特定のステータス コード(404 / 502 / 2xx / 4xx / 5xx など)、レイテンシ、障害コードのしきい値を定義します。これらのしきい値を超過すると、アラートがトリガーされて UI に表示されます。また、メール、Slack、PagerDuty、Webhook などの各種チャネルを通じて通知が送信されます。アラートは、環境、API プロキシ、ターゲット サービス、リージョンの各レベルで設定できます。アラートがトリガーされると、アラートと通知を追加する際に定義した方法で通知が届きます。

たとえば、本番環境にデプロイされた商品注文 API プロキシで、5 分間に 5xx エラー率が 23% を超過した場合に、アラートをトリガーし、運用チームに通知を送信できます。

次の図は、アラートが UI にどのように表示されるかを示しています。

以下は、アラートがトリガーされたときに受信するメール通知の例を示しています。

アラート通知の本文内で、次のリンクをクリックすると詳細情報が表示されます。

  • View details: アラート設定や過去 1 時間の各条件のアクティビティなどの詳細が表示されます。
  • Alert definition: アラートの定義が表示されます。
  • Alert history: 特定のアラートに関する詳細が表示されます。
  • View playbook: 推奨される対応がある場合、その内容が表示されます。
  • View API Analytics Report: アラート条件のカスタム レポートが表示されます。

次のセクションでは、アラートと通知の設定方法と管理方法について説明します。

アラートの種類の概要

API Monitoring の初期リリースでは、パターンに基づくルールを作成して、事前定義された一連の条件に基づいてアラートが発せられるタイミングを指定できます。この種類のアラートは固定アラートと呼ばれ、API Monitoring の初期リリースでサポートされていた唯一のアラートです。

たとえば次の場合、固定アラートを発せられます。

  • "mytarget1 ターゲット" から "10 分間" で "5xx エラーの発生率" が "10%" "より大きい"
  • [2xx エラーのカウント] が [us-east-1 リージョン] で [5 分間] に [50] [より小さい]
  • "p90 レイテンシ" が "myproxy1 プロシキ" で "10 分間" に "750 ミリ秒" "より大きい"

19.11.13 セキュリティ レポートのベータ版がリリースされ、新しい種類のアラートが追加されています。

  • 合計トラフィック(ベータ版)アラート。特定の期間にトラフィックが指定した割合だけ変化した場合にアラートを発するアラートの種類。
  • 異常(ベータ版)アラート。Edge がトラフィックとパフォーマンスの問題を検出するため、自分であらかじめ決めておく必要のないアラートの種類。これらの異常についてのアラートを発せられます。
  • TLS 有効期限(ベータ版)アラート。TLS 証明書の有効期限が近づいたときに通知を発行できるアラートの種類。

API Monitoring が複数の種類のアラートをサポートするようになったため、[Create Alert] ダイアログ ボックスにアラートの種類を選択するオプションが表示されます。

[Create Alert] ダイアログ ボックスに複数のアラートの種類が表示されている

アラート設定の表示

現在定義されているアラート設定を表示するには、Edge UI で [Analyze] > [Alert Rules] をクリックします。

次の図のような [Alert] ページが表示されます。

アラートメール

図でハイライト表示されているように、[Alert] ページでは以下を行うことができます。

組織に対してトリガーされたアラートの履歴を表示する

過去 24 時間に組織に対してトリガーされたアラートの履歴を表示するには、Edge UI の [Analyze] > [Alert Rules] をクリックし、[History] タブをクリックします。

[Alert History] ページが表示されます。

アラート履歴

アラートの名前をクリックすると、Investigate ダッシュボードでアラートの詳細が表示されます。アラート名全体またはアラート名の一部を検索することで、リストをフィルタリングできます。

アラートと通知の追加

アラートと通知を追加するには:

  1. Edge UI で [Analyze] > [Alert Rules] をクリックします。
  2. [+Alert] をクリックします。
  3. アラートに関する次の一般情報を入力します。
    項目 説明
    アラート名 アラートの名前。トリガー要因を表すわかりやすい名前を使用します。名前は 128 文字以下でなければなりません。
    アラートの種類 [Fixed] を選択します。アラートの種類の詳細については、アラートの種類についてをご覧ください。
    説明 アラートの説明。
    環境 プルダウン リストから環境を選択します。
    ステータス アラートを有効または無効に切り替えます。
  4. アラートをトリガーする最初の条件の指標、しきい値、分割項目を定義します。
    条件フィールド 説明
    指標

    次のいずれかの指標を選択します。

    • Status Code: 一覧から 401、404、2xx、4xx、5xx HTTP などのステータス コードを選択します。

      :

      • この API を使用すると、より幅広いステータス コードを設定できます。この API を使用して、200 ~ 299、400 ~ 599 のステータス コードと 2xx、4xx、5xx のワイルドカード値を指定します。アラートの作成をご覧ください。
      • レート制限アラート(HTTP ステータス コード 429)の場合、指標を Spike Arrest 障害コードに設定します。
      • AssignMessage ポリシーを使用して、プロキシエラーまたはターゲット エラーから HTTP レスポンス コードを書き換えることができます。API Monitoring では、書き換えられたコードは無視され、実際の HTTP レスポンス コードがログに記録されます。
    • Latency: プルダウン リストからレイテンシの値を選択します。具体的には、p50(50 パーセンタイル)、p90(90 パーセンタイル)、p95(95 パーセンタイル)、p99(99 パーセンタイル)です。たとえば、p95 を選択すると、95 パーセンタイルのレスポンス レイテンシが、以下で設定したしきい値より大きいときにトリガーされるアラートが設定されます。
    • Fault Code: リストからカテゴリ、サブカテゴリ、障害コードを選択します。あるいは、カテゴリまたはサブカテゴリ内で次のいずれかを選択します。

      • All - このカテゴリ / サブカテゴリ内のすべての障害コードが指標条件を満たす必要があります。
      • Any - このカテゴリ / サブカテゴリ内のいずれかの障害コードが指標条件を満たす必要があります。

      詳細については、障害コードのリファレンスをご覧ください。

    • Total traffic (Beta): トラフィックの増減を選択します。詳しくは、トラフィック(ベータ版)アラートをご覧ください。

    しきい値

    選択した指標のしきい値を構成します。

    • Status Code: 一定期間における百分率、カウント、または 1 秒あたりのトランザクション数(TPS)としてしきい値を設定します。
    • Latency: 一定期間における合計レイテンシ時間(ms)またはターゲット レイテンシ時間としてしきい値を選択します。この場合、トラフィックが存在する場合に 1 分ごとに更新される、指定のパーセンタイルでモニタリングされているレイテンシが、指定の期間を対象とするタイムスパンのしきい値条件を超過した場合に、アラートがトリガーされます。つまり、しきい値条件は、期間全体を対象にして集計されるわけではありません。
    • Fault Code: 一定期間における百分率、カウント、または 1 秒あたりのトランザクション数(TPS)としてしきい値を設定します。
    ディメンション [+Add Dimension] をクリックし、API プロキシ、ターゲット サービス、デベロッパー アプリ、リージョンなどの結果を返す分割項目の詳細を指定します。

    特定の分割項目を以下に設定した場合:

    • All - 分割項目内のすべてのエンティティが指標条件を満たす必要があります。[Latency] タイプの指標に対して [All] は選択できません。
    • Any - リージョンにのみ適用できます。分割項目内の 1 つのエンティティが、どれか 1 つのリージョンの指標条件を満たす必要があります。
      注: API プロキシまたはターゲット サービスでは、[Any] の機能をサポートする [Collection] を選択してください。
    • Collections - リストからコレクションを選択して、一連の API プロキシまたはターゲット サービスを指定します。この場合、コレクションのエンティティが条件を満たす必要があります。

    [Target] に分割項目を設定する場合は、ターゲット サービスまたは ServiceCallout ポリシーによって指定されているサービスを選択できます。ServiceCallout ポリシーのターゲットは、接頭辞が「sc://」の値として表示されます。たとえば、「sc://my.endpoint.net」となります。

  5. [Show condition data] をクリックして、条件に関する過去 1 時間分の最新データを表示します。
    アラート条件のしきい値を超えると、グラフのエラー率が赤色で表示されます。
    条件データを表示

    [Hide condition data] をクリックしてデータを非表示にします。

  6. [+ Add Condition] をクリックして条件を追加し、ステップ 4 と 5 を繰り返します。

    : 複数の条件を指定する場合、すべての条件が満たされたときにアラートがトリガーされます。

  7. 構成したアラート条件に基づいてカスタム レポートを作成する場合は、[Create an API analytics reports based on alert conditions] をクリックします。このオプションは、組織管理者でない場合はグレー表示されます。

    詳しくは、アラートからカスタム レポートを作成するをご覧ください。

    : カスタム レポートを管理するで説明されているように、アラートを保存した後にカスタム レポートを変更できます。

  8. [+ Notification] をクリックして、アラート通知を追加します。
    通知の詳細 説明
    チャネル 使用する通知チャネルを選択し、送信先を指定します(メール、Slack、PagerDuty、または Webhook)。
    発信先 選択したチャネルタイプに基づいて次の送信先を指定します。
    • メール - メールアドレス(joe@company.com など)
    • Slack - Slack チャネルの URL(https://hooks.slack.com/services/T00000000/B00000000/XXXXX など)
    • PagerDuty - PagerDuty コード(abcd1234efgh56789 など)
    • Webhook - Webhook URL(https://apigee.com/test-webhook など)URL に送信されるオブジェクトの説明については、Webhook オブジェクトの形式をご覧ください。

      Webhook の URL で認証情報を渡します。例: https://apigee.com/test-webhook?auth_token=1234_abcd

      Webhook オブジェクトを解析して変更や処理ができるエンドポイントに URL を指定できます。たとえば、Edge API などの API や、オブジェクトを処理できるその他のエンドポイントに URL を指定できます。

      : 通知ごとに 1 つの送信先のみ指定できます。同じチャネルタイプに複数の送信先を指定するには、通知を追加します。

  9. 通知を追加するには、ステップ 8 を繰り返します。
  10. 通知を追加した場合は、以下の項目を設定します。
    項目 説明
    ハンドブック (省略可)自由形式のテキスト フィールドで、アラートが発生したときにそのアラートを解決するために行う推奨処置の短い説明を入力します。ベスト プラクティスが掲載されている社内 wiki やコミュニティ ページのリンクも指定できます。このフィールドの情報は、通知に追加されます。このフィールドの内容は 1,500 文字以下でなければなりません。
    Throttle 通知を送信する頻度。プルダウン リストから値を選択します。有効な値は、15 分、30 分、1 時間です。
  11. [保存] をクリックします。

Webhook オブジェクトの形式

アラート通知の送信先として Webhook URL を指定すると、URL に送信されるオブジェクトの形式は次のようになります。
{
  "alertInstanceId": "event-id",
  "alertName": "name",
  "org": "org-name",
  "description": "alert-description",
  "alertId": "alert-id",
  "alertTime": "alert-timestamp",
  "thresholdViolations":{"Count0": "Duration=threshold-duration Region=region Status Code=2xx Proxy=proxy Violation=violation-description"
  },
  "thresholdViolationsFormatted": [
    {
      "metric": "count",
      "duration": "threshold-duration",
      "proxy": "proxy",
      "region": "region",
      "statusCode": "2xx",
      "violation": "violation-description"
    }
  ],
  "playbook": "playbook-link"
}

thresholdViolations プロパティと thresholdViolationsFormatted プロパティには、アラートに関する詳細が含まれています。thresholdViolations プロパティには詳細を含む単一の文字列が含まれ、thresholdViolationsFormatted にはアラートを記述するオブジェクトが含まれます。通常はデコードが容易な thresholdViolationsFormatted プロパティを使用します。

上記の例は、statusCode プロパティで示されるように、HTTP 2xx ステータス コードに基づいてトリガーするアラート指標を構成した場合の固定アラートのプロパティの内容を示しています。

これらのプロパティの内容は、アラートの種類(固定アラートまたは異常アラートなど)とアラートの特定の構成によって異なります。たとえば、障害コードに基づいて固定アラートを作成する場合、thresholdViolationsFormatted プロパティには statusCode プロパティではなく faultCode プロパティが含まれます。

次の表に、それぞれのアラートの種類の thresholdViolationsFormatted プロパティで使用できるすべてのプロパティを示します。

アラートの種類 使用可能な thresholdViolationsFormatted の内容
固定
metric, proxy, target, developerApp,
region, statusCode, faultCodeCategory, faultCodeSubCategory,
faultCode, percentile, comparisonType, thresholdValue,
triggerValue, duration, violation
合計トラフィック
metric, proxy, target, developerApp,
region, comparisonType, thresholdValue, triggerValue,
duration, violation
異常
metric, proxy, target, region,
statusCode, faultCode, percentile, sensitivity,
violation
TLS 有効期限
envName, certificateName, thresholdValue, violation

アラートからカスタム レポートを作成する

アラートからカスタム レポートを作成するには:

  1. アラートを作成する場合は、アラートと通知の追加の説明に従って、[Create an API analytics reports based on alert conditions] をクリックします。

    アラートを保存した後、UI に次のメッセージが表示されます。

    Alert alertName saved successfully. To customize the report generated, click here.

    このメッセージをクリックすると、新しいタブでレポートが開きます。関連するフィールドにはデータがすでに入力されています。デフォルトでは、カスタム レポートの名前は API Monitoring Generated alertName です。

  2. 必要に応じてカスタム レポートを編集し、[Save] をクリックします。
  3. リストのレポートの名前をクリックし、カスタム レポートを実行します。

アラート条件に基づいて作成されたカスタム レポートを管理するには:

  1. Edge UI で [Analyze] > [Alert Rules] をクリックします。
  2. [設定] タブをクリックします。
  3. [Reports] 列で、アラートに関連付けられている管理対象のカスタム レポートをクリックします。

    カスタム レポート ページが新しいタブに表示されます。[レポート] 列が空白の場合、カスタム レポートはまだ作成されていません。必要に応じて、アラートを編集してカスタム レポートを追加できます。

  4. 必要に応じてカスタム レポートを編集し、[Save] をクリックします。
  5. リストのレポートの名前をクリックし、カスタム レポートを実行します。

アラートの有効化または無効化

アラートを有効または無効にするには:

  1. Edge UI で [Analyze] > [Alert Rules] をクリックします。
  2. 有効または無効にするアラートに関連する [Status] 列で切り替えボタンをクリックします。

アラートの編集

アラートを編集するには:

  1. Edge UI で [Analyze] > [Alert Rules] をクリックします。
  2. 編集するアラートの名前をクリックします。
  3. 必要に応じてアラートを編集します。
  4. [保存] をクリックします。

アラートの削除

アラートを削除するには:

  1. Edge UI で [Analyze] > [Alert Rules] をクリックします。
  2. 削除するアラートにカーソルを合わせ、アクション メニューの をクリックします。

Apigee では、一般的な問題について通知する次のアラートの設定を推奨しています。これらのアラートの中には API の実装に固有で、特定の状況でのみ役立つものがあります。たとえば、以下に示す複数のアラートは、ServiceCallout ポリシー、または JavaCallout ポリシーを使用している場合にのみ適用されます。

アラート UI の例 API の例
すべて / いずれかの API の 5xx ステータス コード API プロキシの 5xx ステータス コードのアラートを設定する API を使用して API プロキシの 5xx ステータス コードのアラートを設定する
API プロキシの P95 レイテンシ API プロキシの P95 レイテンシのアラートを設定する API を使用して、API プロキシの P95 レイテンシ アラートを設定する
すべての API プロキシの 404(アプリケーションが見つかりません)ステータス コード すべての API プロキシの 404(アプリケーションが見つかりません)ステータス コードのアラートを設定する API を使用してすべての API プロキシの 404(アプリケーションが見つかりません)ステータス コードのアラートを設定する
API の API プロキシ カウント API の API プロキシ カウント アラートを設定する API を使用して API の API プロキシ カウントのアラートを設定する
ターゲット サービスのエラー率 ターゲット サービスのエラー率のアラートを設定する API を使用してターゲット サービスのエラーレートのアラートを設定する
ServiceCallout ポリシーのエラー率(該当する場合) ServiceCallout ポリシーのエラー率のアラートを設定する API を使用して、ServiceCallout ポリシーのエラー率のアラートを設定する
以下のような特定の障害コード:
  • API プロトコル エラー(通常は 4xx)
    • UI: [API Protocol] > [All]
    • API:
      "faultCodeCategory":"API Protocol",
      "faultCodeSubCategory":"ALL"
  • キャッチオール HTTP エラー
    • UI: [Gateway] > [Other] > [Gateway HTTPErrorResponseCode]
    • API:
      "faultCodeCategory": "Gateway",
      "faultCodeSubCategory": "Others",
      "faultCodeName": "Gateway HTTPErrorResponseCode"
  • Java サービスのコールアウト実行エラー(該当する場合)
    • UI: [Execution Policy] > [Java Callout] > [JavaCallout ExecutionFailed]
    • API:
      "faultCodeCategory": "Execution Policy",
      "faultCodeSubCategory": "Java Callout",
      "faultCodeName": "JavaCallout ExecutionFailed"
  • ノード スクリプトの実行エラー(該当する場合)
    • UI: [Execution Policy] > [Node Script] > [NodeScript ExecutionError]
    • API:
      "faultCodeCategory": "Execution Policy",
      "faultCodeSubCategory": "Node Script",
      "faultCodeName": "NodeScript ExecutionError"
  • 割り当ての違反
    • UI: [Traffic Mgmt Policy] > [Quota] > [Quota Violation]
    • API:
      "faultCodeCategory": "Traffic Mgmt Policy",
      "faultCodeSubCategory": "Quota",
      "faultCodeName": "Quota Violation"
  • セキュリティ ポリシーのエラー
    • UI: [Security policy] > [Any]
    • API:
      "faultCodeCategory": "Security Policy",
      "faultCodeName": "Any"
  • Sense のエラー(該当する場合)
    • UI: [Sense] > [Sense] > [Sense RaiseFault]
    • API:
      "faultCodeCategory": "Sense",
      "faultCodeSubCategory": "Sense",
      "faultCodeName": "Sense RaiseFault"
  • サービスのコールアウト実行エラー(該当する場合)
    • UI: [Execution Policy] > [Service Callout] > [ServiceCallout ExecutionFailed]
    • API:
      "faultCodeCategory": "Execution Policy",
      "faultCodeSubCategory": "Service Callout",
      "faultCodeName": "ServiceCallout ExecutionFailed"
  • ターゲットのエラー
    • UI: [Gateway] > [Target] > [Gateway TimeoutWithTargetOrCallout]
    • API:
      "faultCodeCategory": "Gateway",
      "faultCodeSubCategory": "Target",
      "faultCodeName": "Gateway TimeoutWithTargetOrCallout"
  • ターゲットのエラー、アクティブなターゲットなし
    • UI: [Gateway] > [Target] > [Gateway TargetServerConfiguredInLoadBalancersIsDown]
    • API:
      "faultCodeCategory": "Gateway",
      "faultCodeSubCategory": "Target",
      "faultCodeName": "Gateway TargetServerConfiguredInLoadBalancerIsDown
  • ターゲット エラー、予期しない EOF
    • UI: [Gateway] > [Target] > [Gateway UnexpectedEOFAtTarget]
    • API:
      "faultCodeCategory": "Gateway", "faultCodeSubCategory": "Target", "faultCodeName" : "Gateway UnexpectedEOFAtTarget"
  • 仮想ホストのエラー
    • UI: [Gateway] > [Virtual Host] > [VirtualHost InvalidKeystoreOrTrustStore]
    • API:
      "faultCodeCategory": "Gateway",
      "faultCodeSubCategory": "Virtual Host",
      "faultCodeName": "VirtualHost InvalidKeystoreOrTrustStore"
ポリシーの障害コードのアラートを設定する API を使用してポリシーの障害コードのアラートを設定する

API プロキシの 5xx ステータス コードのアラートを設定する

次の例は、UI を使用してアラートを設定する方法を示しています。このアラートは、hotels API プロキシのステータス コード 5xx の 1 秒あたりのトランザクション数(TPS)が、いずれかのリージョンで 10 分間に 100 を超えた場合にトリガーされます。詳しくは、アラートと通知を追加するをご覧ください。

API の使用について詳しくは、API を使用してプロキシの 5xx ステータス コードのアラートを設定するをご覧ください。

API プロキシの P95 レイテンシのアラートを設定する

次の例は、UI を使用してアラートを設定する方法を示しています。このアラートは、95 パーセンタイルのレスポンス レイテンシの合計が、いずれかのリージョンの hotels API プロキシで 5 分間に 100 ms を超えた場合にトリガーされます。詳しくは、アラートと通知を追加するをご覧ください。

API の使用について詳しくは、API を使用して API プロキシの P95 レイテンシのアラートを設定するをご覧ください。

すべての API プロキシの 404(アプリケーションが見つかりません)アラートを設定する

次の例は、UI を使用してアラートを設定する方法を示しています。このアラートは、すべての API プロキシのステータス コード 404 のパーセンテージが、いずれかのリージョンで 5 分間に 5% を超えた場合にトリガーされます。詳しくは、アラートと通知を追加するをご覧ください。

API の使用について詳しくは、API を使用してすべての API プロキシの 404(アプリケーションが見つかりません)のアラートを設定するをご覧ください。

API の API プロキシ カウント アラートを設定する

次の例は、UI を使用してアラートを設定する方法を示しています。このアラートは、API の 5xx コードのカウントが、いずれかのリージョンで 5 分間に 200 を超えた場合にトリガーされます。この例では、API は、クリティカルな API プロキシのコレクションにキャプチャされます。詳しくは以下をご覧ください。

API の使用について詳しくは、API を使用して API の API プロキシ カウントのアラートを設定するをご覧ください。

ターゲット サービスのエラー率のアラートを設定する

次の例は、UI を使用してアラートを設定する方法を示しています。このアラートは、ターゲット サービスのコード 500 の発生率が、いずれかのリージョンで 1 時間に 10% を超えた場合にトリガーされます。この例では、ターゲット サービスはクリティカルなターゲット コレクションにキャプチャされます。詳しくは以下をご覧ください。

API の使用の詳細は、API を使用して、ターゲット サービスのエラー率のアラートを設定するをご覧ください。

ServiceCallout ポリシーのエラー率のアラートを設定する

次の例は、いずれかのリージョンで ServiceCallout ポリシーによって指定されたサービスにおいて、コード 500 の発生率が 1 時間で 10% を超えるとトリガーされるアラートを UI を使用して設定する方法を示しています。詳しくは以下をご覧ください。

API の使用の詳細は、API を使用して、ServiceCallout ポリシーのエラー率のアラートを設定するをご覧ください。

ポリシーの障害コードのアラートを設定する

次の例は、すべての API の VerifyJWT ポリシーJWT AlgorithmMismatch 障害コードのカウントが 10 分間で 5 を超えた場合にトリガーされるアラートを UI を使用して設定する方法を示しています。詳しくは以下をご覧ください。

API の使用の詳細は、API を使用してポリシーの障害コードのアラートを設定するをご覧ください。