Redis+Logstash+Elasticsearch+Kibana多Redis日誌數據流

本文描述了一個簡單的case,講解怎麼在logstash進行配置,將多個日誌數據流,經過redis緩存接收,再導出到elasticsearch多個索引,即一類日誌數據對應一類索引。redis

假設有兩組日誌數據由日誌端寫入redis緩存,兩組日誌標記其類型爲redis-data-A和redis-data-B,則編寫logstash配置文件以下瀏覽器

input { 緩存

redis { ruby

host => "127.0.0.1"服務器

type => "redis-data-A"cors

data_type => "list"elasticsearch

key => "listA"測試

spa

redis { debug

host => "127.0.0.1"

type => "redis-data-B"

data_type => "list"

key => "listB"

}


output {

if [type] == "redis-data-A"{

elasticsearch { 

host => localhost 

index => "logstash_event_a-%{+YYYY.MM.dd}"

}

stdout { codec => rubydebug }

}

else if [type] == "redis-data-B"{

elasticsearch { 

host => localhost 

index => "logstash_event_b-%{+YYYY.MM.dd}"

}

stdout { codec => rubydebug }

}

}


以上logstash的配置文件中,重點是:

一、在input處,設置兩組redis輸入數據,經過key指定數據來源,這是日誌端將日誌數據寫入redis的隊列中;經過type指定兩組數據的類型

二、在output處,經過if [type] == "",設置條件輸出。當知足type == redis-data-A,將數據導出到elasticsearch,索引格式爲"logstash_event_a-%{+YYYY.MM.dd}"。若是type == redis-data-B,則導出索引格式爲"logstash_event_b-%{+YYYY.MM.dd}"。注意,索引格式不能有大寫字符,不然elasticsearch會報錯。


測試,使用redis-cli命令鏈接redis服務,嘗試在兩個隊列listA和listB寫入數據。listA只輸入英文字符,listB只輸入數字。這裏只是爲了演示,實際開發中使用Java或者Python鏈接redis-server,而後寫入JSON格式的字符串便可。Logstash會拆解JSON字符串,將數據正確地寫入elasticsearch索引。很是方便。


打開 kibana,進入其首頁,點擊紅框所示的標準界面


點擊最右上角的齒輪按鈕,配置dashborad讀取redis-data-A日誌數據的索引,即以logstash_event_a-開頭的索引數據(一樣的方法能夠設置logstash_event_b-開頭的)


點擊保存後,dashboard頁面刷新,能夠看到顯示的message內容,還有type裏記錄的redis-data-A,表示咱們成功獲取到了此類日誌的數據,全是英文字符,且type爲redis-data-A


爲了不關閉瀏覽器後,下次重複以上配置,點擊界面右上方的保存按鈕,將這個配置保存下來。之後,只要點擊打開圖標,就能夠找到這個配置了。


使用一樣的方法查看日誌數據redis-data-B,全是數字,且type爲redis-data-B


注意事項:若是出現kibana沒法顯示數據。請作以下配置調整:

一、在logstash的目錄logstash-1.4.2/vendor/kibana中,編輯config.js文件,設置elasticsearch: "http://192.168.1.100:9200",這是我試驗用的服務器地址

二、在elasticsearch的config目錄,設置elasticsearch.yml,在最後面增長http.cors.enabled: true和http.cors.allow-origin: "*"

相關文章
相關標籤/搜索