¿Por qué una etapa de etiquetas en el proceso de ingesta de mi Promtail no tiene efecto?

¿Por qué una etapa de etiquetas en el proceso de ingesta de mi Promtail no tiene efecto?

Esto es parte de mi configuración de raspado de Promtail en varios hosts para recopilar journaldentradas de registro en una instancia de 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

El objetivo es volver a etiquetar todas las entradas capturadas con unitetiquetas como session-1.scope, session-10.scopeetc. con la etiqueta común session.scopey anteponer lo session_idextraído de la etiqueta asignada inicialmente al texto de la entrada. Si bien este último aspecto, agregar el prefijo, está funcionando y, por lo tanto, implica que la mayor parte de la configuración está funcionando, la última de las etapas definidas, la asignación de un literal estático a la unitetiqueta, no. Todas las entradas que fueron seleccionadas y modificadas correctamente todavía tienen sus etiquetas distintas session-1.scope, session-10.scopeetc.

¿Alguien puede indicarme qué me falta para que lo último funcione como se esperaba?

Respuesta1

Con soporte en los foros de la comunidad llegué a esta solución:

    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

Está haciendo lo que menciona @jnauska.

Respuesta2

Ha hecho referencia a algún valor real en la sección de etiquetas, session.scopeno existe, por lo que no puede modificar el valor.

Puede usar una plantilla para generar algún valor como:

           - template:
                source: session.scope
                template: 'session.scope'
            - labels:
                unit: session.scope

información relacionada