主要是想使用filebeat 直接输出到es,不使用logstash。用于日志抓取。
问题:filebeat把日志输出到es后,查看日志的时候发现日志里面的顺序是乱的。
开发人员看起来非常费劲。
例如:
April 12th 2018, 15:44:29.443 2018-04-12 15:44:25 871 DEBUG xxx
April 12th 2018, 15:44:29.443 2018-04-12 15:44:25 871 DEBUG
April 12th 2018, 15:44:29.443 2018-04-12 15:44:25 872 INFO
April 12th 2018, 15:44:29.443 2018-04-12 15:44:25 869 INFO
April 12th 2018, 15:44:29.443 2018-04-12 15:44:25 871 DEBUG
April 12th 2018, 15:44:29.443 2018-04-12 15:44:25 871 INFO
April 12th 2018, 15:44:29.443 2018-04-12 15:44:25 869 INFO
April 12th 2018, 15:44:29.443 2018-04-12 15:44:25 869 DEBUG
April 12th 2018, 15:44:29.443 2018-04-12 15:44:25 870 DEBUG
后面的毫秒是乱的没有正常排序输入到es。
请哪位对filebeat比较了解的帮忙解答下!
谢谢!
那得看你的日志采集自一台机器, 还是多台机器; 你的 filebeat 和你的 es 是在一台机器, 还是分属两台机器.
按我的理解, 如果 filebeat 配置中没有开启 publish_async 选项, 那么单一 filebeat 实例的输出总是和文件顺序一致的.
但如果你在多台服务器上部署了多个 filebeat, 因为各个系统时钟未必时刻完全一致(导致日志记录的时间在各个服务器上未必一致), 且中间经过网络传输, 就没法保证 es 接到的数据和日志中标明的时序一样.
即使只有一个 filebeat 实例, 如果和 es 部署在不同服务器上, 那也只排除了系统时钟问题, 但网络问题依然可能导致后发的日志先被 es 收到.
如果对日志时序有要求, 最好还是过一道 logstash, 把日志时间解析成 es 的 timestamp.