MackerelポータルでECSのAutoScalingを眺めてみた

ECSのAutoScalingを行った際、Mackerelポータルでどのように見えるのか?
2022.03.24

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

はじめに

はじめまして。ネクストモード株式会社 オペレーション事業部 sobarです。

今回はECSのAutoScaling を行った際、Mackerelポータルでどのように見えるのかを確認したときの様子をご紹介します。

構成

AWS上のEC2に設置したLOCUST というツールから、ECS環境へたくさんのHTTP Requestを実施することでECSサービスのCPU使用率が上昇しスケールアウトするところをMackerelで眺めてみたいと思いました。

ECSの設定については、AWS公式が出しているECSのハンズオンの内容を使い、今回はこれで作成したECS on Fargate環境で確認してみたいと思います。

ECS設定

名前
region us-east-1
cluster simplechat-sobar
service simplechat-sobar-service_B
task definition simplechat_taskdef_sobar:4
task size CPU:0.25vCPU / タスクメモリ0.5GB
ヘルスチェックの猶予期間 300
スケーリングポリシー ターゲットの追跡: CPU50%
AutoScaling設定数 最小: 1/ 必要: 1/ 最大: 10

Mackerel設定

クラスタとタスクの監視設定を実施します。

クラスタの監視確認としてECSのAWSインテグレーションを設定。設定方法については弊社 machi のブログを参考。

【Mackerel】AWSインテグレーションでECSを監視してみた

 

タスクの監視確認としてECSタスク定義に「mackerel-container-agent」を設定し、タスク単位での動作も見てみました。設定方法については以下を参考。

Amazon ECSにmackerel-container-agentをセットアップする

 

LOCUST設定

今回はLOCUSTという負荷生成ツールを使ってみました。グラフもあって結果の出力もきれいにできていい感じのツールです!

名前
Number of users 1000
Spawn rate  1

locustfile.py

from locust import HttpUser, TaskSet, task, between

class WebsiteTasks(TaskSet):
    @task
    def index(self):
        self.client.get('/signin')

class WebsiteUser(HttpUser):
    tasks ={WebsiteTasks:1}
    wait_time = between(12, 12)

負荷印加前

負荷をかける前にAWSマネジメントコンソールを確認してみるとECSのタスクが 1つのみ起動しています。

Mackerel ホスト画面上でも「0c92e..」から始まるタスクが 1つのみ表示されています。

負荷印加後

負荷開始。ゆっくりとRPSは上昇。

タスクのCPU使用率を確認すると40%を超えて上昇中。

ECSタスクのスケールアウト確認

CPU使用率が50%を超えて少し時間が経過した後AWSマネジメントコンソールを確認すると必要なタスクが2となりました。

その後すぐに実行中のタスクも2となり、ECSタスクのスケールアウト実施。

Mackerel のホスト画面を見ると「c5702..」から始まる2つめのタスクが新たに追加されてきました!

さらに少し待ってAWSマネジメントコンソールを確認すると、実行中のタスクが3つに増えています。

Mackerel のホスト画面でも 3つめのタスク「e3990..」も表示されてきました!タスクが増えてる。

MackerelのECSクラスターのホスト画面でRunning Taskが3に上昇していることがわかります。タスク数を気にしたいときは監視して通知を受けるといったことも可能ですね。

負荷停止後のLOCUSTのCharts

おわりに

今回はECSのAutoScaling時のタスク数の変動をMackerelポータル画面上で確認しました。こちらの結果とは別ですが急激にRPSが上昇する負荷をかけてしまった結果もあり、その際はLOCUST上でResponse Timeが増加、FAILUESが増えてECSタスクが停止。ECSサービスのイベントログを確認するとport 80のunhealthy でタスクがストップされるといったこともありました。ECSは奥深いと改めて感じた次第です。

弊社ではMackerelをベースとした監視サービス「運用アシスタント」をご提供しています。 障害対応や日々の運用代行の実施も可能ですので、AWS運用にご不安がありましたらお気軽にお問い合わせ頂けますと幸いです。