logstash無法讀取redis資料

來源:互聯網
上載者:User

標籤:logstash redis elas

今天搭建logsatsh+redis+elasticsearch時出現了問題,經過近一小時排查,終於解決。記錄一下。

環境是這樣,一台用戶端發送資料到位於伺服器的redis,伺服器端的logstash讀redis的資料,儲存到elasticsearch中。

初步問題是這樣的:在伺服器端,沒有收到用戶端發送過來的日誌。

這樣就可能有兩種問題:一是用戶端的logstash沒有成功發送資料到redis,二是伺服器端的logstash無法從redis讀取資料。

排查問題一

 

為了避免redis中原有資料影響判斷,首先清空redis中的資料:

進去redis目錄下

src/redis-cli,串連到redis,執行fulshdb,會刪除當前選中的資料庫。這裡的資料庫其實是用KEY表示的,執行:

KEYS *


可以查看所有的KEY,這裡的key和我們設定檔中的key是對應的,選中它,刪除:

select $keyflushdb


在設定檔中,添加stdout{},將日誌列印到螢幕。

由於配置的input為file,其在使用者主目錄有一個記錄讀取內容位置的檔案: .sincedb*。為了防止因為沒有新日誌導致誤判,因此先刪除這個檔案,然後重新啟動Logstash。

此時發現螢幕是有日誌輸出的。然後查看redis中是否有相應的key:

KEYS *

如果有,就說明我們已經將資料發送到redis了。我這裡是有的,因此排除了第一個問題的可能性。

排查問題二

為了避免elasticsearch中原有資料的影響,先清除elsaticsearch中的資料:

curl -XDELETE 'http://localhost:9200/_all'

然後同樣在設定檔中添加stdout{}輸出。

啟動logstash,發現沒有螢幕沒有日誌輸出。。現在問題確定了。。

解決

既然redis裡面有資料,es為什麼取不到呢?難道是因為沒串連到redis?還是key和data_type沒對上?

因為redis和伺服器端的Logstash是在同一台機器上,之前寫的host是本機ip,看官方文檔寫的127.0.0.1,遂改成127.0.0.1。

為了避免用戶端和伺服器端的key和data_type沒對上,而且查看官方文檔,看裡面寫的是雙引號,死馬當活馬醫吧。把伺服器端的都改成雙引號,然後把key和data_type複製到用戶端的設定檔。

重啟,OK了!順便貼下設定檔。

伺服器端:

用戶端:

 


 

 

logstash無法讀取redis資料

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.