天天看點

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

Cloudwatch在AWS的服務裡面占據了很重要的部分。他的基本功能是監控服務的性能,發送警報以外,還可以通過各種事件來觸發Lamda等服務,他還可以接收第三方的app和服務的日志等等。

下面我們來看看如何通過Cloudwatch logs的 Metric filter來自定義一個Metric,并通過他來發送一個警報。

例子:當一個使用者删除KMS的CMK時候,給管理者發送一個警告郵件。

首先我們來配置一下CloudTrail,建立一個Trail,然後配置S3 Bucket等等,然後配置 CloudWatch Logs, 這樣子他會把日志發送給CloudWatch,以及儲存在S3 bucket裡面。一般說來,大概有5分鐘左右的延遲到CloudWatch,15分鐘左右的延遲到S3 Bucket

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

配置好了之後,我們首先去KMS裡面删掉我們的CMK

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

對應的API日志會在CloudTrail裡面生成。去CloudTrail的 Event History 裡面找到對應的日志記錄 (API的最新記錄有的時候需要等一會才出現)

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

檢視他的Event Record。這個JSON檔案很長,我可以尋找他的eventName,UserIdentity等資訊

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

把這個JSON檔案保留起來,然後我們切換到Cloudwatch裡面, 選擇Log Groups, 所有的第三方的app或者service發送的日志都在這個地方,比如我們自己寫了個Lambda的函數,他調用的日志也是在這裡看。

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

找到我們的CloudTrail發送過來的Log Group,選擇 Metric Filter

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

建立一個filter,這個filter的文法其實很簡單,就是通過上面我們找到的JSON檔案裡面的鍵值對來定義而已,這裡我選擇使用者為IAMUser,事件名稱為ScheduleKeyDeletion

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

然後定義一下Metric的資訊

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

确認送出

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

大概30秒後,就可以看見我們自定義的Metrics了

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

然後建立一個Alarm,選擇我們自定義的Metric,當有IAM使用者删除CMK的時候,就發送一個SNS的通知

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

配置好了,來測試一下,删除一下CMK,然後很快我就收到警報通知了

CloudWatch Metric Filter - AWS KMS 删除 CMK 自動警報

在日常工作中,AWS上可能會遇見很多需要發送警報的情況,比如Root使用者的登陸啦,某某服務被調用了,某某服務挂了等等,我們都可以通過這種方式來進行報警。當然,我們也可以用Cloudwatch Event + Lambda的方式,不過後者就更複雜一些了。

繼續閱讀