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コンテナヘルスの監視、コンテナ起動問題のトラブルシューティング。