Apigee Edge のドキュメントを表示しています。
Apigee X のドキュメントに移動します。 情報
動画
503 エラーの詳細については、次の動画をご覧ください。
| 動画 | 説明 |
|---|---|
| 503 Service Unavailable - NoActiveTargets のトラブルシューティングと解決 | 以下の内容を学習します。
|
症状
クライアント アプリケーションが、API プロキシ リクエストに対して、HTTP レスポンス ステータス コード 503、メッセージ Service Unavailable、エラーコード NoActiveTargets を受け取ります。
エラー メッセージ
次のエラー レスポンスが表示されます。
HTTP/1.1 503 Service Unavailable
HTTP レスポンスに次のエラー メッセージが表示されます。
{
"fault": {
"faultstring": "The Service is temporarily unavailable",
"detail": {
"errorcode": "messaging.adaptors.http.flow.NoActiveTargets"
}
}
}
考えられる原因
通常、API プロキシのターゲット エンドポイント構成で 1 つ以上のターゲット サーバーを使用すると、エラーコード NoActiveTargets を含む HTTP レスポンス 503 Service Unavailable が返されます。
次の表に、エラーコード NoActiveTargets を含む 503 Service Unavailable レスポンスで考えられる原因を示します。
| 原因 | 説明 | トラブルシューティング手順を実施できるユーザー |
|---|---|---|
| ターゲット サーバーが無効になっている | ターゲット エンドポイント構成で指定されたターゲット サーバーが無効になっています。 | Edge Public Cloud と Private Cloud のユーザー |
| DNS の解決が正しくないために発生する接続エラー | ターゲット サーバーの DNS の解決で、接続エラーにつながる IP アドレスの不具合が生じた。 | Edge Private Cloud ユーザー |
| 接続エラー | ネットワークまたは接続性の問題により、クライアントがサーバーに接続できなくなっています。 | Edge Private Cloud ユーザー |
| ターゲット ホストのエイリアスが正しくない | 指定されたターゲット サーバーのホストが正しくないか、不要な文字(スペースなど)が含まれている。 | Edge Public Cloud と Private Cloud のユーザー |
| SSL ハンドシェイクの失敗 | クライアントとサーバーの間で TLS/SSL handshake が失敗しました。 | Edge Public Cloud と Private Cloud のユーザー |
| ヘルスチェックの失敗 | ターゲット サーバーの健全性をチェックするように構成されたヘルスチェックが、なんらかの理由で失敗することがあります。 | Edge Private Cloud ユーザー |
原因: ターゲット サーバーが無効になっている
ターゲット エンドポイント構成で指定されたすべてのターゲット サーバーが無効になっている場合は、エラーコード NoActiveTargets を含む 503 Service Unavailable レスポンスが返されます。
診断
- 次のいずれかの方法で、失敗した API プロキシの特定のターゲット エンドポイント構成で使用されているターゲット サーバーの名前を特定します。
- ターゲット エンドポイントが 1 つの場合は、そのターゲット エンドポイントを確認します。
- 複数のターゲット エンドポイントがあり、どのエンドポイントでターゲット サーバーが無効になっているかわからない場合は、次の手順を行います。
- トレース セッションを有効にして API 呼び出しを行い、503 Service Unavailable の問題を再現します。
- トレースから [Target Request Flow Started] に移動し、次のようにターゲット エンドポイントの名前を特定します。
- ターゲット エンドポイントを特定したら、次の例に示すように、ターゲット エンドポイント構成で使用されているターゲット サーバー名を取得します。
<TargetEndpoint name="default">> <HTTPTargetConnection> <LoadBalancer> <Server name="demo-target" /> </LoadBalancer> <Path>/test</Path> </HTTPTargetConnection> </TargetEndpoint>上記の例では、demo-target という名前の単一のターゲット サーバーがあります。
- Edge UI または Edge API 呼び出しを使用して、ターゲット エンドポイントで使用されている各ターゲット サーバーの定義を取得します。
Edge UI
Edge UI を使用して定義を取得するには:
- [Admin] > [Environments] > [Target Servers] に移動します。
- エラーが発生している特定の環境を選択します。
- 特定のターゲット サーバー名を検索して、ターゲット サーバーの定義を取得します。
たとえば、ターゲット サーバー名
demo-targetを入力すると、次のように定義が表示されます。
ターゲット サーバー demo-target には、ホスト エイリアス、ポート番号、SSL が有効になっていることに注意してください。ただし、ターゲット サーバー自体は無効 になっています。これは、[ENABLED] 要素がグレー表示になっていることで示されます。
Edge API
Edge API を使用して定義を取得するには:
Get TargetServer API を使用して、ターゲット サーバー定義を取得します。
ターゲット サーバー定義の出力
<TargetServer name="demo-target"> <Host>demo-target.apigee.net</Host> <Port>443</Port> <IsEnabled>false</IsEnabled> <SSLInfo> <Enabled>true</Enabled> </SSLInfo> </TargetServer>Apigee API の出力は、要素 IsEnabled が false に設定されているため、ターゲット サーバー demo-target が無効になっていることを示しています。
ターゲット サーバーが無効になっているため、Message Processor はエラーコード NoActiveTargets を含む 503 Service Unavailable をクライアントへのレスポンスとしてすぐに送信します。

解決策
API プロキシのターゲット エンドポイント構成で使用される特定のターゲット サーバーが常に有効になっていることを確認します。
Edge UI
- [Admin] > [Environments] > [Target Servers] に移動します。
- エラーが発生している特定の環境を選択します。
- 特定のターゲット サーバー名を検索して、その定義を取得します。
- 特定のターゲット サーバーを選択し、[編集] をクリックします。
- [Enabled] チェックボックスをオンにします。
- [更新] をクリックします。
Edge API
Target Server API の更新を使用して、ターゲット サーバーの定義を更新し、API のリクエスト ペイロードで IsEnabled が true に設定されていることを確認します。
<TargetServer name="demo-target">
<Host>demo-target.apigee.net</Host>
<Port>443</Port>
<IsEnabled>true</IsEnabled>
<SSLInfo>
<Enabled>true</Enabled>
</SSLInfo>
</TargetServer>
問題が解決しない場合は、診断情報の収集が必要な場合に進みます。
API Monitoring を使用して問題を診断する
API Monitoring を使用すると、問題領域を迅速に切り分けて、エラー、パフォーマンス、レイテンシの問題とその発生元(デベロッパー アプリ、API プロキシ、バックエンド ターゲット、API プラットフォームなど)を診断できます。
API Monitoring を使用して API での 5xx 問題をトラブルシューティングする方法を説明するサンプル シナリオに従ってください
。たとえば、messaging.adaptors.http.flow.NoActiveTargets エラーの数が特定のしきい値を超えたときに通知を行うようにアラートを設定します。
診断情報の収集が必要な場合
上記の手順に従っても問題が解決されない場合は、次の診断情報を収集してください。Apigee サポートに連絡して、収集した情報を共有してください。
- Public Cloud をご利用の場合は、次の情報を提供してください。
- 組織名
- 環境名
- API プロキシ名
- エラーを再現するための完全な curl コマンド
- エラーコード NoActiveTargets で 503 Service Unavailable のリクエストを含むトレース ファイル
- Private Cloud をご利用の場合は、次の情報を提供してください。
- 確認したエラー メッセージ全文
- 環境名
- API プロキシ バンドル
- エラーコード NoActiveTargets で 503 Service Unavailable のリクエストを含むトレース ファイル
- NGINX アクセスログ
(
/opt/apigee/var/log/edge-router/nginx/<org>~<env>.<port#>_access_log) - Message Processor ログ
(
/opt/apigee/var/log/edge-message-processor/logs/system.log)