【AWS RDS落ちた…】CloudWatchのアラームを社内Slackに通知するまでの方法
2020年07月22日
ある日突然、RDSが落ちた…
弊社は、開発環境にCloud9を使用し、データベースは、開発環境共用のRDSを使用しています。 最近、社員数が大幅に増えてRDSの容量が不足して、RDSが落ちる現象が発生しました。
容量不足を事前に把握できていなかった
なので、容量が不足する前に、把握できるよう、CloudWatchでRDSのアラームをした上で、社内のSlackに通知する設定をしました。
まずは各DBどれくれいの容量を使用しているかチェック 必要ないものは削除して、これだけでもかなりの容量不足を解消できました。
SELECT table_schema, sum(data_length) /1024/1024 AS mb FROM information_schema.tables GROUP BY table_schema ORDER BY sum(data_length+index_length) DESC;
CloudWatchの設定
CloudWatchのダッシュボードにRDSの情報を追加 CPU,メモリ,容量くらいは入れとくことにしました。
- CPUUtilization
- FreeableMemory
- DatabaseConnections
- FreeStorageSpace
- SwapUsage
ローカルにawsCLIのインストール
$ aws
で確認するとインストールされていなかったのでインストール
Pythonのversion確認
$ python --version
awscliのインストール
$ curl "https://s3.amazonaws.com/aws-cli/awscli-bundle.zip" -o "awscli-bundle.zip" unzip awscli-bundle.zip $ sudo ./awscli-bundle/install -i /usr/local/aws -b /usr/local/bin/aws $ ./awscli-bundle/install -h
インストールできたか確認
$ aws --version
初期設定
$ ls ~/.aws $ aws configure
※自分自身のIAMでアクセスキーを設定します。
AWSコンソールにログインします。 名前と表示名を設定してトピックの作成
プロトコルとエンドポイントを設定して、メールの通知設定


cloudwatchの設定
アラームを作っていきます




テスト通知
ローカルで次のコマンドを入力すると、メールに通知がきます。
$ aws cloudwatch set-alarm-state --alarm-name "rds_CPUUtilization" --state-value ALARM --state-reason "alarm-test" --profile default
slackの設定
通知したいチャンネルに Incoming WebHooks を追加します。

KMSの設定

Lambdaの設定
適宜やります





コードを編集します。
- HOOK_URL = "https://" + boto3.client('kms').decrypt(CiphertextBlob=b64decode(ENCRYPTED_HOOK_URL))['Plaintext'].decode('utf-8') + HOOK_URL = boto3.client('kms').decrypt(CiphertextBlob=b64decode(ENCRYPTED_HOOK_URL))['Plaintext'].decode('utf-8') alarm_name = message['AlarmName'] #old_state = message['OldStateValue'] new_state = message['NewStateValue'] reason = message['NewStateReason'] + alarm_description = message['AlarmDescription'] - 'text': "%s state is now %s: %s" % (alarm_name, new_state, reason) + 'text': "<!here> \nアラーム名: %s\nステータス: %s\nアラーム理由: %s\n説明: %s" % (alarm_name, new_state, reason, alarm_description)
iamロールの修正
IAMから →ロール →cloudwatch-alerm-to-slack →AWSLambdaKMSExecutionRole-[hogehoge] →ポリシーの編集 →JSON
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Stmt1443036478000", "Effect": "Allow", "Action": [ "kms:Decrypt" ], "Resource": [ "<4でコピーした ARN>" ] } ] }
もう一度テスト
ローカルに戻って、次のコマンドを入力すると、slackにも通知がきます。
$ aws cloudwatch set-alarm-state --alarm-name "rds_CPUUtilization" --state-value ALARM --state-reason "alarm-test" --profile default
これで通知が来るようになります。

できた!
執筆:小杉
最新記事
2025年04月30日
儲かる農業?佐々木さんが目指す未来に繋ぐ農業のカタチ2025年04月24日
米騒動の真相とは?佐々木さんが語る米業界の裏側2025年04月18日
なぜ売れた?「売る農業」で40haまで拡大した佐々木さんの挑戦2025年04月10日
支社間留学で見えた、新たな働き方と挑戦の可能性2025年04月01日
和歌山支社設立2年を振り返る2025年03月25日
小海支社設立から4年を振り返る2025年03月21日
【ガジェット限定社内フリマ!?】Vitalize夢の市を開催しました!2025年03月14日
東京から地方移住したメンバーに話を聞いてみたVol.32025年03月07日
千葉市いちごマラソン 2025が開催されました2025年02月28日
新たな成長エンジン!自己決定と相互フィードバックで加速するVitalizeの評価制度
過去記事(年月別)
- 2025年04月(4)
- 2025年03月(5)
- 2025年02月(3)
- 2025年01月(3)
- 2024年12月(4)
- 2024年11月(3)
- 2024年10月(4)
- 2024年09月(4)
- 2024年08月(4)
- 2024年07月(4)
- 2024年06月(4)
- 2024年05月(4)
- 2024年04月(2)
- 2024年03月(4)
- 2024年02月(3)
- 2024年01月(3)
- 2023年12月(3)
- 2023年11月(2)
- 2023年10月(3)
- 2023年09月(1)
- 2023年08月(2)
- 2023年07月(3)
- 2023年06月(5)
- 2023年05月(3)
- 2023年04月(4)
- 2023年03月(5)
- 2023年02月(5)
- 2023年01月(4)
- 2022年12月(3)
- 2022年11月(4)
- 2022年10月(4)
- 2022年09月(6)
- 2022年08月(2)
- 2022年07月(4)
- 2022年06月(4)
- 2022年05月(5)
- 2022年04月(7)
- 2022年03月(7)
- 2022年02月(3)
- 2022年01月(4)
- 2021年12月(2)
- 2021年08月(1)
- 2021年06月(2)
- 2021年04月(1)
- 2021年02月(1)
- 2020年12月(2)
- 2020年11月(3)
- 2020年10月(3)
- 2020年07月(2)
- 2020年02月(3)
- 2020年01月(2)
- 2019年12月(1)
- 2019年09月(1)
- 2018年10月(1)
タグ