Container Insights で収集されたAKS のコンテナログを検索する

AKS で動かしている Windows コンテナ内では、一応アプリが標準出力にカスタムログを書き込んでいる。

AKSクラスタを作成したら Container Insights が有効になっていたので、保存場所になっている Log Analytics ワークスペースを見てみたら、ContainerLog テーブルにカスタムログが保存されていた。

以前問い合わせたときには、Windows コンテナでは標準出力に書き込んだカスタムログを Container Insights は収集してくれない、って言われたのに。改善されたってことだろうか。

Log Analytics ワークスペースに保存されているので、Azure.Monitor.Query を使って取得できた。

using Azure.Identity;
using Azure.Monitor.Query;

const string WorkspaceId = "Log Analytics ワークスペース ID";

var client = new LogsQueryClient(new DefaultAzureCredential());

// ContainerLog を検索
var result = await client.QueryWorkspaceAsync(
    workspaceId: WorkspaceId,
    query: @"ContainerLog
| where LogEntrySource == ""stdout""
| where LogEntry has ""検索したいワード""",
    timeRange: new QueryTimeRange(
        start: DateTimeOffset.UtcNow.AddDays(-1),
        end: DateTimeOffset.UtcNow));

foreach (var row in result.Value.Table.Rows)
{
    Console.WriteLine(row["LogEntry"]);
}

Console.ReadLine();