ubuntu - 作为服务启动时的 Logstash 不断重启

标签 ubuntu elasticsearch jdbc logstash

所以我遇到了与 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/

相关文章:

ruby-on-rails - Rails 生产 : Premature end of script headers

linux - 是否可以为传入的 Syslog 事件指定一个唯一的文件?

azure - 如何连接到Azure上安装的多个节点的elasticsearch集群?如何获取elasticsearch端点?

elasticsearch - Elasticsearch 行到列

java - 如何在创建新数据库之前检查现有的 h2 数据库

ruby-on-rails - ubuntu 12.04 ruby 2.0 rails : Could not find 'thread_safe'

ubuntu - MySQL Workbench 不在钥匙串(keychain)中保存密码

docker - 如何知道弹性重启失败重启容器的原因

java - 来自数据库的动态 Jtree

java - Oracle 日期的无效年份异常