场景:处理多行日志(Java)
febbweiss/java-log-generator – Docker Image | Docker Hub
grafana – Promtail error pipeline stage must only contain one key – Stack Overflow
promtail multiline Code Example
第一步、更新 Promtail 配置:
... - job_name: kubernetes-pods pipeline_stages: - cri: {} # 通过 firstline 匹配多行日志开始 - multiline: firstline: ^(\d{2})-(\d{2})-(\d{4}) (\d{2}):(\d{2}):(\d{2}) max_lines: 128 max_wait_time: 3s ...
第二步、创建能够产生多行日志的容器,以用于测试:kubectl apply -f ./promtail-testing.yaml
第三步、最后,在 Grafan 中,观察 Java 日志是否被合并为单条日志记录;
Q:那么多日志,如果下一行是未匹配 firstline 的常规日志会怎样(两行日志具有不同格式)?
A:我们实在查看日志平台时产生的该疑问。实质上,同个日志文件,它的日志行是相同格式,如果下一行不匹配这种模式,则为视为多行日志。如果一个日志文件中具有多种日志格式行,则需要修改软件的设计,保持相同的日志格式;