如何在Grafana中从systemd journal日志提取服务单元名称?
解决思路
1. 验证Promtail是否正确抓取到_journal_systemd_unit字段
- 查看Promtail运行日志,排查是否有权限问题(比如运行用户是否属于
systemd-journal组,无权限会导致无法读取journal元数据) - 执行
promtail --config.file=你的配置文件路径.yaml --dry-run测试配置,检查输出的日志条目里是否包含_journal_systemd_unit原始字段
2. 修正relabel配置
- 显式指定relabel动作(默认是replace,但明确配置更稳妥),调整后的配置:
scrape_configs: - job_name: journal journal: max_age: 12h labels: job: systemd-journal hostname: "{{.Hostname}}" relabel_configs: - source_labels: ["_journal_systemd_unit"] target_label: "unit" action: replace
- 注意:原配置中
hostname: ''可能导致字段异常,建议改为自动获取主机名的模板写法 - 检查relabel规则顺序,避免后续规则覆盖
unit标签
3. 确认标签在Loki中存在并调整Grafana展示设置
- 在Loki查询界面直接查询
{job="systemd-journal"},查看标签列表确认unit标签是否存在 - 如果Loki中已有
unit标签,进入Grafana日志面板的「Options」->「Log details」,开启「Show labels」选项,或手动添加unit到展示字段中
4. 可选:将单元名称嵌入日志内容
若希望单元名称直接出现在日志文本中,可替换relabel为pipeline_stages:
scrape_configs: - job_name: journal journal: max_age: 12h labels: job: systemd-journal hostname: "{{.Hostname}}" pipeline_stages: - labels: unit: "_journal_systemd_unit" - template: source: message template: '{{.unit}}: {{.message}}'
此配置会在每条日志开头带上单元名称,同时保留unit标签供筛选使用
内容的提问来源于stack exchange,提问作者Falke
相关产品推荐
相关产品推荐

