云科技Amazon SNS&SQS实现Amazon CloudWatch持续报警
但是,Amazon CloudWatch Alarm仅会在警报从【正常】状态转变为【告警】状态时触发一次警报。此后,即使警报仍然处于【告警】状态,也不会有新的通知产生。如何基于Amazon SNS和Amazon SQS,在警报被触发后按照一定的时间频率来重复报警,实现持续报警的效果,确保您及时知晓系统中的问题。
本方案主要会使用到以下服务:
-
Amazon CloudWatch
-
Amazon SNS
-
Amazon SQS
-
Amazon Lambda
首先,创建Amazon CloudWatch Alarm,当警报触发时,配置将警报信息发送至Amazon SNS,实际上告警操作类型除了Amazon SNS以外,还支持Amazon EC2操作,扩展Auto Scaling组以及Amazon Systems Manager中的一些操作。这里使用Amazon SNS,主要是为了后续串联Amazon SQS。
接着,为Amazon SNS配置类型为Amazon SQS的订阅,这样便可将警报信息传输至Amazon SQS。
最后,将Amazon SQS配置为Amazon Lambda的触发器,这样当警报信息传输至Amazon SQS时,就会触发Amazon Lambda。
其中核心逻辑有两个:
一、Amazon Lambda与Amazon SQS集成使用的特性:您可以使用Lambda函数来处理某个Amazon SQS队列中的消息。Lambda事件源映射支持标准队列和先进先出(FIFO)队列。在Amazon SQS中,您可以通过将来自一个应用程序组件的任务发送到一个队列中并异步处理它们来进行分载。Lambda轮询队列并同步调用您的Lambda函数,其中有包含队列消息的事件。Lambda按批次读取消息,并为每个批次调用一次函数。当您的函数成功处理一个批次后,Lambda就会将其消息从队列中删除。
二、Amazon SQS可见性超时:当使用者接收并处理来自某个队列的消息时,消息将保留在该队列中。Amazon SQS不会自动删除消息。因为Amazon SQS是分布式系统,所以无法保证使用者实际收到消息(例如,由于使用者应用程序问题)。因此,使用者在接收和处理消息后必须从队列中删除该消息。在收到消息后,消息将立即保留在队列中。为防止其他用户再次处理消息,Amazon SQS会将可见性超时,即Amazon SQS阻止其他用户接收并处理消息的一段时间。消息的默认可见性超时为30秒。最小为0秒。最长为12小时。
在本解决方案中,Lambda的代码逻辑为检查警报状态,当警报仍未修复时,会主动抛出一个异常,这样Lambda就会认为函数并未成功处理,也不会自动从队列中删除消息,随即使用Amazon SQS可见性超时来控制间隔时间,达到预计时间后便会重复报警,直到警报被修复。当然Amazon SQS本身也存在一些限制,消息最多能在队列中保留14天。如果您需要让警报机制保持超过14天,我们可以使用另一个方案。
除了解决方案中使用邮件完成警报的通知,您也可以实现短信、企业微信、钉钉、飞书等多种方式的通知。
【免责声明】本文仅代表作者个人观点,与云财经无关。其原创性以及文中陈述文字和内容未经本站证实,云财经对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
| 新闻标题 | 时间 | 消息来源 | 新闻热度 |
|---|---|---|---|
| 中信证券:拥有国内氦气资源与海外氦气长协的气体公司有望获得高利润弹性 | 今天 08:27 | 云财经 |
|
| 美股三大指数涨跌不一 | 今天 04:04 | 云财经 |
|
| 以色列称至少50个安全摄像头遭入侵 | 03-30 21:47 | 云财经 |
|
| 以色列议会通过2026年国家预算案 避免提前大选 | 03-30 07:17 | 云财经 |
|
| 以色列陷多线消耗战 | 03-29 18:16 | 云财经 |
|
| 新研究估计全球每年逾25万人死于脑膜炎 | 03-29 10:31 | 云财经 |
|