Cloudwatch在AWS的服務裏面佔據了很重要的部分。他的基本功能是監控服務的性能,發送警報之外,還能夠經過各類事件來觸發Lamda等服務,他還能夠接收第三方的app和服務的日誌等等。app
下面咱們來看看如何經過Cloudwatch logs的 Metric filter來自定義一個Metric,並經過他來發送一個警報。ide
例子:當一個用戶刪除KMS的CMK時候,給管理員發送一個警告郵件。函數
首先咱們來配置一下CloudTrail,新建一個Trail,而後配置S3 Bucket等等,而後配置 CloudWatch Logs, 這樣子他會把日誌發送給CloudWatch,以及保存在S3 bucket裏面。通常說來,大概有5分鐘左右的延遲到CloudWatch,15分鐘左右的延遲到S3 Bucket性能
配置好了以後,咱們首先去KMS裏面刪掉咱們的CMK測試
對應的API日誌會在CloudTrail裏面生成。去CloudTrail的 Event History 裏面找到對應的日誌記錄 (API的最新記錄有的時候須要等一會纔出現)日誌
查看他的Event Record。這個JSON文件很長,我能夠尋找他的eventName,UserIdentity等信息blog
把這個JSON文件保留起來,而後咱們切換到Cloudwatch裏面, 選擇Log Groups, 全部的第三方的app或者service發送的日誌都在這個地方,好比咱們本身寫了個Lambda的函數,他調用的日誌也是在這裏看。事件
找到咱們的CloudTrail發送過來的Log Group,選擇 Metric Filterit
新建一個filter,這個filter的語法其實很簡單,就是經過上面咱們找到的JSON文件裏面的鍵值對來定義而已,這裏我選擇用戶爲IAMUser,事件名稱爲ScheduleKeyDeletionio
而後定義一下Metric的信息
確認提交
大概30秒後,就能夠看見咱們自定義的Metrics了
而後新建一個Alarm,選擇咱們自定義的Metric,當有IAM用戶刪除CMK的時候,就發送一個SNS的通知
配置好了,來測試一下,刪除一下CMK,而後很快我就收到警報通知了
在平常工做中,AWS上可能會碰見不少須要發送警報的狀況,好比Root用戶的登錄啦,某某服務被調用了,某某服務掛了等等,咱們均可以經過這種方式來進行報警。固然,咱們也能夠用Cloudwatch Event + Lambda的方式,不事後者就更復雜一些了。