所以我遇到的问题与https://discuss.elastic.co/t/consistent-restarts-of-logstash-with-high-cpu-recorded/86597中描述的完全相同:
我在Ubuntu上运行Logstash作为服务。我正在通过
启动它sudo systemctl start logstash.service
我的任务很简单:以一次性方式将数据从jdbc(MySQL)导入Elasticsearch(因此没有调度选项。没有cron计时器)。所以在上面的链接中,我使用的是JDBC输入过滤器。和elasticsearch输出过滤器。
当我通过命令行直接启动logstash(logstash -f conf_file)时,我设法让它运行良好:logstash启动,导入数据并关闭。正如预期的那样。
现在,当我在将logstash作为服务启动时尝试执行相同操作时,它将继续导入数据并重复重新启动。
上面的链接提供了解决方案,但实际上是错误的。它表示当没有指定“schedule”选项时,使用默认的1分钟计时器。这与文档中所说的here:
直接矛盾默认情况下没有时间表。如果没有给出时间表,那么 语句只运行一次。
答案 0 :(得分:2)
以下是我认为的解释: 当logstash作为服务启动并且配置文件没有“schedule”选项时,一旦完成导入数据,logstash就会自行关闭。问题在于,因为它是作为服务启动的,所以服务管理器(systemctl)检测到服务处于脱机状态并一遍又一遍地“复活”。
当使用计划选项时,服务会显示为活动,因此没有问题。
答案 1 :(得分:0)
还有一种情况:logstash conf文件写不正确时,logstash一直在重启,所以如果你有这个问题,首先检查语法是否正确