#elasticsearch #logstash #elastic-stack
#elasticsearch #logstash #эластичный-стек
Вопрос:
Я использую elk stack для регистрации данных моего сервера, я прочитал в документации, что logstash можно использовать для запуска сигнала тревоги или события через commnand exec
Итак, я пытаюсь сделать то же самое, я хотел бы запустить скрипт, когда в журнале появляется определенный шаблон / строка, пока моя конфигурация выглядит так, как показано ниже. Однако он не работает, и я не могу видеть, выполняется сценарий или нет. С другой стороны, я не уверен, найдена строка или нет, я использовал ту же строку в Kibana, и я могу изолировать сообщение, в котором я хотел бы вызвать тревогу
Что я делаю не так?
РЕДАКТИРОВАТЬ: я запускаю logstash в docker, я монтирую nodeFail.bash том с помощью
volumes:
- /root/t/nodeFail.bash:/tmp/logstash/nodeFail.bash
Заранее спасибо,
$cat logstash.conf
input {
tcp {
port => 5000
}
gelf {
}
}
## Add your filters / logstash plugins configuration here
output {
elasticsearch {
hosts => "elasticsearch:9200"
}
if "All brokers rejected" in [message]
{
exec {
command => "/tmp/logstash/nodeFail.bash aNode 12345 start amp;"
}
}
}
Комментарии:
1. Вы видите что-нибудь в журнале?
2. Только то, что это было начато, но ничего больше
{:timestamp=>"2016-10-10T12:59:10.872000 0000", :message=>"Pipeline main started"}
3. И вы уверены, что соответствующие документы сопоставляются для этого результата? Возможно, вам следует добавить
stdout { codec => "rubydebug" }
сразу послеexec
, чтобы посмотреть, сопоставляются ли соответствующие документы.4. Это так, добавив эту строку, я получаю ожидаемое сообщение, которое должно вызвать exec,
"message" => "e[90m DEBUGe[0m All brokers rejected e[90mDevAddre[0m=12345",
5. Вы уверены, что
/tmp/logstash/nodeFail.bash
это выполнимо? выchmod a x
это сделали?