Dies ist ein Teil meiner Promtail-Scrape-Konfiguration auf verschiedenen Hosts, um journald
Protokolleinträge für eine Loki-Instanz zu sammeln:
- 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
Das Ziel besteht darin, alle erfassten Einträge mit unit
Labels wie session-1.scope
usw. session-10.scope
mit dem gemeinsamen Label neu zu kennzeichnen und dem Eintragstext session.scope
das aus dem ursprünglich zugewiesenen Label extrahierte voranzustellen . Während letzterer Aspekt, das Hinzufügen des Präfixes, funktioniert und somit impliziert, dass der Großteil der Konfiguration funktioniert, funktioniert dies im letzten der definierten Schritte, also die Zuweisung eines statischen Literals zum Label, nicht. Alle Einträge, die korrekt ausgewählt und geändert wurden, haben immer noch ihre unterschiedlichen Labels usw.session_id
unit
session-1.scope
session-10.scope
Kann mir jemand einen Hinweis geben, was mir fehlt, damit dieser letzte Teil wie erwartet funktioniert?
Antwort1
Mit Unterstützung in den Community-Foren bin ich zu dieser Lösung gekommen:
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
Es macht, was @jnauska erwähnt.
Antwort2
Sie haben im Abschnitt „Beschriftungen“ auf einen tatsächlichen Wert verwiesen, session.scope
der nicht existiert. Deshalb kann der Wert nicht geändert werden.
Sie können eine Vorlage verwenden, um Werte dafür zu generieren, wie etwa:
- template:
source: session.scope
template: 'session.scope'
- labels:
unit: session.scope