AI-200:Developing AI Cloud Solutions on Azure Azure ソリューションのセキュリティ保護・監視・トラブルシューティング 問5
Azure ソリューションのセキュリティ保護・監視・トラブルシューティング/Azure ソリューションの監視とトラブルシューティング(OpenTelemetry・KQL)Application Insights のログで、直近24時間に失敗した要求の件数を5分ごとに集計し、傾向を確認したいと考えています。KQL として適切なものはどれですか。
当サイトのオリジナル問題(AI-200:Developing AI Cloud Solutions on Azureの出題範囲「Azure ソリューションのセキュリティ保護・監視・トラブルシューティング」に対応。実際の試験問題ではありません)
- Arequests | where timestamp > ago(24h) | project count() by bin(timestamp, 5m)
- Brequests | where timestamp > ago(24h) and success == false | summarize count() by bin(timestamp, 5m)
- Crequests | where success == false | top 5 by timestamp
- Drequests | summarize count() by success | where timestamp > ago(24h)
正解:B
解説
KQL では、where で行を絞り込み、summarize で集計します。bin(timestamp, 5m) は時刻を5分ごとの区切りにまとめる関数で、summarize count() by bin(timestamp, 5m) と組み合わせると5分ごとの件数が得られます。期間の絞り込みは ago(24h) で書けます。なお、ワークスペース ベースのテーブル(AppRequests)では、列名が TimeGenerated や Success になります。
選択肢ごとの解説
- A誤り。project は出力する列を選ぶ演算子で、集計はできません。また、失敗した要求に絞り込む条件もありません。
- B正しい。期間と失敗の条件で絞り込み、summarize と bin で5分ごとの件数を集計しています。
- C誤り。top 5 は上位5行を返すだけで、5分ごとの件数の集計にはなりません。期間の条件もありません。
- D誤り。summarize のあとには集計に使った列(この例では success と件数)しか残らないため、その後の where で timestamp を参照できません。期間の絞り込みは summarize の前に書く必要があります。