logrotate 和 fluentd tail一起处理纯文本日志
fluent @tail 文本文件
开发经常会写程序日志到纯文本文件,我们经常需要使用fluent 或者 fluent bit 的tail 插件读取日志文件信息,并把日志文件信息写到其他日志平台,比如Eleasticsearch
日志文件管理方面存在问题:
- 产生日志的代码中没有分割日志功能,就会造成日志文件越来越来越大。
2:fluentd (td-agent)或者 fluent bit 不会去分割日志。
这里给了一个解决这样的问题的方案场景
- 日志文件被fluent 使用tail读取.
- 日志文件正在被程序写入,没有关闭
- 日志文件定期被logrote 分割
- 避免正在被写的文件被删除来释放磁盘
- 避免日志管理和日志读取冲突
下面例子的日志文件来自一个容器里跑的python 产生的日志, 日志的目录/p2/code/Logs/被mount到容器里
日志内容例子:
2020-01-14 05:40:09,492 - XXX.py[line:37] - INFO: XXX: {‘platform’: ‘aaa’, ‘hotelid’: 54938528, ‘rateplan’: ‘764226438’, ‘checkindate’: ‘2020-02-20’, ‘price’: -1.0, ‘invtory’: 0, ‘status’: 1, ‘msg’: ‘’}
fluentd 配置example
@type tail read_from_head truexxx path /p2/code/Logs/log.log pos_file /p2/code/Logs/x'