Azure SDK for .NET の Azure.Monitor.Query 使えば、Container Insights が収集した AKS のコンテナのメトリックを取得できた。
LogsQueryClient で Log Analytics ワークスペースに対して Kusto クエリを実行。
using Azure.Identity; using Azure.Monitor.Query; const string WorkspaceId = "Log Analytics ワークスペースの概要に表示されているワークスペース ID"; var client = new LogsQueryClient(new DefaultAzureCredential()); // Container CPU { var result = await client.QueryWorkspaceAsync( workspaceId: WorkspaceId, query: $@"Perf | where ObjectName == ""K8SContainer"" and CounterName == ""cpuUsageNanoCores"" | summarize AvgCPUUsageNanoCores = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName", timeRange: new QueryTimeRange( start: DateTimeOffset.UtcNow.AddDays(-1), end: DateTimeOffset.UtcNow)); foreach (var row in result.Value.Table.Rows) { Console.WriteLine($"TimeGenerated:{row["TimeGenerated"]}\tAvgCPUUsageNanoCores:{row["AvgCPUUsageNanoCores"]}"); } } // Container memory { var result = await client.QueryWorkspaceAsync( workspaceId: WorkspaceId, query: $@"Perf | where ObjectName == ""K8SContainer"" and CounterName == ""memoryRssBytes"" | summarize AvgUsedRssMemoryBytes = avg(CounterValue) by bin(TimeGenerated, 30m), InstanceName", timeRange: new QueryTimeRange( start: DateTimeOffset.UtcNow.AddDays(-1), end: DateTimeOffset.UtcNow)); foreach (var row in result.Value.Table.Rows) { Console.WriteLine($"TimeGenerated:{row["TimeGenerated"]}\tAvgUsedRssMemoryBytes:{row["AvgUsedRssMemoryBytes"]}"); } } Console.ReadLine();