在 promtail 配置中合并两个标签的值

combine value of two lables in promtail config

如何在 promtail config 中添加多个标签的值并将它们分配给另一个标签?

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

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"

OriginId 最终会得到值:machine-id-1_host1_abcde-123。默认separator(如果在配置中指定了none就是;)。

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

这是一个例子:

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

我认为这对你有用。