实时计算里,需要对日志实时收集,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不会少传数据,但有可能多传