【问题标题】:Logstash output conditional on elasticsearch connection以弹性搜索连接为条件的 Logstash 输出
【发布时间】:2016-04-20 03:57:10
【问题描述】:

我目前正在使用logstash解析并输出几个类似命令的结果到elasticsearch,类似这样:

input {
  exec {
    type => 'hist'
    command => '/usr/bin/somecommand'
    interval => 900
    codec => "json"
  }

  exec {
    type => 'hist'
    command => '/usr/bin/somecommand'
    interval => 900
    codec => "json"
  }

  exec {
    type => 'hist'
    command => '/usr/bin/somecommand'
    interval => 900
    codec => "json"
  }
}

output {
        if [type] == "hist" {
                elasticsearch {
                        hosts => ["hostname.domain.com:9200"]
                        index => "monitor-hist-%{+YYYY-MM-dd}"
                }
        }
}

如果与 elasticsearch 的连接失败,我希望能够输出到 stdout 或文件,例如:

if _connectionfails_ {
    stdout {
          codec => rubydebug
    }
}

这可能吗?或者在弹性不可用时管理数据的任何其他建议?

【问题讨论】:

  • 当输入失败时你甚至会得到一个事件吗?如果没有,就没有任何东西可以过滤或输出。它将记录故障,因此您可以将 logstash 日志摄取到另一个弹性堆栈中并以这种方式查找故障。
  • 通常情况下,如果连接失败,它会无限重试。
  • @PriyanshGoel 我在这里注意到:elastic.co/guide/en/logstash/current/… 但我不清楚它是如何“缓冲”这些数据的。所以说集群关闭了 30 多分钟。会有两次运行失败,这两个运行是否都会继续重试,直到集群启动?重试时数据是否保留在堆中?或者可能暂时提交到磁盘?
  • 希望我的回答能消除你的疑惑

标签: elasticsearch logstash logstash-configuration


【解决方案1】:

Logstash 在处理过程中将所有事件保存在主内存中。 Logstash 通过尝试停止输入并等待待处理的事件在关闭之前完成处理来响应 SIGTERM。当由于输出或过滤器卡住而无法刷新管道时,Logstash 会无限期地等待。例如,当管道将输出发送到 Logstash 实例无法访问的数据库时,该实例会在收到 SIGTERM 后无限期等待。

【讨论】:

  • 好吧,我想知道的是,假设我们的 elasticsearch 集群在半夜发生故障,而我们在 8 小时内都没有注意到。因为我在上面发布的 logstash 配置每 15 分钟运行一次,所以可能会重试多达 32 次运行的数据。这可能是几个 GB。那么,如果logstash 一直在尝试传递这些数据,并且不断堆积,我是否可能会在某个时候出现OutOfMemoryError?这就是我的问题的第二部分。如果我可以让logstash在一段时间后中止连接尝试并将数据输出到磁盘,我可以防止这种情况发生吗?
  • 如果发生这种情况,它也会停止接收输入。 “Logstash 通过尝试停止输入来响应 SIGTERM”这一行在我的回答中暗示了相同的内容。
  • 啊好的,所以它只会重试传递第一个错过的运行?以下运行将被丢弃或忽略?
  • 是的,在你的情况下它会发生。
  • 好的,很高兴知道。那么,可以做些什么来“缓冲”这个重试数据呢?我正在考虑输出到文件,因此是问题的第二部分。如果弹性输出失败,有没有办法输出到文件或其他方式来缓冲数据?如果弹性连接成功,也许我总是可以输出一个文件然后删除该文件?
猜你喜欢
  • 1970-01-01
  • 2022-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-16
  • 2022-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多