【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コンソールにログインします。 名前と表示名を設定してトピックの作成
プロトコルとエンドポイントを設定して、メールの通知設定
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217130819.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217115302.png)
cloudwatchの設定
アラームを作っていきます
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217114516.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217114628.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217115020.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217115121.png)
テスト通知
ローカルで次のコマンドを入力すると、メールに通知がきます。
$ aws cloudwatch set-alarm-state --alarm-name "rds_CPUUtilization" --state-value ALARM --state-reason "alarm-test" --profile default
slackの設定
通知したいチャンネルに Incoming WebHooks を追加します。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217115512.png)
KMSの設定
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217115558.png)
Lambdaの設定
適宜やります
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217115951.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217120107.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217120850.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217121010.png)
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217121255.png)
コードを編集します。
- 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
これで通知が来るようになります。
![](https://cdn-ak.f.st-hatena.com/images/fotolife/V/Vitalize/20200217/20200217121658.png)
できた!
執筆:小杉
コメント
最新記事
2024年07月25日
IT企業が新規事業として農業に取り組んで失敗するまで【後編】2024年07月17日
【社員インタビュー】エンジニアの休日の過ごし方って?2024年07月11日
中学生が職場体験に来てくれました! in. 小林支社2024年07月01日
【地方創生】千葉市の朝市でメダカすくいを出店しました!2024年06月20日
農業や食の大切さを伝える!初となる食育体験イベントを実施しました2024年06月11日
【座談会】ITスクール卒とぶっちゃけトークしてみた!~未経験から活躍するまでの軌跡~2024年06月06日
宮崎県内で2拠点目となる小林支社を設立しました!2024年05月30日
IT企業が新規事業として農業に取り組んで失敗するまで【前編】2024年05月17日
地方創生の先進地 小菅村を視察!【後編】2024年05月13日
【社員インタビュー】とにかくモノづくりが大好きなメンバーに聞いた!Vitalizeの魅力とは?!
過去記事(年月別)
- 2024年07月(3)
- 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)
タグ