我正在使用 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
您需要调整正则表达式来匹配日志的特定格式。