CloudWatch アラームを AWS Chatbot から Slack に連携して通知してみた。
- CloudWatch アラームは Redshift への接続数 > 5 というシンプルなものにした
- SNS トピックは KMS カスタマー管理型キーで暗号化した(マネージドキーは Cloudwatch からアクセスできないため)
設定手順
KMSカスタマー管理型キーを作成する
CloudWatch からはマネージドキーにアクセスできないため(キーポリシーを編集できないため)、カスタマー管理型キーを作成する
- マネジメントコンソール -[KMS]-[カスタマー管理型のキー]-[キーの作成]をクリック
{ "Version": "2012-10-17", "Id": "key-consolepolicy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Action": "kms:*", "Resource": "*" }, { "Effect": "Allow", "Principal": { "Service": "cloudwatch.amazonaws.com" }, "Action": [ "kms:Decrypt", "kms:GenerateDataKey*" ], "Resource": "*" } ] }
SNS トピックを作成する
CloudWatch アラームを作成する
Amazon Redshift のDB接続数を CloudWatch アラームで設定する。
- マネジメントコンソール -[CloudWatch]-[アラーム]-[アラーム状態]-[アラームの作成]をクリック
- メトリクス
- メトリクス名:DatabaseConnections
- ClusterIdentifier:awsredshift-redshift-cluster-2(選択した ClusterIdentifier)
- 統計:平均値
- 期間:1分
- 条件
- 通知
- アラーム名:awsredshift-redshift-cluster-2-DatabaseConnections-ALL
テスト
- Redshift に 6 本接続を張って、Slack に通知されることを確認した。
# plsql で 6 本接続する $ psql "host=redshift-cluster-2.********.ap-northeast-1.redshift.amazonaws.com user=awsuser dbname=dev port=5439"
- アラーム状態になる。
- Slack に通知される。