【问题标题】:detect stale mongodb elasticsearch river and restart it检测陈旧的 mongodb elasticsearch river 并重新启动它
【发布时间】:2015-05-10 08:52:58
【问题描述】:
我们正在使用 mongodb-elasticsearch River 插件from here
在某些情况下,我们发现河流已经陈旧。
原因包括
每次我们都必须手动重新启动河流并重新索引集合。
有什么方法(工具、最佳实践、功能)来检测一条陈旧的河流并重新启动它?
【问题讨论】:
标签:
mongodb
elasticsearch
elasticsearch-plugin
elasticsearch-mongo-river
【解决方案1】:
如果您查看this 行,看起来这条河流插入了最新更新的时间戳。您可以将最近的时间戳与当前时间进行比较。如果与数据库中最活跃的集合中的最新条目相比,它看起来已经过时了,那么您就知道存在问题,您应该重新启动它。
【解决方案2】:
我们在 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}
自动停止/启动河流。