【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
これで通知が来るようになります。
できた!
執筆:小杉
コメント
最新記事
2024年09月12日
JINの夏休み -ミッション達成に向けた種まきの旅- in20242024年09月06日
地方創生のリーディングカンパニーを視察してきた2024年08月30日
共働き夫婦の増加と生活の変化2024年08月22日
未経験エンジニアが語る!~地方支社の魅力と可能性~2024年08月15日
大学生にインターンシップを実施しました!2024年08月08日
地方創生ツアーを実施しました!【後編】2024年08月01日
地方創生ツアーを実施しました!【前編】2024年07月25日
IT企業が新規事業として農業に取り組んで失敗するまで【後編】2024年07月17日
【社員インタビュー】エンジニアの休日の過ごし方って?2024年07月11日
中学生が職場体験に来てくれました! in. 小林支社
過去記事(年月別)
- 2024年09月(2)
- 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)
タグ