云科技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天,我們可以使用另一個方案。
除了解決方案中使用郵件完成警報的通知,您也可以實現短信、企業微信、釘釘、飛書等多種方式的通知。
【免責聲明】本文僅代表作者個人觀點,與云財經無關。其原創性以及文中陳述文字和內容未經本站證實,云財經對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關內容。
| 新聞標題 | 時間 | 消息來源 | 新聞熱度 |
|---|---|---|---|
| 北京地鐵18號線開始“跑圖”,年內將開通3條地鐵線 | 今天 12:31 | 云財經 |
|
| 2025世界城市日城市可持續發展全球大會開幕 多項成果發布 | 今天 10:37 | 云財經 |
|
| 華為與深圳市人民醫院簽署合作框架協議 | 今天 08:48 | 云財經 |
|
| 江蘇啟東“觀光車事故”致4人遇難 相關責任人已被警方控制 | 今天 01:19 | 云財經 |
|
| 支持海洋產業項目建設 江蘇預撥財政貼息資金6000萬元 | 10-24 14:45 | 云財經 |
|
| 河南港航集團有限公司正式揭牌 | 10-21 13:58 | 云財經 |
|