Dockerコンテナログの解析

stdout/stderrストリーム、JSON-fileドライバフォーマット、埋め込みアプリケーションログフォーマットを含むDockerコンテナログ出力を解析します。

Docker

詳細な説明

Dockerコンテナログフォーマット

Dockerはstdoutとstderrストリームからコンテナ出力をキャプチャします。ログフォーマットは設定されたロギングドライバに依存しますが、最も一般的なのはjson-fileドライバ(デフォルト)です。

JSON-Fileドライバフォーマット

docker logs <container>を実行すると、出力は通常以下のようになります:

2024-01-15T10:30:00.000000000Z stdout Starting application...
2024-01-15T10:30:01.000000000Z stdout Listening on port 3000
2024-01-15T10:30:02.000000000Z stderr Error: Connection to database failed

抽出されるフィールド

フィールド 説明
タイムスタンプ ナノ秒精度のISO 8601
ストリーム stdoutまたはstderr
メッセージ 実際のログ内容

ストリームタイプからの重要度

  • stdoutメッセージ — メッセージ内容から重要度を推定
  • stderrメッセージ — メッセージ内容が別の重要度を示唆しない限りデフォルトでERROR

Docker内のJSONアプリケーションログ

多くのコンテナ化されたアプリケーションはstdoutにJSON構造化ログを出力します。パーサーは最初にDockerフォーマットを識別し、次にメッセージ内容自体がJSONログエントリかどうかを確認し、両方のレイヤーを解析して最大限のフィールド抽出を行います。

ユースケース

コンテナ化されたアプリケーション障害のデバッグ、CI/CDパイプラインでのDockerコンテナ出力分析、stdoutとstderrログストリームの区別、ログ分析によるDockerコンテナヘルスの監視、コンテナ起動問題のトラブルシューティング。

試してみる — Log Format Parser

フルツールを開く