アラートと通知を設定する

現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください
情報

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

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

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

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

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

  • View details: アラート設定や過去 1 時間の各条件のアクティビティなどの詳細が表示されます。
  • アラート定義: アラートの定義を表示します。
  • アラート履歴: 特定のアラートに関する詳細情報を表示できます。
  • 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] タブをクリックします。

[アラート履歴] ページが表示されます。

アラート履歴

アラートの名前をクリックすると、[Investigate ダッシュボード] にアラートの詳細が表示されます。アラート名のすべてまたは一部を検索して、リストをフィルタできます。

アラートと通知の追加

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

  1. Edge UI で [Analyze] > [アラートルール] をクリックします。
  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 - このカテゴリ / サブカテゴリ内のいずれかの障害コードが指標条件を満たす必要があります。

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

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

    しきい値

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

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

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

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

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

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

    [条件データを非表示] をクリックしてデータを非表示にします。

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

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

  7. 構成したアラート条件に基づいてカスタム レポートを作成する場合は、[Create an API analytics report 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. 有効または無効にするアラートに関連付けられた [ステータス] 列の切り替えボタンをクリックします。

アラートの編集

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

  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(Application Not Found)ステータス コードのアラートを設定する
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 を使用してアラートを設定する方法を示しています。このアラートは、いずれかのリージョンで、Hotel API プロキシのステータス コードの 5xx ステータス コードの 1 秒あたりのトランザクション数(TPS)が 100 分を超えたときにトリガーされます。詳しくは、アラートと通知を追加するをご覧ください。

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

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

次の例は、UI を使用してアラートを設定する方法を示しています。このアラートは、いずれかのリージョンの Hotels API プロキシで、95 パーセンタイルのレスポンス レイテンシの合計が 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 を使用してポリシーの障害コードのアラートを設定するをご覧ください。