使用Sensu处理程序进行Elasticsearch时,会覆盖日志

时间:2017-04-23 21:21:39

标签: handler sensu

我在GitHub上找到了一个sensu处理程序,用于将数据发送到elasticsearch。这里可以看到https://github.com/m4ce/sensu-handlers-elasticsearch。我已配置此处理程序以将keepalive事件发送到Elasticsearch。生成关键事件时,日志将显示在Elasticsearch中。但是,解决此事件后,将覆盖关键日志并替换为已解析的日志。我需要跟踪关键日志和已解决日志,以便我无法覆盖任何日志。有没有人有同样的问题,或者有谁知道如何解决这个问题?

谢谢,

AM

1 个答案:

答案 0 :(得分:0)

Sensu处理程序POST的URI是:

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

(你可以在构建URI的处理程序的第53行看到这个)

其中:

  • <elasticsearch_url>--url参数。
  • <index>--index参数。
  • <type>--type参数。
  • <document_id> Sensu事件id字段。

有两件事需要注意,为什么会出现这种情况:

  1. 无论事件的status如何,Sensu事件将始终具有相同的ID。
  2. 在Elasticsearch中,POST文档将覆盖具有相同ID(Elasticsearch中的_id字段)的现有文档。
  3. 您似乎正在寻找一个独特的Elasticsearch文档 per Sensu occurrence ,这只是修改Sensu处理程序以写入具有真正唯一的URL { {1}}而不是Sensu事件的唯一一个。如果您允许,Elasticsearch将自动生成唯一的文档ID。这意味着你应该能够通过修改处理程序的第53行来轻松解决这个问题:

    <document_id>

    为:

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