![Por que um estágio de rótulos no pipeline de ingestão do meu Promtail está sem efeito?](https://rvso.com/image/760957/Por%20que%20um%20est%C3%A1gio%20de%20r%C3%B3tulos%20no%20pipeline%20de%20ingest%C3%A3o%20do%20meu%20Promtail%20est%C3%A1%20sem%20efeito%3F.png)
Isso faz parte da minha configuração de raspagem do Promtail em vários hosts para coletar journald
entradas de log para uma instância do 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
O objetivo é renomear todas as entradas capturadas com unit
rótulos como session-1.scope
, session-10.scope
etc. com o rótulo comum session.scope
e preceder o session_id
extraído do rótulo inicialmente atribuído ao texto da entrada. Embora esse último aspecto, adicionar o prefixo, esteja funcionando e, portanto, implicando que a maior parte da configuração esteja funcionando, o último dos estágios definidos, a atribuição de um literal estático ao unit
rótulo, não funciona. Todas as entradas que foram corretamente selecionadas e alteradas ainda possuem seus rótulos distintos session-1.scope
, session-10.scope
etc.
Alguém pode me dar uma dica do que estou perdendo para que a última parte funcione conforme o esperado?
Responder1
Com suporte nos fóruns da comunidade cheguei a esta solução:
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á fazendo o que @jnauska menciona.
Responder2
Você se refere a algum valor real na seção de rótulos, session.scope
não existe, portanto não altera o valor.
Você pode usar o modelo para gerar algum valor como:
- template:
source: session.scope
template: 'session.scope'
- labels:
unit: session.scope