настоящее время я использую logstash для анализа и вывода результатов нескольких аналогичных команд elasticsearch, похожее на это: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}"
}
}
}
То, что я хотел бы, чтобы иметь возможность для вывода stdout или файл, если соединение с поиском elasticsearch завершается неудачно, например:
if _connectionfails_ {
stdout {
codec => rubydebug
}
}
Возможно ли это? Или любые другие рекомендации по управлению данными, когда эластичность недоступна?
Вы даже получаете событие, когда вход не работает? Если нет, фильтровать или выводить нечего. Он будет регистрировать сбой, так что вы можете глотать журналы logstash в другой эластичный стек и искать ошибки таким образом. –
Обычно, если соединение не выполняется, оно идет для бесконечных попыток. –
@PriyanshGoel Я заметил, что здесь: https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#_retry_policy, но мне не ясно, как это «буферизирует» эти данные. Поэтому скажите, что кластер отключен на 30 + минут. Было бы два прогона, которые потерпели бы неудачу, оба из них продолжают повторять попытку до тех пор, пока кластер не встанет? Сохраняются ли данные в куче во время повторной попытки? Или, возможно, временно привязан к диску? – anthozep