AI-200:Developing AI Cloud Solutions on Azure Azure ソリューションのセキュリティ保護・監視・トラブルシューティング 問4
Azure ソリューションのセキュリティ保護・監視・トラブルシューティング/Azure ソリューションの監視とトラブルシューティング(OpenTelemetry・KQL)API(Azure Container Apps)から Azure Functions、さらに Azure Cosmos DB へと処理が流れるシステムで、OpenTelemetry を使って Application Insights に計測データを送っています。ところが、1件の要求の処理が API 側と Functions 側で別々のトランザクションとして表示され、エンド ツー エンドでつながって見えません。原因として最も考えられるものはどれですか。
当サイトのオリジナル問題(AI-200:Developing AI Cloud Solutions on Azureの出題範囲「Azure ソリューションのセキュリティ保護・監視・トラブルシューティング」に対応。実際の試験問題ではありません)
- Aサービス間の呼び出しでトレース コンテキスト(W3C Trace Context の traceparent ヘッダーなど)が伝達されず、後続の処理が新しいトレースとして開始されている
- BApplication Insights の接続文字列を環境変数で設定しているため、トレースが分断されている
- Cサンプリングが有効になっているため、1件の要求の計測データが API 側と Functions 側で別々のトランザクションに分けて保存されている
- DOpenTelemetry はメトリックしか収集できず、トレースは Application Insights に送られないため
正解:A
解説
分散トレースでは、サービスをまたぐ呼び出しのたびにトレース ID などの情報(トレース コンテキスト)を後続のサービスに伝えます。これにより、各サービスで記録された処理(スパン)が1つのトレースとしてつながります。HTTP 呼び出しでは W3C Trace Context の traceparent ヘッダーで伝えるのが標準です。伝達されないと、後続のサービスは新しいトレースを始めてしまい、別々のトランザクションとして表示されます。
下線の用語は 用語集 で意味を確認できます。
選択肢ごとの解説
- A正しい。トレース コンテキストが伝わっていないと、各サービスの処理が1つのトレースとして結び付きません。
- B誤り。接続文字列は、本番環境では環境変数で設定するのが推奨される方法です。トレースが分断される原因にはなりません。
- C誤り。サンプリングは保存する計測データの量を減らす仕組みです。保存されるデータが減ることはあっても、1件の要求を別々のトランザクションに分ける原因にはなりません。
- D誤り。OpenTelemetry は、トレース・メトリック・ログを収集できます。Application Insights にトレースを送ることもできます。