Logstash输出以elasticsearch连接为条件

时间:2016-04-19 18:43:06

标签: elasticsearch logstash logstash-configuration

我目前正在使用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
    }
}

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

1 个答案:

答案 0 :(得分:1)

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