我目前正在使用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
}
}
这可能吗?或者在弹性不可用时管理数据的任何其他建议?
答案 0 :(得分:1)
Logstash会在处理过程中将所有事件保留在主内存中。 Logstash通过尝试暂停输入并等待挂起事件在关闭之前完成处理来响应SIGTERM。当由于输出或过滤器卡住而无法刷新管道时,Logstash会无限期地等待。例如,当管道将输出发送到Logstash实例无法访问的数据库时,实例会在收到SIGTERM后无限期地等待。