Promtail の取り込みパイプラインのラベル ステージが効果がないのはなぜですか?

Promtail の取り込みパイプラインのラベル ステージが効果がないのはなぜですか?

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.scopesession-10.scopesession.scopesession_idunitsession-1.scopesession-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

関連情報