Promtail轮转日志配置问题:标签显示与日志路径咨询
Promtail配置问题解决方案
1. 统一logfile标签为request.log(覆盖所有轮转文件)
日志轮转后生成request.log.2025-04-08这类文件,要让所有相关日志的logfile标签统一显示为request.log,需修改relabel规则的正则表达式,精准匹配并替换:
relabel_configs: - source_labels: [__path__] regex: '/var/log/(request\.log)(?:\..*)?' # 匹配request.log及所有带日期后缀的轮转文件 target_label: logfile replacement: '${1}' # 仅保留request.log作为标签值 action: replace
该正则会捕获request.log核心部分,忽略后续后缀,最终所有对应日志的logfile标签都会统一为request.log。
2. 修复logfile标签未在Grafana显示的问题
当前配置中,pipeline_stages的labels字段包含logfile,但logfile是通过relabel_configs生成的目标标签,不属于日志内容本身的字段,pipeline阶段无法直接读取并重复添加。只需移除pipeline中labels里的logfile项即可,relabel生成的logfile标签会自动附加到日志条目上:
pipeline_stages: - match: selector: '{job="django"}' stages: - json: expressions: request_time: request_time status_code: status_code method: method path: path device_id: device_id optional: true - regex: expression: '^(?P<ts>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z)' - labels: device_id status_code method path # 移除此处的logfile - timestamp: source: request_time format: RFC3339 - timestamp: source: ts format: RFC3339
3. __path__配置说明
必须使用/var/log/*.log*,原因如下:
*.log仅能匹配以.log结尾的文件(即当前正在写入的request.log);- 轮转后的日志文件名格式为
request.log.2025-04-08,后缀为.log.xxx,只有*.log*才能匹配这类带额外后缀的轮转文件,确保所有历史日志都被采集。
修改后的完整配置
server: http_listen_port: 9080 grpc_listen_port: 0 positions: filename: /tmp/positions.yaml clients: - url: http://loki:3100/loki/api/v1/push scrape_configs: - job_name: django-logs static_configs: - targets: - localhost labels: job: django env: local __path__: /var/log/*.log* relabel_configs: - source_labels: [__path__] regex: '/var/log/(request\.log)(?:\..*)?' target_label: logfile replacement: '${1}' action: replace pipeline_stages: - match: selector: '{job="django"}' stages: - json: expressions: request_time: request_time status_code: status_code method: method path: path device_id: device_id optional: true - regex: expression: '^(?P<ts>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}Z)' - labels: device_id status_code method path - timestamp: source: request_time format: RFC3339 - timestamp: source: ts format: RFC3339
内容的提问来源于stack exchange,提问作者Arabboy Mamadaliev
相关产品推荐
相关产品推荐

