Я пытаюсь заставить Logstash предупреждать меня только после того, как он получит более 1000 элементов в течение 10 минут. Мне нужны оповещения как в Hipchat, так и в PagerDuty.
Моя конфигурация кажется разумной, но работает не так, как ожидалось.
filter {
if my_filtering_conditional_that_is_100%_correct {
throttle {
before_count => 1000
period => 600
add_tag => ["PD"]
key => "string"
}
clone {
add_tag => ["Count"]
}
}
if "Count" in [tags] {
throttle {
before_count => 1000
period => 600
add_tag => ["HC"]
key => "string"
}
}
}
output {
if "PD" in [tags] {
pagerduty {
event_type => trigger
incident_key => "logstash/Logstash"
service_key => Pagerduty_API_key
workers => 1
description => "Alert message"
}
}
if "HC" in [tags] {
hipchat {
color => "random"
from => "Logstash"
format => "Alert message"
room_id => "Room"
token => "token"
}
}
}
Вы можете добиться большего успеха, используя метрики фильтр.
filter {
my_filtering_conditional_that_is_100%_correct {
metrics {
meter => [ "events" ]
flush_interval => 600
clear_interval => 600
add_tag => "events"
}
}
}
output {
if "events" in [tags] {
if [events][count] > 1000 {
# do things
}
}
}
Я думаю, что лучшим вариантом будет использование http://riemann.io/. Он обрабатывает «потоки» событий, и такую логику было бы несложно представить там.
Пример по следующей ссылке создает предупреждение, когда существует более 5 событий определенного типа:
(streams
(where (<= 0 metric 5)
(with :state "ok" index)
(else
(with :state "warning" index))))
http://riemann.io/howto.html#set-thresholds
Приветствую,