9

SLB + 多后端服务器架构下,如何实现简单的告警推送,又不重复?

 3 years ago
source link: https://www.v2ex.com/t/787175
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client
SLB + 多后端服务器架构下,如何实现简单的告警推送,又不重复?

V2EX  ›  程序员

SLB + 多后端服务器架构下,如何实现简单的告警推送,又不重复?

  feng32 · 13 小时 51 分钟前 · 498 次点击
假设后端是 Java / Spring,通过 @Scheduled 注解,可以让后端定期 (比如每 10 分钟) 检查数据库的一些状态,并推送一个告警;假设告警是钉钉自定义 WebHook

如何防止不同的后端,推送了同样的告警呢?

希望告警方案仍然是高可用的,挂了一台服务器不影响推送

目前我只想到基于数据库加锁的方案,还有什么其它的常见方案吗?
8 条回复    2021-07-02 19:09:05 +08:00

jimmyismagic

jimmyismagic   13 小时 33 分钟前

用个 mq,多个服务同时消费,使用 queue 方式,谁拿到了谁消费谁推送

Aliencn

Aliencn   13 小时 7 分钟前

做一个选举和分配监控项的机制吧,每个后端服务采集和报警的项目都是独占的。
这样也避免了重复采集数据的问题,减少了被监控端的压力。

coolcoffee

coolcoffee   12 小时 52 分钟前

Prometheus 的 Alertmanager 不是可以实现告警发送频率限制吗?

例如: 多个后端服务都指向同一个规则,然后设定 5 分钟推送一次,触发了一个之后,后面再触发就不会提醒了。

或者设定第一次告警等待一段时间,这段时间多次触发的告警会合并一起发送。

zhuichen

zhuichen   12 小时 26 分钟前   ❤️ 1

方法 1 、选举 master,只能 master 推送,master 挂了之后 slave 选举成为 master,撸一下 raft 算法或者直接用 zookeeper
方法 2 、推送时候,生成唯一标识,利用中间件做去重,记录某一段时间推送过的记录等

wfd0807

wfd0807   12 小时 12 分钟前

这难道不是分布式定时任务调度问题?
而且还是最简单的一种场景,使用 redis 的 setnx 吧

keepeye

keepeye   12 小时 5 分钟前

借助 redis 吧 setnx 命令

feng32

feng32   11 小时 12 分钟前

@wfd0807 用 Redis 和用 MySQL 本质上没什么区别吧

关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   873 人在线   最高记录 5497   ·  

创意工作者们的社区

World is powered by solitude

VERSION: 3.9.8.5 · 19ms · UTC 22:21 · PVG 06:21 · LAX 15:21 · JFK 18:21
♥ Do have faith in what you're doing.


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK