logstash alert após 1000 ocorrências

5

Estou tentando fazer com que o Logstash me avise apenas após receber mais de 1.000 itens em 10 minutos. Preciso de alertas no Hipchat e no PagerDuty.

Minha configuração parece razoável, mas não funciona como esperado.

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"
        }
    }
}
    
por Sart 13.05.2015 / 16:55

2 respostas

3

Você pode ter mais sucesso ao usar o filtro métricas .

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
    }
  }
}
    
por 04.02.2016 / 17:42
1

Acho que sua melhor opção seria usar o link . Ele lida com eventos "fluxos" e esse tipo de lógica não seria difícil de representar lá.

O exemplo no link a seguir cria um alerta quando há mais de cinco eventos de um determinado tipo:

(streams
  (where (<= 0 metric 5)
    (with :state "ok" index)
    (else
      (with :state "warning" index))))

link

Saudações

    
por 04.02.2016 / 17:12

Tags