2015-11-13 3 views
1

Я пытаюсь отправить сообщение электронной почты из logstash с помощью Riemann. Моя электронная почта должна срабатывать по определенным критериям. Я написал конфигурацию Riemann для отправки оповещения по электронной почте о том, что я отправляю определенные события из logstash, у меня есть hardcoded :description, но на моем сервере Riemann я вижу описание как nil всегда. Я не знаю, где я ошибаюсь.описание событие получение nil in riemann

Риман Config

(let [host "127.0.0.1"] 
    (tcp-server {:host host}) 
    (udp-server {:host host}) 
    (ws-server {:host host})) 

    ;Create index and print the values indexed 
    (let [eindex (default :ttl 300 (update-index (index)))]) 


    ;Index event for reserve webservice failure 
    (let [email (mailer{…….})] 

    (streams 
    (where (service "e_log") 
     (fixed-time-window 
     1 
     (smap 
      (fn [events] 
      (let [count-of-failures (count (filter #(re-find #"system space*" (:description %)) events))]  ;Calculate the count for matched value 
       (event 
       {:status "Failure" 
       :metric count-of-failures 
       :total-fail (>= count-of-failures 1)}))) 

      (where (and (= (:status event) "Failure") 
         (:total-fail event)) 

      (email "[email protected]"))prn))))) 

Logstash Config

riemann{ 
     host=>localhost 
      riemann_event => { "service" => "e_log" 
"description" => "system space communication" 
"metric" => "%{metric}" 
"ttl" => "%{ttl}"                     
          }           
        } 

В моем сервере Римана я вижу :description поле nil всегда так, что :total-fail ложна всегда.

Риман Сервер

riemann.codec.Event{:host nil, :service nil, :state nil, :description nil, :metric 0, :tags nil, :time 1447406529, :ttl nil, :status "Failure", :total-fail false} 
riemann.codec.Event{:host nil, :service nil, :state nil, :description nil, :metric 0, :tags nil, :time 1447406529, :ttl nil, :status "Failure", :total-fail false} 
riemann.codec.Event{:host nil, :service nil, :state nil, :description nil, :metric 0, :tags nil, :time 1447406529, :ttl nil, :status "Failure", :total-fail false} 
riemann.codec.Event{:host nil, :service nil, :state nil, :description nil, :metric 0, :tags nil, :time 1447406529, :ttl nil, :status "Failure", :total-fail false} 
riemann.codec.Event{:host nil, :service nil, :state nil, :description nil, :metric 0, :tags nil, :time 1447406529, :ttl nil, :status "Failure", :total-fail false} 

Заранее спасибо

+0

Может быть полезно провести «prn» события, чтобы вы могли убедиться, что карты, на которые вы пытаетесь получить ключ ': description', действительно имеют этот ключ. Я не знаю в первую очередь о Римане, но мне интересно, могут ли ключи храниться как строки, такие как '' description'' вместо ключевых слов, таких как ': description'? –

+0

Что такое символ '=>' в конфигурации riemann? Предполагается, что это карта clojure? – Bill

ответ

0

Две вещи, которые приходят на ум:

  1. что-то не так с кодом, который посылает эти события. Можете ли вы использовать полезную нагрузку?
  2. Это дальний выстрел: Истек ли эти события? Если они есть, скорее всего, ключи не сохранены. Попробуйте следующее: (периодически-expire 5 {: keep-keys [: host: service: description ... и т. Д.]})) (Конечно, измените 5 на любое значение, которое вы хотите, чтобы оно произошло).
Смежные вопросы