所以我遇到了与 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 -f conf_file) 启动 logstash 时,我设法使其正常工作:logstash 启动、导入数据并关闭。正如预期的那样。
现在,当我在将 logstash 作为服务启动时尝试执行相同的操作时,它会继续导入数据并一遍又一遍地重新启动。
上面的链接提供了一个解决方案,但它实际上是错误的。它表示当未指定“计划”选项时,将使用默认的 1 分钟计时器。这与文档中所说的直接矛盾 here :
There is no schedule by default. If no schedule is given, then the statement is run exactly once.
最佳答案
以下是我认为的解释: 当 logstash 作为服务启动并且配置文件没有“计划”选项时,一旦它完成导入数据,logstash 就会自行关闭。问题在于,因为它是作为服务启动的,所以服务管理器(systemctl)检测到该服务已离线并一遍又一遍地“复活它”。
当使用计划选项时,服务会显示事件状态,因此没有问题。
关于ubuntu - 作为服务启动时的 Logstash 不断重启,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44967990/