22title : ログ
33description : イベントの記録
44weight : 3
5- default_lang_commit : e851eb6903ed768e9cf3f427df74a5ccd7739114
6- drifted_from_default : true
5+ default_lang_commit : 3b1656f719549d7c7081167ba6bdf98a4e45cf0c
76cSpell:ignore : filelogreceiver semistructured transformprocessor
87---
98
@@ -13,26 +12,27 @@ cSpell:ignore: filelogreceiver semistructured transformprocessor
1312
1413## OpenTelemetry のログ {#opentelemetry-logs}
1514
16- OpenTelemetry はログを作成するための独自の API や SDK を定義しません。
17- かわりに、OpenTelemetry のログは、ログフレームワークやインフラコンポーネントから得られるログを指します。
18- OpenTelemetry SDK と自動計装は、複数のコンポーネントを活用しログを[ トレース] ( ../traces ) と関連付けます。
15+ OpenTelemetry は、ログレコードを生成するための Logs API と SDK、そして既存のロギングフレームワークと統合するための言語 SDK とロギングブリッジを提供します。
16+ ログとは、ロギングプロバイダを通して送信されるあらゆるデータを指し、イベントはログの特殊なタイプです。
17+ すべてのログがイベントであるとは限りませんが、すべてのイベントはログです。
18+ Logs API は公開されており、アプリケーションコードから直接使用することも、既存のロギングライブラリやブリッジを介して間接的に使用することもできます。
1919
20- OpenTelemetry のログサポートは、既存のログと完全に互換性を持つように設計されており、追加のコンテキストを付与したり、さまざまなソースからのログを共通のフォーマットに解析・変換するための統一ツールキットを提供します 。
20+ OpenTelemetry は、既に生成されているログを扱うように設計されており、ログを他のシグナルと関連付けたり、コンテキスト属性を追加したり、異なるソースを共通のフォーマットに正規化して処理およびエクスポートするためのツールを提供します 。
2121
2222### OpenTelemetry コレクターの OpenTelemetry のログ {#opentelemetry-logs-in-the-opentelemetry-collector}
2323
24- [ OpenTelemetry コレクター] ( /docs/collector/ ) はログを作業するための複数のツールを提供します 。
24+ [ OpenTelemetry コレクター] ( /docs/collector/ ) はログを扱うための複数のツールを提供します 。
2525
2626- 既知の特定のログデータソースを解析する複数のレシーバー
2727- 任意のファイルからログを読み取り、異なるフォーマットの解析や正規表現の解析が可能な ` filelogreceiver `
2828- ネストされたデータの解析、構造のフラット化、値の追加/削除/更新などを実行できる ` transformprocessor ` などのプロセッサー
29- - OpenTelemetry のフォーマットでログデータを送信できるエクスポーター
29+ - OpenTelemetry 以外のフォーマットでログデータを送信できるエクスポーター
3030
31- OpenTelemetry を採用する最初のステップとして、汎用的なログエージェントとしてコレクターをデプロイがよく含まれます 。
31+ OpenTelemetry を採用する最初のステップとして、汎用的なログエージェントとしてコレクターをデプロイすることがよく含まれます 。
3232
3333### アプリケーションの OpenTelemetry {#opentelemetry-logs-for-applications}
3434
35- アプリケーションにおいて、OpenTelemetry のログは任意のログライブラリやビルトインのログ機能を仕様して作成されます 。
35+ アプリケーションにおいて、OpenTelemetry のログは任意のログライブラリやビルトインのログ機能を使って作成されます 。
3636自動計装を追加したりSDKを活用したりすると、OpenTelemetry は既存のログをアクティブなトレースやスパンと自動的に関連付け、それらの ID をログの本体に含めます。
3737つまり、OpenTelemetry はログとトレースを自動的に関連付けます。
3838
@@ -45,16 +45,12 @@ OpenTelemetry を採用する最初のステップとして、汎用的なログ
4545
4646## 構造化、非構造化、半構造化ログ {#structured-unstructured-and-semistructured-logs}
4747
48- OpenTelemetry は構造化ログと非構造化ログを技術的に区別していません。
49- OpenTelemetry では既存のどのようなログも利用できます。
50- しかし、すべてのログフォーマットは等しく有用ではありません!
51- 特に、構造化ログは大規模な解析や分析がしやすいため、本番環境のオブザーバビリティに推奨されます。
52- 後述するセクションは構造化、非構造化、半構造化ログの違いを説明します。
48+ OpenTelemetryはあらゆるログ形式に対応していますが、すべての形式が分析に等しく役立つわけではありません。次のセクションでは、構造化ログ、半構造化ログ、非構造化ログの違いについて説明します。重要:JSON形式でエンコードされたログは、安定したスキーマを持つという意味で自動的に「構造化」されるわけではありません。半構造化されている場合もあります。構造化ログとは、一貫したスキーマ、または明確に定義された型付きフィールドを持ち、下流の処理が確実に依存できるログを指します。
5349
5450### 構造化ログ {#structured-logs}
5551
56- 構造化ログは、一貫性のある機械が読みやすいフォーマットに従ったテキスト形式のログです 。
57- アプリケーションにおいて、最も一般的なフォーマットの 1 つは JSON です 。
52+ 構造化ログとは、定義済みで一貫性のあるスキーマまたは型付きフィールドを持つログであり、下流システムが確実に解析および解釈できるものです。テキストエンコーディングは、JSON、protobuf、またはその他の形式を使用できますが、ログが構造化されているというのは、単に有効な JSON であることではなく、安定したスキーマ(フィールド名、型、意味)が存在するためです 。
53+ たとえば、構造化 JSON ログは次のようになります 。
5854
5955``` json
6056{
@@ -99,18 +95,16 @@ OpenTelemetry では既存のどのようなログも利用できます。
9995127.0.0.1 - johndoe [04/Aug/2024:12:34:56 -0400] "POST /api/v1/login HTTP/1.1" 200 1234
10096```
10197
102- 異なる構造化ログのフォーマットが混在することも一般的です。
103- たとえば、Extended Log Format (ELF) は JSON と 共に CLF ログの空白区切りのデータが混在することがあります。
98+ ハイブリッド形式や拡張形式(たとえば、CLFフィールドと末尾のJSONデータブロックを組み合わせたもの)もあります。
10499
105100``` text
106101192.168.1.1 - johndoe [04/Aug/2024:12:34:56 -0400] "POST /api/v1/login HTTP/1.1" 200 1234 "http://example.com" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36" {"transactionId": "abcd-efgh-ijkl-mnop", "responseTime": 150, "requestBody": {"username": "johndoe"}, "responseHeaders": {"Content-Type": "application/json"}}
107102```
108103
109- このログを最大限に活用するには、オブザーバビリティバックエンドの分析を簡単にするために、JSON と ELF に関連する部分の両方を共通したフォーマットに解析します 。
104+ そのような場合は、必要な部分を解析または抽出して正規化されたレコードに変換し、後続のツールがそれらを一貫して分析できるようにします 。
110105[ OpenTelemetry コレクター] ( /docs/collector ) の ` filelogreceiver ` はこのようにログを分析する標準化された方法が含まれています。
111106
112- 構造化ログはログの利用において推奨される方法です。
113- 構造化ログは一貫したフォーマットで出力されるため、解析が率直であり、OpenTelemetry コレクターでの前処理や他のデータとの関連付けがしやすく、そして最終的に Observability バックエンドでの解析が容易になります。
107+ 構造化ログは、その安定したスキーマにより、検証、解析、トレースやメトリクスとの関連付け、そして大規模な分析がしやすいため、本番環境では好まれます。
114108
115109### 非構造化ログ {#unstructured-logs}
116110
@@ -128,22 +122,22 @@ System reboot initiated at 2024-08-04 03:00:00 by user: admin. Reason: Scheduled
128122DEBUG - 2024-08-04 09:30:15 - User johndoe performed action: file_upload. Filename: report_Q3_2024.pdf, Size: 2.3 MB, Duration: 5.2 seconds. Result: Success
129123```
130124
131- 本番環境において非構造化ログの蓄積と分析は可能ですが、機械が読みやすくするために大幅な分析や前処理が必要にある場合があります 。
125+ 本番環境において非構造化ログの蓄積と分析は可能ですが、機械が読みやすくするために大幅な分析や前処理が必要になる場合があります 。
132126たとえば、上述した 3 つのログを解析するには、タイムスタンプを抽出するための正規表現やログメッセージの本文を一貫して抽出するためのカスタムパーサーが必要になります。
133127通常、ログのバックエンドがタイムスタンプを基にログを並び替えたり整理したりするには、このような処理がもとめられます。
134128非構造化ログを解析して分析に活用することは可能ですが、アプリケーションの標準ログフレームワークを経由して構造化ログに切り替えるよりも作業量が多くなる可能性があります。
135129
136130### 半構造化ログ {#semistructured-logs}
137131
138- 半構造化ログとは、データを識別するために一定の一貫したパターンを使用し、機械が読みやすくしているものの、異なるシステム間でデータのフォーマットや区切り文字が統一されていないログのことを指します。
132+ 半構造化ログとは、データを識別するために一定の一貫したパターンを使用し、機械が読みやすくしているものの、異なるシステム間でデータのフォーマットや区切り文字が統一されていないログのことを指します。例としては、キーと値のペアによるログ記録(下記参照)や、メッセージごとにフィールド名や型が異なるJSONデータなどが挙げられます。半構造化ログは非構造化ログよりも解析が容易な場合が多いですが、分析前に処理や正規化が必要となる場合もあります。
139133
140- 以下は、準構造かログの例です 。
134+ 以下は、半構造化ログの例です 。
141135
142136``` text
1431372024-08-04T12:45:23Z level=ERROR service=user-authentication userId=12345 action=login message="Failed login attempt" error="Invalid password" ipAddress=192.168.1.1 userAgent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.0.0 Safari/537.36"
144138```
145139
146- 機会が読みやすいですが、半構造化ログは大規模に分析を可能にするには、複数の異なるパーサーを必要になる場合があります 。
140+ 半構造化ログは、下流の分析で完全に活用するためには、データ取り込み時にマッピングと型変換が必要になる場合があります 。
147141
148142## OpenTelemetry ログコンポーネント {#opentelemetry-logging-components}
149143
0 commit comments