2017-04-23 45 views
0

我在GitHub上找到了一個將數據傳送到elasticsearch的sensu處理程序。在這裏可以看到https://github.com/m4ce/sensu-handlers-elasticsearch。我已經配置這個處理程序來發送Keepalive事件給Elasticsearch。當生成關鍵事件時,日誌將顯示在Elasticsearch中。但是,在解決此事件時,關鍵日誌將被覆蓋並替換爲已解決的日誌。我需要跟蹤關鍵日誌和已解決的日誌,因此我不能覆蓋任何日誌。有沒有人有同樣的問題,或有人知道如何解決這個問題?使用Sensu處理程序進行Elasticsearch時,日誌被覆蓋

感謝,

AM

回答

0

的URI的扇子處理程序發佈到的是:

<elasticsearch_url>/<index>/<type>/<document_id>

(你可以看到這對處理器的53行,其中URI是內置)

其中:

  • <elasticsearch_url>--url參數。
  • <index>--index參數。
  • <type>--type參數。
  • <document_id>id字段的Sensu事件

有需要注意爲什麼發生這種情況,你所描述的方式兩件事情:

  1. 一個扇子事件,不論事件的status的,總會有相同的ID。
  2. 在Elasticsearch中,發佈文檔將覆蓋具有相同ID的現有文檔(Elasticsearch中的_id字段)。

好像你正在尋找每扇子發生獨特的Elasticsearch文件,這僅僅是修改扇子處理程序寫入到具有真正獨特<document_id>,而不是一個獨特的URL的問題到Sensu事件。如果您願意,Elasticsearch將自動處理生成唯一的文檔ID。這意味着你應該能夠解決這個很容易,通過修改處理器的線53:

uri = URI("#{config[:url]}/#{index}/#{config[:type]}/#{@event['id']}")

到:

uri = URI("#{config[:url]}/#{index}/#{config[:type]}")