標籤:
本文描述了一個簡單的case,講解怎麼在logstash進行配置,將多個日誌資料流,通過redis緩衝接收,再匯出到elasticsearch多個索引,即一類日誌資料對應一類索引。
假設有兩組日誌資料由日誌端寫入redis緩衝,兩組日誌標記其類型為redis-data-A和redis-data-B,則編寫logstash設定檔如下
input {
redis {
host => "127.0.0.1"
type => "redis-data-A"
data_type => "list"
key => "listA"
}
redis {
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 }
}
if [type] == "redis-data-B"{
elasticsearch {
host => localhost
index => "logstash_event_b-%{+YYYY.MM.dd}"
}
stdout { codec => rubydebug }
}
}
以上logstash的設定檔中,重點是:
1、在input處,設定兩組redis輸入資料,通過type指定兩組資料的類型
2、在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無法顯示資料。請做如下配置調整:
1、在logstash的目錄logstash-1.4.2/vendor/kibana中,編輯config.js檔案,設定elasticsearch: "http://192.168.1.100:9200",這是我實驗用的伺服器位址
2、在elasticsearch的config目錄,設定elasticsearch.yml,在最後面增加http.cors.enabled: true和http.cors.allow-origin: "*"
Redis+Logstash+Elasticsearch+Kibana多Redis日誌資料流