ELK~fluentd多行日志的收集
事实上,在sidecar里使用fluentd来收集日志是非常不错的选择,通过对日志文件的监控,将文件定时发到ES里,通过kibana去读取;而你的日志如果使用tail的话,默认是一行一行读取的,这对于多行信息的日志,是非常不友好的,所以今天写一个多行日志读取的方法。
sidecar就是k8s里为pod提供的一个插件,类似于给摩托车加一个连斗,所以又叫连斗模式,即一个pod包含了两个容器,一个是主程序,一个是fluentd程序,如图:
需要用正则
我们在使用时,需要注册,这个多行需要有正则匹配的,这取决于你的日志输出格式,今天我写的日志格式如下:
2020-09-25 16:55:29.555 [XNIO-1 task-1] INFO : hello world!
针对于上面的日志格式,我们的fluentd的配置如下
<source>
type tail
path /var/log/*.log
pos_file /var/log/*.log.pos
tag test
refresh_interval 120
format multiline
multiline_flush_interval 5s
format_firstline /\d{4}-\d{1,2}-\d{1,2}/
format1 /^(?<access_time>\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}.\d{3}) \[(?<thread>.*)\] (?<level>[^ ]*) (?<message>.*)/
</source>
<match **>
@id elasticsearch
@type elasticsearch
index_name fluentd
type_name _doc
host 192.168.60.136
port 9200
include_tag_key true
tag_key @log_name
logstash_format true
flush_interval 10s
logstash_prefix test
</match>
需要注意的事,由于使用到了多行文本的收集,所以你的fluentd客户端需要安装对应的插件,我们这边用的是docker方式,插件已经装好了。
这个技术我研究和尝试了很多次,最后还是成功了!
参考:
https://docs.fluentd.org/parser/regexp
https://github.com/fluent/fluentd/issues/1513
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
2017-09-25 docker~aspnetcore2.0镜像安装软件的加速器
2015-09-25 Node.js教程系列~目录
2013-09-25 陷阱~关于引用类型,请不要模棱两可!
2012-09-25 将不确定变为确定~Linq-Distinct()方法是否可以对复杂结果集进行去重?