背景说明
judge用于判断的相关数据保存在内存中,由transfer通过调用 RPC Send方法上传得到。LinkedList.go中的PushFrontAndMaintain方法的实现决定了不能通过手工调用 Send 方法上传过往数据点来补齐历史数据。
另外 open-falcon 本身是 push 模型,即 agent 将数据点 push 到 transfer,然后 transfer 将数据点 push 到 judge 里,这种设计决定了 judge 重启后,是无法像 pull 模型一样重新加载历史数据。
但理论上仍可以修改 judge 的启动过程,在启动时通过遍历现有全部 judge 策略的方式加载补齐历史数据。
扩容注意事项
- 扩容前查看集群为处理报警数量,尽量在报警处理完进行扩容操作。
judge扩容问题解决
如果在有大量为处理的报警的情况下, judge需要进行扩容,可以考虑以下几种方式。
- 报警网关对报警信息进行过滤、去重、静默等方式,避免扩容judge导致大量历史报警触发。
- 临时关闭下游报警中间件。(下下策)
扩容流程
- 启动新的judge服务。
- 修改transfer配置,增加新judge节点。
- 重启transfer服务。
参考:https://github.com/open-falcon/falcon-plus/issues/727