1.7. Loki での OTLP データ取り込み
Logging では、OpenTelemetry Protocol (OTLP) を使用して、API エンドポイントを使用できます。OTLP は Loki 専用に設計されたものではない標準化された形式です。そのため、OpenTelemetry のデータ形式を Loki のデータモデルにマッピングするには、追加の Loki 設定が必要です。OTLP には、ストリームラベル や 構造化メタデータ などの概念がありません。代わりに、OTLP はログエントリーに関するメタデータを、次の 3 つのカテゴリーにグループ化された 属性 として提供します。
- リソース
- スコープ
- ログ
必要に応じて、複数のエントリーのメタデータを同時に、または個別に設定できます。
1.7.1. OTLP データ取り込み用の LokiStack 設定
OpenTelemetry Protocol (OTLP) 出力ログフォワーダーは、テクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
OTLP 取り込み用に LokiStack
カスタムリソース (CR) を設定するには、次の手順に従います。
前提条件
- Loki セットアップが、OTLP ログの取り込みを有効にするためにスキーマバージョン 13 で導入された構造化メタデータをサポートしていることを確認します。
手順
スキーマバージョンを設定します。
新しい
LokiStack
CR を作成する場合は、ストレージスキーマ設定でversion: v13
を設定します。注記既存の設定の場合は、
version: v13
と現在より後のeffectiveDate
を持つ新しいスキーマエントリーを追加します。スキーマバージョンの更新の詳細は、Upgrading Schemas (Grafana ドキュメント) を参照してください。
ストレージスキーマを次のように設定します。
ストレージスキーマの設定例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ...
# ... spec: storage: schemas: - version: v13 effectiveDate: 2024-10-25
effectiveDate
を過ぎると v13 スキーマが有効になり、LokiStack
は構造化メタデータを保存できるようになります。
1.7.2. 属性マッピング
Loki Operator を openshift-logging
モードに設定すると、Loki Operator がデフォルトの属性マッピングのセットを自動的に適用します。このマッピングは、特定の OTLP 属性を、Loki のストリームラベルおよび構造化メタデータに対応付けるものです。
一般的なセットアップでは、このようなデフォルトのマッピングで十分です。ただし、次の場合には属性マッピングをカスタマイズする必要があることもあります。
- カスタムコレクターの使用: 保存する必要がない追加の属性を生成するカスタムコレクターがセットアップに含まれている場合は、マッピングをカスタマイズして、その属性が Loki によって削除されるようにすることを検討してください。
- 属性の詳細レベルを調整する場合: デフォルトの属性セットが必要以上に詳細な場合は、必須の属性のみに減らすことができます。そうすることで、過剰なデータ保存を回避し、ロギングプロセスを合理化できます。
1.7.2.1. OpenShift のカスタム属性マッピング
Loki Operator を openshift-logging
モードで使用する場合、属性マッピングは OpenShift のデフォルト値に従います。ただし、カスタムマッピングを設定すると、デフォルト値を調整できます。openshift-logging
モードでは、必要に応じて、カスタム属性マッピングをすべてのテナントに対してグローバルに設定することも、個々のテナントに対して設定することもできます。カスタムマッピングを定義すると、そのカスタムマッピングが OpenShift のデフォルト値に追加されます。デフォルトのラベルが必要ない場合は、テナント設定で無効にできます。
Loki Operator と Loki の主な違いは、継承の処理にあります。Loki はデフォルトで default_resource_attributes_as_index_labels
のみをテナントにコピーします。Loki Operator は openshift-logging
モードで各テナントにグローバル設定全体を適用します。
LokiStack
内では、属性マッピング設定は limits
設定を通じて管理されます。次の LokiStack
設定の例を参照してください。
...
# ...
spec:
limits:
global:
otlp: {}
tenants:
application:
otlp: {}
属性をストリームラベルにマッピングするには、グローバルの OTLP 設定とテナントごとの OTLP 設定の両方を使用できます。
ストリームラベルはリソースレベルの属性からのみ導出されます。これは LokiStack
のリソース構造に反映されています。次の LokiStack
設定の例を参照してください。
spec: limits: global: otlp: streamLabels: resourceAttributes: - name: "k8s.namespace.name" - name: "k8s.pod.name" - name: "k8s.container.name"
spec:
limits:
global:
otlp:
streamLabels:
resourceAttributes:
- name: "k8s.namespace.name"
- name: "k8s.pod.name"
- name: "k8s.container.name"
ログエントリーから、リソース、スコープ、またはログタイプの属性を削除できます。
... ...
# ...
spec:
limits:
global:
otlp:
streamLabels:
# ...
drop:
resourceAttributes:
- name: "process.command_line"
- name: "k8s\\.pod\\.labels\\..+"
regex: true
scopeAttributes:
- name: "service.name"
logAttributes:
- name: "http.route"
regex: true
を設定することで正規表現を使用し、類似した名前を持つ属性に設定を適用できます。
データ量が増加する可能性があるため、ストリームラベルに正規表現を使用することは避けてください。
ストリームラベルとして明示的に設定されていない属性、またはエントリーから削除されていない属性は、デフォルトで構造化メタデータとして保存されます。
1.7.2.2. OpenShift のデフォルトのカスタマイズ
openshift-logging
モードでは特定の属性が必須です。この属性は、OpenShift の機能における役割があるため、設定から削除できません。推奨 ラベルが付いたその他の属性は、パフォーマンスに影響がある場合、削除できます。属性の詳細は、OpenTelemetry データモデル属性 を参照してください。
カスタム属性なしで openshift-logging
モードを使用すると、即座に OpenShift ツールとの互換性が確保されます。ストリームラベルとして追加の属性が必要な場合、または一部の属性を削除する必要がある場合は、カスタム設定を使用します。カスタム設定はデフォルト設定とマージできます。
1.7.2.3. 推奨属性の削除
openshift-logging
モードでデフォルト属性を減らすには、推奨属性を無効にします。
...
# ...
spec:
tenants:
mode: openshift-logging
openshift:
otlp:
disableRecommendedAttributes: true
- 1
- 推奨属性を削除するには、
disableRecommendedAttributes: true
を設定します。これにより、デフォルトの属性が必須属性またはストリームラベルに制限されます。注記この設定により、デフォルトのストリームラベルが削除されるため、クエリーのパフォーマンスに悪影響が及ぶ可能性があります。クエリーに不可欠な属性を保持するためには、このオプションをカスタム属性設定と組み合わせる必要があります。
1.7.3. 関連情報
- Loki labels (Grafana ドキュメント)
- Structured metadata (Grafana ドキュメント)
- OpenTelemetry データモデル
- OpenTelemetry attribute (OpenTelemetry ドキュメント)