在promtail配置中组合两个lable的值



如何在promtail配置中将多个标签的值相加并分配给另一个标签?

scrape_configs:
- job_name: journal
journal:
max_age: 12h
relabel_configs:
- source_labels: ['__journal__machine_id']
target_label: 'HostId'
- source_labels: ['__journal__hostname']
target_label: 'HostName'
- source_labels: ['__journal_syslog_identifier']
target_label: 'ApplicationName'
pipeline_stages:
- match:
selector: '{ApplicationName="test-app"}'
stages:
- static_labels:
OriginId: //here I want to asign HostId+HostName+ApplicationName

最终,我预计标签OriginId的值将是HostId+HostName+ApplicationName

您可以将replace操作与relabel_config中的separator一起使用。

这里有一个例子:

...
- action: replace
separator: "+"
source_labels:
- source_labels: 
- __journal__machine_id
- __journal__hostname
- __journal_syslog_identifier
target_label: 'OriginId'
...

我认为这应该对你有效。

static_labels只允许向标签集添加静态标签,即不能使用其他标签的值。既然你已经有了relabel_configs部分,也许你可以直接从重新标记步骤生成OriginId?类似于:

- source_labels: ['__journal__machine_id', '__journal__hostname', '__journal_syslog_identifier']
separator: '_'
target_label: 'OriginId'

在这种情况下,如果输入标签集看起来像:

__journal__machine_id: "machine-id-1"
__journal__hostname: "host1"
__journal_syslog_identifier: "abcde-123"

CCD_ 7将以值machine-id-1_host1_abcde-123结束。默认的separator(如果在配置中未指定,则为;(。

这可以通过模板阶段实现。

以下示例从filename映射teamspace以创建一个名为namespace的新标签。

scrape_configs:
- job_name: logs
static_configs:
- targets:
- localhost
labels:
hostname: ${HOSTNAME}
job: logs
__path__: /logs/**/**/*.{log,txt,out}
pipeline_stages:
- match:
selector: '{job="logs"}'
stages:
- regex:
source: filename
expression: "/logs/(?P<team>.+)/(?P<space>.+)/(?P<pod>.+)/.+"
- template:
source: namespace
template: '{{ .team }}-{{ .space }}'
- labels:
team:
namespace:
pod:

最新更新