Почему этап меток в конвейере загрузки Promtail не дает эффекта?

Почему этап меток в конвейере загрузки Promtail не дает эффекта?

Это часть моей конфигурации Promtail scrape на разных хостах для сбора journaldзаписей журнала в экземпляре Loki:

- 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

Связанный контент