journald
これは、Loki インスタンスへのログ エントリを収集するための、さまざまなホスト上の Promtail スクレイプ構成の一部です。
- job_name: journald
journal:
labels:
job: journald
relabel_configs:
- source_labels:
- __journal__systemd_unit
target_label: unit
pipeline_stages:
- match:
selector: '{unit=~"session-\\d+\\.scope"}'
stages:
- regex:
source: unit
expression: "^session-(?P<session_id>\\d+)\\.scope$"
- template:
source: message
template: "id={{ .session_id }} {{ .Entry }}"
- output:
source: message
- labels:
unit: session.scope
目的は、 などのラベルでキャプチャされたすべてのエントリを共通ラベルで再ラベル付けし、unit
最初に割り当てられたラベルから抽出された をエントリ テキストの先頭に追加することです。 プレフィックスを追加するという後者の側面は機能しており、したがってほとんどの構成が機能していることを示していますが、定義された最後の段階、つまりラベルへの静的リテラルの割り当ては機能していません。 正しく選択され変更されたすべてのエントリには、などの個別のラベルが残っています。session-1.scope
session-10.scope
session.scope
session_id
unit
session-1.scope
session-10.scope
最後の部分を期待どおりに動作させるために何が欠けているかを誰か教えてくれませんか?
答え1
コミュニティ フォーラムのサポートを受けて、次の解決策にたどり着きました。
pipeline_stages:
- match:
selector: '{service=~"session-\\d+\\.scope"}'
stages:
- regex:
source: service
expression: "^session-(?P<session_id>\\d+)\\.scope$"
- template:
source: message
template: "{% raw %}id={{ .session_id }} {{ .Entry }}{% endraw %}"
- output:
source: message
- template:
source: label
template: session.scope
- labels:
service: label
@jnauska が言及していることを実行しています。
答え2
ラベル セクションで実際の値を参照しましたが、session.scope
存在しないため、値を変更できません。
次のようなテンプレートを使用して値を生成できます。
- template:
source: session.scope
template: 'session.scope'
- labels:
unit: session.scope