現在、Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントをご確認ください。 情報
API の 5xx 問題のトラブルシューティング方法を示すサンプル シナリオを確認します。
# | ステップ | 説明 |
---|---|---|
1 | 最近の API トラフィックをモニタリングする | 過去 1 時間にトラフィックが発生したすべての API プロキシとターゲットの最近の API Monitoring データを表示します。エラー率(%)が高い 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 Monitoring データの履歴ビューにアクセスするには:
- [Recent] ダッシュボードの右ペインで、 > [View in Timeline] を選択して、タイムライン ダッシュボードにアクセスします。または、Edge UI で [Analyze] > [API Monitoring] > [タイムライン] をクリックします。
- 経時的な API プロキシまたはターゲットの傾向を表示します。過去 7 日間、傾向が一貫していることがわかります。
この手順の詳細については、API モニタリング データの傾向を特定するをご覧ください。
ステップ 3: 5xx 問題を調査する
Apigee には、問題の診断に役立つ一連の障害コードが用意されています。通常、5xx ステータス コードは 1 つ以上の障害コードを使用して分類できます。
5xx 問題を調査するには:
- [タイムライン] ダッシュボードの右側のペインで > [調査で表示] を選択し、[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 ポリシー違反の一般的なランタイム エラーコードです。
[Suspected cause] パネルのすぐ下にある [Distribution by Developer App] で、エラー率が最も高いデベロッパー アプリを特定します。
この手順の詳細については、問題を特定するをご覧ください。
ステップ 4: 5xx アラートを設定する
[Investigate details] ペインで選択したコンテキストに基づいて、5xx ステータス コードの数が特定のしきい値を超えたときに通知されるようにアラートを設定します。
[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 の生成: 5xx アラート)をクリックします。
アラートの作成時に表示される通知内をクリックします。次に例を示します。
次のディメンションを追加します。
- デベロッパー アプリ
- クライアント ID
- クライアント IP アドレス
エラー率が高い特定のデベロッパー アプリに基づいてレポートを表示するには、次のようなフィルタを追加します。
and (developer_app eq 'perfBenchmarkApp0')
注: この場合、ディメンションのリストから [デベロッパー アプリ] を削除してください。
[保存] をクリックします。
レポートを実行して、5xx ステータス コードの原因となっているデベロッパー アプリとクライアントの詳細を確認します。
この手順の詳細については、カスタム レポートを作成するをご覧ください。
ステップ 6: API プロキシをコレクションにグループ化する
問題を迅速に診断できるように、コレクションを作成して API プロキシをグループ化し、グループのすべてのメンバーに適切なアラートしきい値を設定します。
- Edge UI で [Analyze] > [API Monitoring] > [Collections] を選択して、[Collections] ダッシュボードを表示します。
- [+ Collection] をクリックします。
- [プロキシ] を選択します。
- 環境プルダウンから [prod] を選択します。
- [次へ] をクリックします。
- コレクション ダイアログのフィールドに入力します。
- [保存] をクリックします。
次に、ステップ 4 と同様にアラートを設定し、上で定義したコレクションにディメンションを設定します。
この手順について詳しくは、コレクションを管理するをご覧ください。
ステップ 7: 5xx 問題を解決する
適切な措置を講じて 5xx 問題を解決します。たとえば、診断に基づき、次のいずれかのタスクを実行します。
- Apigee Sense を使用して、リクエストの急増が疑わしいかどうかを判断し、カスタム レポートで特定されたクライアント IP アドレスをブロックするかどうかを決定します。
- 割り当てポリシーを追加して、特定の期間にデベロッパー アプリが API プロキシに対して行える接続数を制限します。
- API を収益化し、一定の呼び出し回数を超えた使用に対してデベロッパーに料金を請求する。