如何将标签应用于 promtail static_config?

如何将标签应用于 promtail static_config?

我正在使用 rsyslog 从大约 5000 台服务器收集日志。我的收集器正在使用 RFC5424 格式将所有日志写入 NFS 卷上的单个文件。我正在将此 NFS 卷安装到我的 promtail 节点上,并使用 static_config 来抓取文件。我可以在 Loki 中查看日志。

我的问题:我在日志条目中看不到任何标签。我无法根据主机名或任何基于设施的查询执行 LogQL 查询。

这是我的 promtail conf 的相关部分:

scrape_configs:
- job_name: system
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /data/rsyslog.log

有没有办法将标签应用于 static_config?

答案1

是的,您可以这样做static_config,您需要使用 Promtail 的管道阶段来解析日志并提取创建标签所需的信息。

这可能是您的修改版本:

scrape_configs:
- job_name: system
  pipeline_stages:
    # Assuming the logs are in RFC5424 format, use the regex to extract the hostname and facility
    - regex:
        expression: '.*?<(\d+)>(\d+)\s\d+-\d+-\d+T\d+:\d+:\d+.\d+\S+\s+(\S+)\s+.*'
        output:
          source_labels: [facility, hostname]
    # Map the extracted facility number to a facility name
    - labels:
        facility:
          replacement: "${1}"
    - labels:
        hostname:
          replacement: "${2}"
  static_configs:
  - targets:
      - localhost
    labels:
      job: varlogs
      __path__: /data/rsyslog.log

您需要调整正则表达式来匹配日志的特定格式。

相关内容