ELKB日誌流:讀取Redis隊列

0、引言

Logstash.input可以支持Redis的三種data_type,分別是list,channel,pattern_channel;
數據流轉 : Redis >> Logstash >> Elasticsearch
本次主要講解Logstash從Redis-list讀取數據,存入ES。
channel類型實踐後會更新

官方文檔

1、數據類型

Logstash對Redis不同的數據類型會導致實際採用不同的 Redis 命令操作:

數據類型 對應操作 類型理解
list BLPOP 隊列
channel SUBSCRIBE 發佈訂閱的某個特定的頻道
pattern_channel PSUBSCRIBE 發佈訂閱某組頻道

2、配置參數

添加配置文件,重啓Logstash並引入。

vim test-redis.conf #配置名字自定義就可以,以.conf 結尾
input {
  redis {
	host => "xxxx"			#redis地址
    port => "6379"			#redis端口號
    password => ''			#如果有安全認證,此項爲密碼
    db => "0"				#redis數據庫 默認0
    data_type => "list"		#redis插件工作方式
	key => "test1"			#redis的鍵值
    }
}

output {
  elasticsearch {
    hosts => ["xxxx:9200"]
    index => "redis-test1-%{+YYYY.MM.dd}"
  }
}

3、其他的參數

  • db
    Redis裏面有數據庫的概念,一般是16個,默認登錄後是0,可以通過命令選擇。如果應用系統選擇使用了不同的數據庫,那麼可以通過配置這個參數從指定的數據庫中讀取信息。

  • key
    Redis中的數據都是通過鍵值來索引的,不管是字符串還是列表,所以這個key相當於數據庫中的表。
    如果是list或者channel模式,key都是指定的鍵值;而如果是pattern_channel,那麼key可以通過glob通配的方式來指定。

  • password
    有的Redis爲了安全,是需要進行驗證的。只有設置了password,才能正確的讀取信息。相反,如果redis沒有設置密碼,而logstash中配置了密碼,也會報錯!

ERR Client sent AUTH, but no password is set
解決方案 : 就是將配置文件中的password註釋掉。

4、測試

因爲對於list類型,Logstash的操作是BLPOP,所以我們向隊列插入數據時使用:
RPUSH test1 “hello world”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章