這兩天在搞elk的時候,filebeat中指定輸出日志至Broker(此處Broker采用redis作為緩存),但是redis中卻沒有內容,所以就開始排查來
filebeat采用RPM安裝的方式來的。
1、首先是檢查filebeat的配置文件是否有問題:

注意:這個配置文件的這個紅色方框中的內容是我自己定義的,是在網上搜的一個例子來編寫的。不過事實上我們可以在/etc/filebeat這個目錄下的filebeat.reference.yml按照這個文件中來進行仿寫,但是最終要寫到filebeat.yml文件中才算生效。這是filebeat服務指定的配置文件。

也出現過一個問題就是filebeat服務總是啟動不了,總是失敗,報錯也是跟服務沒有關系的一個錯誤,后來修改了這個配置文件成功了,我們這里是將日志收集在redis中,除了redis之外的其他broker都要注釋掉。
2、接下來是指定redis配置文件參數
其中在redis中主要指定的參數是:bind 0.0.0.0 以及protected-mode no 這兩項,要修改成現在的這個樣子才行。或者說把bind 這一行注釋掉也行。
3、這個時候再重啟filebeat服務和redis服務。今天出現的情況是redis里面的數據庫“2”里面什么文件都沒有,查詢不到filebeat收集的信息。
此時沒有收集到信息我就去查看這兩個服務的日志文件,redis的日志里面沒有報錯,初始化也成功了,所以沒有問題。這個時候就去查看filebeat服務
4、filebeat服務的日志文件在/var/log/filebeat目錄下,主要有以下幾個:

這里查看filebeat這個文件,其他的都是每次重啟后都會自動生成一個filebeat文件名字加一個數字的這個文件。主要看這里的第一個文件“filebeat”
5、我們從這個文件的最后幾行獲取error信息即可,就能定位到錯誤在哪里,不過我自己定位了好幾次才找到。如果最后幾行長時間不報錯的情況下,說明redis可以建立連接成功。如果報redis 的錯誤refuse等,說明redis拒絕外部IP連接,這個時候要去配置redis的配置文件即可。可是對我來說filebeat沒有報錯但是redis數據庫就是沒有信息,后來我就在filebeat服務的配置文件里面修改了數據庫,這次修改為“4”,(這是數據庫的名字),這個時候再重啟filebeat,,居然成功了,好吧,估計是我對redis不太熟造成的。這個時候filebeat的日志文件也沒有報錯,再去查看數據庫,發現里面有東西了。

6、今天看到一篇文章講的是logstash從redis中取出數據后,redis里面也是沒有數據的,這個時候其實集群是沒有錯誤的,只是被logstash取出數據放在了es里面。所以大家不必驚慌。
----------------------------------------------------------更新---------------------------------------------------------------
此刻3月16日,今天做個實驗,是把filebeat的輸入端中的-type想自定義修改成errorlog,結果沒有輸出日志,后來才發現,這個type的內容是filebeat固定好的,不能修改。

出問題最好查日志。精准問題所在,及時解決問題。
