背景介紹
Amazon CloudWatch為AWS各項資源提供監(jiān)控、展示、告警等功能,幫助您了解資源運行的數據和見解。您可以基于這些數據添加告警,以便在發(fā)生異常狀況,如CPU利用率過高,進出流量異常時得到通知或觸發(fā)處置操作。由于CloudWatch控制臺不支持批量添加告警的功能,在EC2實例數量多時,通過控制臺使用CloudWatch為EC2實例添加告警會很不便。為了解決這個問題,我們?yōu)槟峁┐私鉀Q方案,讓您可視化點選需要添加監(jiān)控的實例,設置相應規(guī)則,并批量添加告警。
架構與工作原理
解決方案的工作原理如下圖:
您使用此方案提供的CloudFormation會創(chuàng)建一個監(jiān)控VPC,以及其中的一個公有子網。在公有子網中會啟動一臺很小的EC2實例,部署監(jiān)控服務器軟件,供您通過瀏覽器訪問。
之后您訪問監(jiān)控管理頁面,選擇需要添加監(jiān)控的服務器(位于您自己的生產VPC中),設置相應的規(guī)則,批量生成CloudWatch告警。在CloudWatch告警的觸發(fā)行為中,您可以設置發(fā)送到已有的SNS,從而通過郵件或其他方式及時通知到您;也可以設置EC2實例的行為,例如自動重啟,從而嘗試修復問題。
完成告警的批量添加后,您就可以在AWS管理控制臺中查看到您添加的CloudWatch告警。這樣原本您需要逐個手動添加的告警,可以完全自動化地完成,免去枯燥的添加過程。
安全方面,在創(chuàng)建CloudFormation時,您可以設置允許訪問監(jiān)控管理頁面的IP范圍,避免未經授權的訪問。
快速部署流程
1.登錄AWS控制臺(目前只支持AWS全球區(qū)域,不支持中國區(qū)域),選擇CloudFormation服務,進入到CloudFormation頁面。
2.在CloudFormation頁面中,點擊【創(chuàng)建堆?!?,選擇【使用新資源(標準)】。如果您是第一次使用CloudFormation,看到的頁面會有所不同,同樣是選擇畫面中央的【創(chuàng)建堆?!?,進入堆棧的創(chuàng)建流程。
3.在指定模版選項中,選擇Amazon S3 URL,輸入https://batch-monitor-solution.s3.amazonaws.com/BatchMonitor.template.json,從S3上獲取模板。然后點擊下一步。
4.為您的堆棧命名,例如BatchMonitor,然后填寫下面的選項。Instancetype選項設置的是監(jiān)控服務器的實例類型,如果實例數量不是特別多,使用t2.micro就可以;keyname選項設置的是監(jiān)控服務器的密鑰名稱,您可以填寫一個現(xiàn)有的密鑰;visitip選項設置的是可以訪問添加監(jiān)控頁面的IP地址,您可以填寫您本機公有IP地址,或辦公室的公有IP網段。設置完成后連續(xù)點擊下一步到審核頁面。
5.由于涉及到服務之間的調用,這個CloudFormation需要創(chuàng)建IAM資源。在下方的確認選項上打勾,然后點擊右下方的創(chuàng)建堆棧,等待堆棧創(chuàng)建完成。這一般只需要幾分鐘的時間。
6.等堆棧的狀態(tài)變?yōu)榫G色后,監(jiān)控服務器就可用了。選中剛剛創(chuàng)建的CloudFormation堆棧,點擊【輸出】選項卡,可以看到下方的提供了訪問的URL,將此URL復制到瀏覽器中即可訪問。
使用流程
1.使用之前創(chuàng)建的CloudFormation堆棧提供的URL,訪問批量管理告警的網頁。
2.在網頁中配置相應的指標,具體解釋如下:
指標名稱:要設置的指標名稱,如CPU利用率、磁盤寫入字節(jié)等。
區(qū)域:要添加CloudWatch告警的EC2實例所在的區(qū)域。
分組類型和名稱:需要配置的EC2實例的范圍。
·如果您希望為所有此區(qū)域的實例添加告警,分組類型選擇All,分組名稱也輸入All。
·如果您只希望為某一個AutoScaling組中的實例添加告警,分組類型選擇AutoScaling Group名稱,分組名稱輸入這個AutoScaling Group的名稱(可以從EC2控制臺的AutoScaling Group中獲取到)。
·如果您使用了資源組來標識和管理EC2實例,并且只希望為某一個資源組內的EC2實例添加告警,分組類型選擇Resource Group名稱,分組名稱填寫這個Resource Group的名稱。
·如果您只希望為使用了特定AMI的EC2實例創(chuàng)建告警,分組類型選擇AMI ID,分組名稱輸入這個AMI的ID。
·如果您只希望為特定標簽的實例添加告警,分組類型選擇Tag,分組名稱按照Tagname:Tagvalue的格式輸入,例如這些實例都打了Name為production的標簽,這里輸入的就是Name:production。
統(tǒng)計數據:指標的統(tǒng)計規(guī)則,如平均值、最大值、最小值等。
間隔:指標數據的統(tǒng)計周期,如設置5分鐘就是取5分鐘內的指標做統(tǒng)計,決定是否觸發(fā)告警。
條件:設置具體的警報觸發(fā)條件,如CPU利用率這個指標大于70時觸發(fā),以及滿足觸發(fā)條件需要的數據點,例如設為1就是說只要收到1次指標大于70的情況,就會觸發(fā)告警。缺失數據處理項指的是對缺失數據的處理辦法,可以標記為超出閾值、不超出閾值或直接忽略,如果希望不放過可疑情況,確保接收到通知的話,建議選擇默認的【作為超出閾值處理】。
通知:可用功能,非必填。根據警報狀態(tài)觸發(fā)SNS,從而及時通知到運維人員。一般使用【警報中】作為觸發(fā)器,然后輸入您的SNS ARN(需要另外在SNS中創(chuàng)建,并設置通知到的郵件),就可以添加信息通知。
EC2操作:根據警報狀態(tài)觸發(fā)EC2操作,例如恢復實例、停止實例等,可以根據您的實際業(yè)務場景進行配置。
名稱和描述:最終創(chuàng)建的警報的名稱,可以設置前綴以及描述,來幫助您在管理時了解這些警報的作用。
3.完成各項指標配置后,點擊最下方的【提交】按鈕,開始批量添加告警。等待過程中會顯示Processing,根據您實例數量的不同,等待時長會有不同。完成后會在下方顯示已完成。
4.登錄AWS控制臺,訪問CloudWatch服務,在警報中就可以看到添加的所有告警了。
5.之后可以根據您的其他規(guī)則批量創(chuàng)建新的告警,以及通過控制臺管理這些告警。
小結
綜上所述,使用本方案可以幫助您方便地查看、管理您的EC2告警,并批量添加告警,從而簡化您使用CloudWatch監(jiān)控資源的流程,提高管理效率。
參考資料
1.Amazon CloudWatch:https://aws.amazon.com/cn/cloudwatch/
2.AWS CloudFormation:https://docs.aws.amazon.com/zh_cn/AWSCloudFormation/latest/UserGuide/Welcome.html
3.Amazon SNS:https://docs.aws.amazon.com/zh_cn/sns/latest/dg/welcome.html