實時計算里,需要對日志實時收集,logstash可以做到。目前的版本是1.4.2,官方文檔在http://www.logstash.net/docs/1.4.2/,里面有詳細的配置說明,使用也很簡單。這里主要對logstash的可靠性做了簡單的驗證
intput為file,kill掉logstash進程
每100ms打印一條日志,用logstash讀取;每隔20s殺掉logstash進程,又重啟。發現logstash會有高概率重發日志,也有少量發送空消息,要注意代碼中要過濾重復消息和空消息
關閉output
- output為redis,kill掉redis后,logstash向redis的寫操作會阻塞。等到redis恢復后,會接着寫,不會丟數據
- output為kafka,使用logstash-kafka這個插件(https://github.com/joekiller/logstash-kafka)。kafka通常是集群,kill掉其中一個進程,會有短暫的kafka服務不可用,logstash側會做失敗重試,只要重試次數足夠多,不會丟數據;如果kafka所有進程都kill掉,logstash側還是會一直重試,超過上限閾值后,就會丟棄數據,這里就會存在丟數據的可能
logstash單點
一台服務器一般只允許一個logstash進程,如果進程掛掉了,沒有自動恢復機制,要想辦法手工拉起它
小結
這里只試驗了input為file的情況,總的來說logstash不會少傳數據,但有可能多傳