3.6. OpenTelemetry データモデル
このドキュメントでは、Logging 6.1 における Red Hat OpenShift Logging の OpenTelemetry サポートのプロトコルおよびセマンティック規約について概説します。
OpenTelemetry Protocol (OTLP) 出力ログフォワーダーは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビューの機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行いフィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
3.6.1. 転送および取り込みプロトコル
Red Hat OpenShift Logging は、OTLP 仕様 を使用してログを収集し、OpenTelemetry エンドポイントに転送します。OTLP はテレメトリーデータをエンコード、転送、配信します。ログストリームを取り込むための OTLP エンドポイントを提供する Loki ストレージをデプロイすることもできます。このドキュメントでは、さまざまな OpenShift クラスターソースから収集されたログのセマンティック規約を定義します。
3.6.2. セマンティック規約
このソリューションのログコレクターは、次のログストリームを収集します。
- コンテナーログ
- クラスターノードジャーナルログ
- クラスターノード監査ログ
- Kubernetes および OpenShift API サーバーログ
- OpenShift Virtual Network (OVN) ログ
これらのストリームは、OpenTelemetry セマンティック属性によって定義されたセマンティック規約に従って転送できます。OpenTelemetry のセマンティック規約では、リソースを属性によって識別される、テレメトリーを生成するエンティティーのイミュータブルな表現と定義しています。たとえばコンテナー内で実行されているプロセスには、container_name
、cluster_id
、pod_name
、namespace
などの属性が含まれ、場合によっては deployment
または app_name
も含まれます。これらの属性はリソースオブジェクトの下にグループ化されており、繰り返しを減らし、テレメトリーデータとしてのログ送信を最適化するのに役立ちます。
ログには、リソース属性に加え、計装ライブラリーに固有のスコープ属性と、各ログエントリーに固有のログ属性も含まれる場合があります。これらの属性は、各ログエントリーに関するより詳細な情報を提供し、ストレージ内のログをクエリーする際のフィルタリング機能を強化します。
次のセクションでは、一般的に転送される属性を定義しています。
3.6.2.1. ログエントリー構造
すべてのログストリームには、次の ログデータ フィールドが含まれます。
適用可能ソース 列は、各フィールドに適用するログソースを示しています。
-
all
: このフィールドは、すべてのログに存在します。 -
container
: このフィールドは、アプリケーションとインフラストラクチャーの両方の Kubernetes コンテナーログに存在します。 -
audit
: このフィールドは、Kubernetes ログ、OpenShift API ログ、OVN ログに存在します。 -
auditd
: このフィールドは、ノード監査ログに存在します。 -
journal
: このフィールドは、ノードジャーナルログに存在します。
名前 | 適用可能ソース | コメント |
---|---|---|
| all | |
| all | |
| all | |
| container、journal | |
| all | (オプション) ストリーム固有の属性を転送する場合に存在します |
3.6.2.2. 属性
次の表に示すとおり、ログエントリーにはソースに基づくリソース属性、スコープ属性、ログ属性のセットが含まれます。
場所 列は属性のタイプを示しています。
-
resource
: リソース属性を示します -
scope
: スコープ属性を示します -
log
: ログ属性を示します
ストレージ 列は、属性がデフォルトの openshift-logging
モードを使用して LokiStack に保存されているか、および保存場所を示しています。
stream label
:- 特定のラベルに基づく効率的なフィルタリングとクエリーを可能にします。
-
Loki Operator が設定でこの属性を強制する場合は、
required
としてラベル付けできます。
structured metadata
:- キーと値のペアの詳細なフィルタリングと保存を可能にします。
- JSON 解析を使用することなく、合理化されたクエリーに直接ラベルを使用できるようになります。
OTLP を使用すると、ユーザーは JSON 解析を使用するのではなく、ラベルで直接クエリーをフィルタリングできるため、クエリーの速度と効率が向上します。
名前 | 場所 | 適用可能ソース | ストレージ (LokiStack) | コメント |
---|---|---|---|---|
| resource | all | required stream label |
(非推奨) 互換性属性。 |
| resource | all | required stream label |
(非推奨) 互換性属性。 |
| resource | container | stream label |
(非推奨) 互換性属性。 |
| resource | all | stream label |
(非推奨) 互換性属性。 |
| resource | container | required stream label |
(非推奨) 互換性属性。 |
| resource | container | stream label |
(非推奨) 互換性属性。 |
| resource | all |
(非推奨) 互換性属性。 | |
| log | container、journal |
(非推奨) 互換性属性。 | |
| resource | all | required stream label | |
| resource | all | required stream label | |
| resource | all | required stream label | |
| resource | all | structured metadata | |
| resource | all | stream label | |
| resource | container | required stream label | |
| resource | container | stream label | |
| resource | container | structured metadata | |
| resource | container | stream label | |
| resource | container | structured metadata | |
| resource | container | stream label | Pod 作成者に基づき条件付きで転送されます |
| resource | container | stream label | Pod 作成者に基づき条件付きで転送されます |
| resource | container | stream label | Pod 作成者に基づき条件付きで転送されます |
| resource | container | stream label | Pod 作成者に基づき条件付きで転送されます |
| resource | container | structured metadata | Pod 作成者に基づき条件付きで転送されます |
| resource | container | stream label | Pod 作成者に基づき条件付きで転送されます |
| log | container | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| log | audit | structured metadata | |
| resource | journal | structured metadata | |
| resource | journal | structured metadata | |
| resource | journal | structured metadata | |
| resource | journal | structured metadata | |
| resource | journal | stream label | |
| log | journal | structured metadata | |
| log | journal | structured metadata |
互換性属性 としてマークされた属性は、ViaQ データモデルとの最小限の下位互換性をサポートします。これらは非推奨の属性であり、UI 機能の継続を保証するための互換性レイヤーとして機能します。これらの属性は、Logging UI が今後のリリースにおける OpenTelemetry 対応機能を完全にサポートするまで引き続きサポートされます。
Loki は、ストレージへの保存時に属性名を変更します。名前は小文字になり、セット内のすべての文字 (.
、/
、-
) はアンダースコア (_
) に置き換えられます。たとえば、k8s.namespace.name
は k8s_namespace_name
になります。