我遇到一个问题,即kafka logstash管道消耗了太多的cpu(启动时大约为300%,几秒钟后为100%),但基本上可以正常工作:该管道可以将kafka中的事件传送到elasticsearch中,而不会出现错误消息
logstash在docker容器中运行,具有最新版本的Lostash(2.1.1,从https://hub.docker.com/_/logstash/开始).
docker run --rm --link kafka:kafka --link elasticsearch:elasticsearch -v "$PWD":/config-dir logstash logstash -f /config-dir/logstash-kafka-elasticsearch.conf
配置文件是这样的:
input {
kafka {
topic_id => 'mytopic'
zk_connect => 'kafka:2181'
}
}
output {
elasticsearch {
hosts=> ['elasticsearch:9200']
}
stdout { codec => rubydebug }
}
我还有其他logstash管道,它们运行良好,并且cpu的使用也很正常(例如,管道使用http作为输入,而kafka作为输出使用〜0%cpu).
我试图注释掉elasticsearch输出,只保留了stdout,问题仍然存在,所以似乎Elasticsearch没有问题.
任何机构都会提出建议吗?
最佳答案
logstash-input-kafka插件在其紧密循环中存在一个错误,该错误不必要地检查了空队列,并跳至下一个迭代而不是阻塞.
此问题已在this pull request和插件has been released的2.0.3版本中修复.
要对此进行测试,请使用以下命令更新插件:
bin/plugin install –version 2.0.3 logstash-input-kafka