監視・オブザーバビリティ

ログ集約・構造化ログ ろぐしゅうやく・こうぞうかろぐ

ログ管理構造化ログJSONFluentdログ集約オブザーバビリティ
ログ集約・構造化ログについて教えて

簡単に言うとこんな感じ!

バラバラなサーバーやアプリのログを一か所に集めるのが「ログ集約」。そのログをJSON形式のような機械が読みやすい形式で記録するのが「構造化ログ」だよ。集約+構造化がそろって初めて、大量ログの素早い検索・分析が現実的になるんだ。


ログ集約・構造化ログとは

ログ集約(Log Aggregation)とは、複数のサーバー・コンテナ・アプリケーションから生成されるログを一か所の中央ストレージに集めて統一的に管理する仕組みです。マイクロサービスやコンテナ環境では、数十〜数百のサービスがそれぞれログを出力するため、個別サーバーにSSHしてログを確認する従来の方法では追いつきません。

構造化ログ(Structured Logging)とは、ログをキーと値のペアで構成されたJSONなどの機械解析可能な形式で記録することです。従来の「2024-01-01 12:00:00 ERROR something failed」のような自由文字列(非構造化ログ)では、検索・集計・フィルタリングに正規表現が必要で非効率でした。構造化ログでは {"level":"ERROR","timestamp":"...","service":"order","message":"payment failed","order_id":"12345"} のように記録するため、order_id で絞り込む、level=ERROR を集計するといった操作が瞬時に行えます。

構造化ログと集約基盤を組み合わせることで、分散トレーシングとの連携や、インシデント発生時の原因調査(RCA)が大幅に効率化されます。


ログ集約のアーキテクチャ

コンポーネント役割代表ツール
ログコレクター各サーバー・コンテナからログを収集・転送Fluentd, Fluent Bit, Filebeat
ログブローカー大量ログの一時バッファリングApache Kafka, Amazon Kinesis
ログストレージログの永続化・インデクシングElasticsearch, OpenSearch, S3
ログ分析・可視化検索・集計・ダッシュボードKibana, Grafana Loki, Splunk
クラウドネイティブマネージド統合サービスCloudWatch Logs, Cloud Logging

ELKスタック(代表的な構成)

アプリ → Filebeat(収集)→ Logstash(変換)→ Elasticsearch(保存)→ Kibana(可視化)

構造化ログのフィールド設計例

フィールド内容
timestampISO8601形式の時刻2024-01-01T12:00:00Z
levelログレベルERROR / WARN / INFO / DEBUG
serviceサービス名order-service
trace_id分散トレースIDabc123
user_idユーザーIDuser-456
message説明メッセージPayment failed
errorエラー詳細connection timeout

歴史と背景

  • 2000年代:syslog・テキストファイルによるログ管理が主流。集中管理は限定的
  • 2010年Elasticsearch + Logstash + Kibana(ELKスタック の登場で検索ベースのログ分析が普及
  • 2014年Fluentd がCNCFに寄贈。クラウドネイティブなログ収集の標準に
  • 2018年Grafana Lokiリリースラベルベースのログ管理でコストを削減
  • 2020年代OpenTelemetry により、ログ・メトリクス・トレースの統合収集が加速

構造化ログの可視化

非構造化ログ vs 構造化ログ 非構造化ログ 構造化ログ(JSON) 2024-01-01 12:00:05 ERROR Payment service: Failed to process order 12345 for user john@example.com - connection timeout 正規表現で解析が必要→困難 {"level":"ERROR", "ts":"2024-01-01T12:00:05Z", "service":"payment", "order_id":"12345", "error":"conn timeout"} order_id で即時フィルタリング可能

関連用語