检测陈旧的mongodb elasticsearch河并重新启动它

时间:2015-03-09 08:43:09

标签: mongodb elasticsearch elasticsearch-plugin elasticsearch-mongo-river

我们正在使用mongodb-elasticsearch河流插件from here

在某些情况下,我们发现这条河已经过时了。 原因包括

  • 重启Mongodb
  • 字段中的数据类型不匹配

每次我们必须手动重启河流并重新编制索引。

是否有任何方法(工具,最佳实践,功能)来检测河流陈旧并重新启动它?

2 个答案:

答案 0 :(得分:1)

如果您查看this行,则看起来河流会插入其最新更新的时间戳。您可以将最近的时间戳与当前时间进行比较。如果与数据库中最活跃的集合中的最新条目相比,它看起来已经老了,那么您就知道存在问题,您应该重新启动它。

答案 1 :(得分:1)

我们在Ruby应用程序中使用类似的东西来监视河流延迟并将其发送到statsd。然后,我们的监控框架会检测何时超过某个值并打开操作警报

j = JSON.parse Manticore.get("http://es_server:9200/_river/mongodb/list").body
j.each do |river|
  es_lag = Time.now - Time.at(river["lastTimestamp"] / 1000)
  stat_gauge "elasticsearch.river_latency.#{river['name']}", es_lag
end

您可以通过发出以下HTTP请求来自动执行此操作:

POST http://es_server:9200/_river/mongodb/{river_name}/{start|stop}

自动停止/启动河流。