问题描述
该笔记将记录:如何通过 Promtail 抓取 systemd journal 日志,以及相关问题的解决办法。
解决方案
补充说明:我们通过 Helm 部署 Promtail 实例,所以如下配置内容与 Helm Chart 具有相关性(但其他部署方式的配置思路也是相似的)
第一步、修改 Promtail 配置
挂载系统日志目录
修改 Helm Chart values.yaml 文件:
... extraVolumes: - name: journal hostPath: path: /var/log/journal ... extraVolumeMounts: - name: journal mountPath: /var/log/journal readOnly: true ...
配置日志文件抓取
extraScrapeConfigs: | ... - job_name: systemd-journal journal: labels: job: systemd-journal path: /var/log/journal max_age: 12h relabel_configs: - source_labels: - __journal__systemd_unit target_label: systemd_unit - source_labels: - __journal__hostname target_label: hostname - source_labels: - __journal_syslog_identifier target_label: syslog_identifier ...
第二步、增加 Dashboard 配置
我们没有找到满足需求的 Dashboard 配置,所以我们创建简单的 Dashboard 配置:
Variable:
1)loki_datasource:
2)hostname: label_values(hostname)
3)systemd_unit: label_values({hostname=~”$hostname”}, systemd_unit)
4)search: Text box
Pannel
1)Log browser: {hostname=”$hostname”,systemd_unit=”$systemd_unit”} |~ “(?i)$search”
参考文献
Grafana Loki documentation/Scraping/Journal Scraping (Linux Only)
Loki tutorial: How to send logs from EKS with Promtail to get full visibility in Grafana | Grafana Labs