热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

在安装loghide后,100%的CPU使用率-100%CPUusageafterlogstashinstall

IfollowedthistutorialtoinstallasoftwarestackLogstashESKibanaonmyUbuntuserver.Ichang

I followed this tutorial to install a software stack Logstash/ES/Kibana on my Ubuntu server. I changed logstash configuration to test everything locally before trying to ship logs. So I have a single node running ES/Kibana and Logstash configured as follow :

我根据本教程在Ubuntu服务器上安装了一个软件堆栈日志/ES/Kibana。在尝试发送日志之前,我更改了loghide配置以在本地测试所有内容。因此,我有一个运行ES/Kibana和loghide的节点,配置如下:

input {
  file {
    path => "/var/log/syslog"
    type => "syslog"
  }
}
output {
  elasticsearch { host => localhost }
}

Everything is working as intended from what I can see on Kibana, but I have a background process that eats 100% cpu. Top tells me it's a job in java running under logstash user. sudo service logstash stop does not stop the process from running. I've also tried to remove web service following this, without success. I don't really know where to search from there. Any help is greatly appreciated.

根据我在Kibana上看到的,一切都按照预期运行,但是我有一个消耗100% cpu的后台进程。Top告诉我这是一个运行在loghide用户下的java作业。sudo服务日志存储停止不会停止进程的运行。我也尝试删除web服务,但没有成功。我真的不知道从那里去找什么。非常感谢您的帮助。

2 个解决方案

#1


21  

Digital Ocean's tutorial uses nginx in front of Kibana and listens on port 80. logstash ships with logstash-web that also wants to listen to port 80.

Digital Ocean的教程在Kibana前面使用nginx,并监听80端口。有logstash-web的船,也希望监听端口80。

Since Ubuntu uses upstart, trying to kill the java processes won't succeed as they will keep respawning according to /etc/init/logstash*.conf. The high CPU usage comes from the fact that logstash uses a lot of CPU time at startup and should calm down after a couple of seconds, but because it dies being unable to bind to port 80 and keeps respawning, it looks as if it's constantly using resources.

由于Ubuntu使用upstart,试图杀死java进程不会成功,因为它们将根据/etc/ init/loghide *.conf继续重生。高CPU使用率来自于loghide在启动时使用了大量CPU时间,并且应该在几秒钟后就会平静下来,但是因为无法绑定到端口80并继续重生,所以看起来它似乎一直在使用资源。

If you have the same problem as I did, look at logstash's PIDs and you will notice they change. You should also see Address already in use - bind - Address already in use at the end of /var/log/logstash/logstash.log.

如果你有和我一样的问题,看看loghide的pid,你会发现它们变了。您还应该看到已经在使用中的地址——绑定地址,在/var/ log/logstash/logstash/logstash.log的末尾已经使用了。

So, we just need to disable logstash-web. On Ubuntu, this can be done with:

所以,我们只需要禁用登录-web。在Ubuntu上,这可以通过:

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

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

To stop logstash-web without rebooting, we use

为了在不重新引导的情况下停止登录-web,我们使用

$ sudo stop logstash-web

$ sudo停止logstash-web

#2


0  

You can kill the logstash processes using skill -u logstash. Run logstash in the foreground with increased verbosity.

您可以使用技能-u日志隐藏来终止日志隐藏进程。在前景中运行日志隐藏,增加冗余度。

If you change (temporarily) the output to be just a stdout output, what do you notice?

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

Note that if you'll likely get communication with other nodes; saying host => localhost doesn't mean that you just get communication with port 9300 (I suggest testing with tcpdump on the lo and eth0 (or whatever is appropriate). So check your firewall, and perhaps take the firewall down temporarily.

注意,如果您可能与其他节点进行通信;说主机=> localhost并不意味着您只需要与端口9300进行通信(我建议在lo和eth0上使用tcpdump进行测试(或者任何合适的方法)。所以,检查你的防火墙,或者暂时关闭防火墙。

Also note that localhost may be giving you a IPv6 result; you may like to say 127.0.0.0 instead.

还要注意,localhost可能会给你一个IPv6结果;你可能喜欢说127.0.0.0。

The documentation the elasticsearch output can be seen at logstash docs

弹性搜索输出的文档可以在loghide文档中看到

You don't say if you're using the embedded elasticsearch or not; the default is false, so I guess you are not.

你不会说你是否在使用嵌入的弹性搜索;默认是假的,所以我猜你不是。

I do recall having an issue in my own deployment where logstash and elasticsearch were present on the same host, and there was a collision for port 9300; I resolved that by having logstash use port 9301 (bind_port).

我记得在我自己的部署中有一个问题,在同一个主机上有logstack和弹力搜索,9300端口发生了碰撞;我通过让loghide使用端口9301 (bind_port)解决了这个问题。

I suggest that you should also set the 'cluster'. The default 'protocol' will be 'node', which means it will try to become part of the cluster (not a data-node though), you could trying changing this to 'transport' or http and observe behavior change.

我建议您也应该设置“群集”。默认的“协议”将是“节点”,这意味着它将尝试成为集群的一部分(而不是数据节点),您可以尝试将其更改为“传输”或http并观察行为更改。

I found it very useful to look at the network traffic carefully when I was starting out in order to carefully validate the behavior.

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

FWIW, I found the 'Logstash Book' very worthwhile (and cheap).

FWIW,我发现“日志收藏书”非常有价值(也很便宜)。


推荐阅读
  • MySQL语句大全:创建、授权、查询、修改等【MySQL】的使用方法详解
    本文详细介绍了MySQL语句的使用方法,包括创建用户、授权、查询、修改等操作。通过连接MySQL数据库,可以使用命令创建用户,并指定该用户在哪个主机上可以登录。同时,还可以设置用户的登录密码。通过本文,您可以全面了解MySQL语句的使用方法。 ... [详细]
  • 本文介绍了在Web应用系统中,数据库性能是导致系统性能瓶颈最主要的原因之一,尤其是在大规模系统中,数据库集群已经成为必备的配置之一。文章详细介绍了主从数据库架构的好处和实验环境的搭建方法,包括主数据库的配置文件修改和设置需要同步的数据库等内容。MySQL的主从复制功能在国内外大型网站架构体系中被广泛采用,本文总结了作者在实际的Web项目中的实践经验。 ... [详细]
  • 如何使用PLEX播放组播、抓取信号源以及设置路由器
    本文介绍了如何使用PLEX播放组播、抓取信号源以及设置路由器。通过使用xTeve软件和M3U源,用户可以在PLEX上实现直播功能,并且可以自动匹配EPG信息和定时录制节目。同时,本文还提供了从华为itv盒子提取组播地址的方法以及如何在ASUS固件路由器上设置IPTV。在使用PLEX之前,建议先使用VLC测试是否可以正常播放UDPXY转发的iptv流。最后,本文还介绍了docker版xTeve的设置方法。 ... [详细]
  • Linux学习笔记:psef、ps aux、kill9
    一、查看进程命令1.ps命令Linux中的ps命令是ProcessStatus的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • 如何基于ggplot2构建相关系数矩阵热图以及一个友情故事
    本文介绍了如何在rstudio中安装ggplot2,并使用ggplot2构建相关系数矩阵热图。同时,通过一个友情故事,讲述了真爱难觅的故事背后的数据量化和皮尔逊相关系数的概念。故事中的小伙伴们在本科时参加各种考试,其中有些沉迷网络游戏,有些热爱体育,通过他们的故事,展示了不同兴趣和特长对学习和成绩的影响。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Tomcat/Jetty为何选择扩展线程池而不是使用JDK原生线程池?
    本文探讨了Tomcat和Jetty选择扩展线程池而不是使用JDK原生线程池的原因。通过比较IO密集型任务和CPU密集型任务的特点,解释了为何Tomcat和Jetty需要扩展线程池来提高并发度和任务处理速度。同时,介绍了JDK原生线程池的工作流程。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • RouterOS 5.16软路由安装图解教程
    本文介绍了如何安装RouterOS 5.16软路由系统,包括系统要求、安装步骤和登录方式。同时提供了详细的图解教程,方便读者进行操作。 ... [详细]
author-avatar
三千仇人-奈我何
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有