logstash安装后100%的CPU使用率

时间:2014-09-16 11:11:38

标签: ubuntu logstash

我按照this教程在我的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不会阻止进程运行。我还试图在this之后删除网络服务,但没有成功。 我真的不知道从哪里搜索。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:21)

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

因此,我们只需要禁用 logstash-web 。在 Ubuntu 上,可以通过以下方式完成:

  

$ echo manual | sudo tee /etc/init/logstash-web.override

要停止 logstash-web 而不重新启动,我们使用

  

$ sudo stop logstash-web

答案 1 :(得分:0)

您可以使用skill -u logstash终止logstash进程。在前台运行logstash,增加了详细程度。

如果您(暂时)将输出更改为stdout输出,您会注意到什么?

请注意,如果您可能与其他节点进行通信;说host => localhost并不意味着您只是与端口9300进行通信(我建议您使用tcpdumplo上的eth0进行测试(或其他这是合适的。所以检查防火墙,或者暂时关闭防火墙。

另请注意,localhost可能会为您提供IPv6结果;您可能想要127.0.0.0代替。

弹性搜索输出的文档可以在logstash docs

看到

如果您使用的是嵌入式弹性搜索,您不会说;默认值为false,所以我猜你不是。

我确实记得在我自己的部署中遇到问题,其中logstash和elasticsearch存在于同一主机上,并且端口9300发生了冲突;我通过使用logstash使用端口9301(bind_port)来解决这个问题。

我建议你也应该设置'群集'。默认的'协议'将是' node',这意味着它将尝试成为群集的一部分(虽然不是数据节点),您可以尝试将其更改为' transport'或http并观察行为变化。

我发现在我开始时仔细查看网络流量非常有用,以便仔细验证行为。

FWIW,我找到了#Logstash Book'非常值得(又便宜)​​。