RocketChat(EC2インスタンス)でCPU80%以上を10分間継続したら再起動する
2020/06/28
先日、数日間のやり取り用で完全に使い捨てとして使っているRocketChatで、CPUが30分ぐらい高騰して誰もアクセスできなくなっていました。
とりあえず再起動して復旧しました。
ユーザー数やアクセス数が変動するわけでもなく、処理量が大きく変動するわけでもないので、オートスケーリングよりもオートヒーリングやオートリカバリーが適当かと考えます。
頻発するなら、CPUが高騰した原因の調査も、と思いましたが、まだ1回発生しただけなので、次回発生時以降に調査しようかと思います。
そこで、次回発生時に今回のように30分以上も放置とはしたくないので、とりあえず10分間継続していれば再起動することにしました。
発生時のCPU使用率を見てると、一定期間内に多少上下はしているようですので、80%超過が10分間継続した場合としました。
(5分間隔のメトリクスで2データポイントとも80%越え)
アクションは再起動としました。
検証確認のため、CloudWatch Eventsに以下のイベントも設定しました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
{ "source": [ "aws.cloudwatch" ], "detail-type": [ "CloudWatch Alarm State Change" ], "resources": [ "arn:aws:cloudwatch:us-east-1:123456789012:alarm:RocketChatReboot" ], "detail": { "state": { "value": [ "ALARM" ] } } } |
今回の障害時にその間RocketChat APIに投稿データを投げてた分が、SQSデッドレターキューに退避されてて、それを復旧後にリトライして、RocketChatへ無事投稿したのですが、これも自動化したいなと思いまして。
ですので、CloudWatch EventsからStep Functionsを起動して、EC2再起動が無事完了して、APIにPOSTできる状態で、Lambdaのトリガーでデッドレターキュー側を有効にしようか、と考えてます。
それは次回発生後で。
最後までお読みいただきましてありがとうございました!
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト - プロフェッショナル 改訂第2版」という本を書きました。
「AWS認定資格試験テキスト AWS認定クラウドプラクティショナー 改訂第2版」という本を書きました。
「ポケットスタディ AWS認定 デベロッパーアソシエイト [DVA-C02対応] 」という本を書きました。
「要点整理から攻略するAWS認定ソリューションアーキテクト-アソシエイト」という本を書きました。
「AWSではじめるLinux入門ガイド」という本を書きました。
開発ベンダー5年、ユーザ企業システム部門通算9年、ITインストラクター5年目でプロトタイプビルダーもやりだしたSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。
このブログの内容/発言の一切は個人の見解であり、所属する組織とは関係ありません。
このブログは経験したことなどの共有を目的としており、手順や結果などを保証するものではありません。
ご参考にされる際は、読者様自身のご判断にてご対応をお願いいたします。
また、勉強会やイベントのレポートは自分が気になったことをメモしたり、聞いて思ったことを書いていますので、登壇者の意見や発表内容ではありません。
ad
ad
関連記事
-
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテクト – プロフェッショナル」を執筆しました
「AWS認定資格試験テキスト&問題集 AWS認定ソリューションアーキテク …
-
当ブログ(WordPress)のCloudFrontのキャッシュヒット率があがった
当ブログの構成です。 S3とALB+EC2 Auto Scalingで構成してい …
-
AWSアカウントでルートユーザーが使用されたときにTeamsへ投稿する
Organizations組織内のアカウントのいずれかでルートユーザーが使用され …
-
Amazon Route 53プライベートホストゾーン設定
Amazon Route 53プライベートホストゾーンを作成してみました。 Ro …
-
Organizations対応のAWS CloudTrailのAthenaテーブルでPartition Projectionを使用しました
パーティション向けのAlterテーブルの定期実行が面倒だと思っていたら、Part …
-
EC2ユーザーデータからメタデータを取得してRocket.Chatで80ポートを使用する
Rocket.Chatのデフォルトポート番号は3000です。 80を使うようにす …
-
Amazon ECSサービスでAWS App Meshを使用
AWS App MeshユーザーガイドのAWS App Mesh とAmazon …
-
php-fpm で Out of memoryが発生した際にメール通知する(AWS CloudWatch , Amazon SNS)
AWS CloudWatch LogsエージェントでAmazon EC2上のNg …
-
Amazon Kinesis Data StreamsにTwitter検索データを送信する
Kinesis Data Streamsの作成 ストリーム名とシャード数を決定す …
-
[事前準備] JAWS-UG 関西IoT専門支部「マクニカkibo + AWS IoTハンズオン」
来る12/19(土)の JAWS-UG 関西IoT専門支部第一回勉強会「マクニカ …