[英]100% CPU usage after logstash install
我按照本教程在我的Ubuntu服务器上安装了一个软件堆栈Logstash / ES / Kibana。 在尝试发送日志之前,我更改了logstash配置以在本地测试所有内容。 所以我有一个运行ES / Kibana和Logstash的节点配置如下:
input {
file {
path => "/var/log/syslog"
type => "syslog"
}
}
output {
elasticsearch { host => localhost }
}
一切都按照我在Kibana上看到的预期工作,但我有一个后台进程,可以吃掉100%的cpu。 Top告诉我这是在logstash用户下运行的java工作。 sudo service logstash stop
不会阻止进程运行。 我也试过以下删除Web服务这个 ,没有成功。 我真的不知道从哪里搜索。 任何帮助是极大的赞赏。
Digital Ocean的教程在Kibana前使用nginx并侦听端口80.logstash附带了logstash-web ,它也想收听端口80。
由于Ubuntu使用upstart ,因此尝试杀死java进程将无法成功,因为它们将根据/etc/init/logstash*.conf
继续重新生成。 高CPU使用率来自于logstash在启动时使用大量CPU时间并且应该在几秒后冷静下来这一事实,但由于它死于无法绑定到端口80并保持重生,看起来好像它一直在使用资源。
如果您遇到与我相同的问题,请查看logstash的PID ,您会发现它们发生了变化。 您还应该看到Address already in use - bind - Address already in use
/var/log/logstash/logstash.log
末尾Address already in use - bind - Address already in use
。
所以,我们只需要禁用logstash-web 。 在Ubuntu上 ,这可以通过以下方式完成:
$ echo手册| sudo tee /etc/init/logstash-web.override
要停止logstash-web而不重新启动,我们使用
$ sudo stop logstash-web
您可以使用skill -u logstash
来终止logstash进程。 在前台运行logstash,增加详细程度。
如果您(暂时)将输出更改为stdout输出,您会注意到什么?
请注意,如果您可能与其他节点进行通信; 说host => localhost
并不意味着你只是通过端口9300
通信(我建议在lo
和eth0
(或任何合适的地方)上使用tcpdump
进行测试。所以请检查你的防火墙,或者暂时关闭防火墙。
另请注意, localhost
可能会为您提供IPv6结果; 你可能想说127.0.0.0
而不是。
可以在logstash文档中看到elasticsearch输出的文档
你没有说你是否使用嵌入式弹性搜索; 默认为false,所以我猜你不是。
我记得在我自己的部署中遇到问题,其中logstash和elasticsearch存在于同一主机上,并且端口9300发生冲突; 我通过使用logstash使用端口9301
(bind_port)解决了这个问题。
我建议你也应该设置'集群'。 默认的“协议”将是“节点”,这意味着它将尝试成为群集的一部分(尽管不是数据节点),您可以尝试将其更改为“传输”或http
并观察行为更改。
我发现在我开始时仔细查看网络流量非常有用,以便仔细验证行为。
FWIW,我发现'Logstash Book'非常值得(而且便宜)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.