鍍金池/ 問(wèn)答/網(wǎng)絡(luò)安全/ filebeat輸出到es,日志順序亂了?

filebeat輸出到es,日志順序亂了?

主要是想使用filebeat 直接輸出到es,不使用logstash。用于日志抓取。

問(wèn)題:filebeat把日志輸出到es后,查看日志的時(shí)候發(fā)現(xiàn)日志里面的順序是亂的。
開發(fā)人員看起來(lái)非常費(fèi)勁。
例如:

        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。

請(qǐng)哪位對(duì)filebeat比較了解的幫忙解答下!

謝謝!

回答
編輯回答
久礙你

那得看你的日志采集自一臺(tái)機(jī)器, 還是多臺(tái)機(jī)器; 你的 filebeat 和你的 es 是在一臺(tái)機(jī)器, 還是分屬兩臺(tái)機(jī)器.

按我的理解, 如果 filebeat 配置中沒有開啟 publish_async 選項(xiàng), 那么單一 filebeat 實(shí)例的輸出總是和文件順序一致的.
但如果你在多臺(tái)服務(wù)器上部署了多個(gè) filebeat, 因?yàn)楦鱾€(gè)系統(tǒng)時(shí)鐘未必時(shí)刻完全一致(導(dǎo)致日志記錄的時(shí)間在各個(gè)服務(wù)器上未必一致), 且中間經(jīng)過(guò)網(wǎng)絡(luò)傳輸, 就沒法保證 es 接到的數(shù)據(jù)和日志中標(biāo)明的時(shí)序一樣.
即使只有一個(gè) filebeat 實(shí)例, 如果和 es 部署在不同服務(wù)器上, 那也只排除了系統(tǒng)時(shí)鐘問(wèn)題, 但網(wǎng)絡(luò)問(wèn)題依然可能導(dǎo)致后發(fā)的日志先被 es 收到.

如果對(duì)日志時(shí)序有要求, 最好還是過(guò)一道 logstash, 把日志時(shí)間解析成 es 的 timestamp.

2017年10月1日 00:44