Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご覧ください。
API で 5xx の問題を解決する方法を示すサンプル シナリオをご覧ください。
# | ステップ | 説明 |
---|---|---|
1 | 最新の API トラフィックのモニタリング | 過去 1 時間にトラフィックがいたすべての API プロキシとターゲットの最近の API モニタリング データを表示します。エラー率(%)が高い API プロキシまたはターゲットをドリルダウンします。 |
2 | API モニタリング データのトレンドを特定する | より広範な視点を得るために、過去 3 か月までの API モニタリング データの履歴ビューにアクセスします。 |
3 | 5xx の問題の調査 | 経時的に相対量が最も多く発生している障害コードを確認し、5xx 問題の原因の原因をさらに調査します。(通常、5xx ステータス コードは 1 つ以上の障害コードを使用して分類できます)。 |
4 | 5xx アラートを設定する | 5xx ステータス コードの数が特定のしきい値を超えたときに通知するアラートを設定します。 |
5 | クライアントの詳細を含むカスタム レポートを生成する(省略可) | 必要に応じて、カスタム レポートを生成して、5xx エラーの原因となっているクライアントの詳細を特定します。 注: カスタム レポートを生成できるのは、組織管理者のみです。 |
6 | API プロキシをコレクションにグループ化する | 問題を迅速に診断できるように、API プロキシをグループ化するコレクションを作成し、グループのすべてのメンバーに適切なアラートしきい値を設定します。
|
7 | 5xx 問題を解決する | 調査と診断に基づいて適切な手順を実施し、5xx の問題を解決します。 |
ステップ 1: 最近の API トラフィックを監視する
過去 1 時間にトラフィックが発生した API プロキシとターゲットの API モニタリング データを表示するには:
- Edge UI で [Analyze] > [API Monitoring] > [Recent] を選択して、[Recent] ダッシュボードにアクセスします。
過去 1 時間でエラー率(%)が高い API プロキシとターゲットに注目してください。
エラー率(%)が高い API プロキシまたはターゲットをクリックして、右側のペインに詳細を表示します。この例では、5xx エラーの割合が高いことがわかります。
この手順の詳細については、最近の API トラフィックのモニタリングをご覧ください。
ステップ 2: API モニタリング データのトレンドを特定する
過去 3 か月間にトラフィックが発生した API プロキシとターゲットの API モニタリング データの履歴ビューにアクセスするには:
- [Recent] ダッシュボードの右ペインで、
> [View in Timeline] を選択して、タイムライン ダッシュボードにアクセスします。または、Edge UI で [Analyze] > [API Monitoring] > [Timeline] をクリックします。
- API プロキシまたはターゲットの傾向の推移を表示します。傾向は過去 7 日間にわたり一貫しています。
この手順の詳細については、API モニタリング データの傾向を特定するをご覧ください。
ステップ 3: 5xx の問題を調査する
Apigee には、問題の診断に役立つ一連のエラーコードが用意されています。通常、5xx ステータス コードは、1 つ以上の障害コードを使用して分類できます。
5xx の問題を調査するには:
- [Timeline] ダッシュボードの右ペインで、
> [View in Investigate] を選択して [Investigate] ダッシュボードにアクセスします。または、Edge UI で [Analyze] > [API Monitoring] > [Investigate] をクリックします。
[Investigate] ダッシュボードを使用すると、障害コードや時間などの指標間のリレーショナル アクティビティを比較できます。 障害コードと時間マトリックスの比較を確認して、過去 1 時間の障害コード アクティビティを表示する。ブロックのカラー シェーディングに基づいて、相対的なボリュームが最も多い障害コードを確認できます。ブロックの色が濃くなるほど、相対的なボリュームが大きくなります。
たとえば、
policies.ratelimit.SpikeArrestViolation
とpolicies.ratelimit.QuotaViolation
のエラーコードは、次のマトリックスで相対的なボリュームを示します。policies.ratelimit.SpikeArrestViolation
列の最も暗いブロック(最初のブロック)をクリックすると、右側のペインに詳細が表示されます。
障害の原因が perfBenchmark_invalid_v1 API プロキシであり、HTTP ステータス コードが 500 であることがわかります。500 ステータス コードは、Spike Arrest ポリシー違反で一般的なランタイム エラーコードです。
[原因の疑い] パネルのすぐ下にある [デベロッパー別分布] アプリを表示して、エラー率が最も高いデベロッパー アプリを特定します。
この手順について詳しくは、問題を特定するをご覧ください。
ステップ 4: 5xx アラートを設定する
5xx ステータス コードの数が特定のしきい値を超えたときに通知を受け取るには、[Investigate details] ペインで選択したコンテキストに基づいてアラートを設定します。
[Investigate] ダッシュボードの右ペインで、
> [Create Alert] を選択します。
アラート ダイアログのフィールドに入力します。条件フィールドには、現在のコンテキストからのデータがあらかじめ入力されています。例:
[保存] をクリックします。
今後、perfBenchmark_invalid_v1 API プロキシの 5xx エラー率が 5 分間で 5% を超えると、指定したメールアドレスに通知が送信され、UI に視覚的なアラートが表示されます。次に例を示します。
この手順について詳しくは、アラートと通知を設定するをご覧ください。
ステップ 5: クライアントの詳細を含むカスタム レポートを生成する(省略可)
必要に応じて、カスタム レポートを生成して、5xx エラーの原因となっているクライアントに関する詳細情報を特定します。
レポートページでは、アラートに基づいて作成されたカスタム レポートに「API Monitoring Generated: alert-name
」という形式の名前が付けられます。
アラートを設定する際に作成したカスタム レポートには、次のいずれかの方法でアクセスできます。
左側のナビゲーション バーで [Analyze] > [Custom Reports] > [Reports] を選択して [Reports] ページを表示します。リスト内のレポートの名前をクリックします: API Monitoring Generated: 5xx Alert
アラートの作成時に表示される通知内をクリックします。例:
次のディメンションを追加します。
- デベロッパー アプリ
- クライアント ID
- クライアント IP アドレス
エラー率の高い特定のデベロッパー アプリに基づくレポートを表示するには、次のようなフィルタを追加します。
and (developer_app eq 'perfBenchmarkApp0')
注: この場合、ディメンションのリストからデベロッパー アプリを削除してください。
[保存] をクリックします。
レポートを実行して、5xx ステータス コードをトリガーしたデベロッパー アプリとクライアントの詳細を表示します。
この手順について詳しくは、カスタム レポートを作成するをご覧ください。
ステップ 6: API プロキシをコレクションにまとめる
問題を迅速に診断できるように、API プロキシをグループ化するコレクションを作成し、グループのすべてのメンバーに適切なアラートしきい値を設定します。
- コレクション ダッシュボードを表示するには、Edge UI で [Analyze] > [API Monitoring] > [Collections] を選択します。
- [+ コレクション] をクリックします。
- [プロキシ] を選択します。
- 環境のプルダウンから [prod] を選択します。
- [Next] をクリックします。
- コレクション ダイアログのフィールドに入力します。
- [保存] をクリックします。
次に、ステップ 4 と同様にアラートを設定し、上で定義したコレクションにディメンションを設定します。
この手順の詳細については、コレクションの管理をご覧ください。
ステップ 7: 5xx の問題を解決する
5xx の問題を解決するには、適切な措置を講じてください。たとえば、診断に基づいて、次のいずれかのタスクを実行できます。
- Apigee Sense を使用して、リクエストの急増が不審かどうかを判断し、カスタム レポートで特定されたクライアント IP アドレスをブロックするかどうかを決定します。
- 割り当てポリシーを追加して、特定の期間にデベロッパー アプリが API プロキシに接続できる接続数を制限します。
- API を収益化して、特定の呼び出し数以上に対して課金します。