You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:03:18