実践活用ガイド - ネットワークとインフラの構築

Mackerelを使ったリソース監視とオートスケールの実現

オートスケールを設定する を設定した仮想マシンに対して、
Mackerel アラート (Webhook) による動的スケール設定が可能です。

1. 機能の概要

2. 利用する前提条件

1. Mackerelでサーバー監視を行うための準備を行う

スケーラブルなWebサイトを構築したい(Web2台構成) 」で作成した仮想マシンに
Mackerelを使ったリソース監視」の通りにMackerelの監視設定を行います。

mackerel-agentの仕様については mackerel-agent仕様 をご参照ください。

仮想マシン

IPアドレス

web01にMackerelエージェントを追加したときのログ
VMにログインして sudo journalctl -u mackerel-agent.service をしたときに、このようなログが出ていればOK

# ssh -i \.ssh\web01 root@自分のIPアドレス
    ________  ______   ______                 __  _
   /  _/ __ \/ ____/  / ____/________  ____  / /_(_)__  _____
   / // / / / /      / /_  / ___/ __ \/ __ \/ __/ / _ \/ ___/
 _/ // /_/ / /___   / __/ / /  / /_/ / / / / /_/ /  __/ /
/___/_____/\____/  /_/   /_/   \____/_/ /_/\__/_/\___/_/

Last login: Sun Mar 23 14:36:32 2025 from 202.230.223.225

# [root@web01 ~]# sudo journalctl -u mackerel-agent.service
 3月 23 14:37:06 web01 systemd[1]: Starting mackerel.io agent...
 3月 23 14:37:06 web01 systemd[1]: Started mackerel.io agent.
 3月 23 14:37:06 web01 mackerel-agent[1375]: 2025/03/23 14:37:06 INFO <main> Starting mackerel-agent version:0.84.1, re>
 3月 23 14:37:15 web01 mackerel-agent[1375]: 2025/03/23 14:37:15 INFO <command> Start: apibase = https://api.mackerelio>

							

2. コンピュート / オートスケールでグループの登録を行う

新しく仮想マシンを作成・削除したい (createGroup_CreateDeleteVM_VRLB) の場合でグループを登録します。

※こちらは仮想マシンを作成・削除するやりかたです。
※仮想マシンを停止・起動の場合は、「オートスケールを設定する」のグループ作成を参考にしてください。
※仮想マシンのテンプレートにMackerelエージェントをインストールする方法は、「エージェントをインストールする」を参考にしてください。

# idcfcloud autoscale createGroup_CreateDeleteVM_VRLB
'{
    "name": "autoscale-VRLB", -- グループ名(半角の英大小文字、数字、チルダ(~)以外の記号、スペースを使用可能)
    "min_capacity": 1, -- スケール時の最小台数
    "max_capacity": 2, -- スケール時の最大台数
    "virtual_machine": {
        "type": "create-delete", -- 作成削除
        "parameters": {
            "service_offering_id": "01234567-89ab-cdef-0123-456789abcdef",  -- コマンドで確認。 サービスオファリング(サーバータイプ)ID。#idcfcloud compute listServiceOfferings のid。
            "template_id": "01234567-89ab-cdef-0123-456789abcdef", -- クラウドコンソールで確認。 コンピュート→テンプレート→テンプレートID。
            "key_pair": "idc-frontier", -- クラウドコンソールで確認。 SSHキー名。コンピュート→SSH Key→SSH キー名。
            "network_ids": [
                "01234567-89ab-cdef-0123-456789abcdef" -- クラウドコンソールで確認。 ネットワークID(UUID形式、複数指定可) 。 コンピュート→ネットワーク→ネットワーク名→ネットワークID。
            ]
        }
    },
    "load_balancer": {
        "type": "virtual-router",
        "parameters": {
            "rule_ids": [
                "01234567-89ab-cdef-0123-456789abcdef" -- コマンドで確認。ロードバランサールールID(UUID形式、複数指定可)。# idcfcloud compute listLoadBalancerRules のid。
            ]
        }
    },
   "zone_id": "01234567-89ab-cdef-0123-456789abcdef", -- コマンドで確認。ゾーンID(UUID形式)。# idcfcloud compute listZones のid。
   "region_name": "jp-east-3"  -- クラウドコンソールで確認。 リージョン名。(jp-east/jp-east-2/jp-east-3/jp-west)
}'
							

3. Mackerel アラートによる動的スケーリング設定の登録

オートスケールグループに対して、Mackerel アラート (Webhook) による動的スケール設定を登録します。

Mackerel アラートによる動的スケーリング設定の登録

MackerelのAPIキーを登録して動的スケーリングの設定ができます。


### group_uuidを指定する
# idcfcloud autoscale createMackerelConfig 0000000-90a7-0000-abcd-abcdef000000
'{
    "api_key": "Mackerel APIキー", -- 必須項目。Mackerel APIキーの場所は下記の画像を参照
    "adjustment_magnitude": 1, -- 任意項目。アラート受信時の増減台数。未指定時は「1」。
    "adjustment_interval_minutes": 5, -- 任意項目。スケール実行後の増減間隔(分)。未指定時は「0」
    "service_name": "web01", -- 任意項目。Mackerelのサービス名。指定されたサービスが存在しなければMackerelに新規作成。
    "role_name": "web01", -- 任意項目。Mackerelのロール名。指定されたロールが存在しなければMackerelに新規作成。
    "create_default_monitors": true or false -- 任意項目。trueなら監視ルールを自動で設定する。未指定の場合はfalse。
}'
							

[Groupの設定]
"min_capacity": 1, -- スケール時の最小台数
"max_capacity": 2, -- スケール時の最大台数

[CreaetMackerelConfigの設定]
"adjustment_magnitude": 1, -- アラート受信時の増減台数
"adjustment_interval_minutes": 5, -- 任意項目。スケール実行後の増減間隔(分)

この設定だと、以下の通りになります。

Mackerelでスケールアウトのアラート1回目→1台増える(何台増えるかは、adjustment_magnitudeの値
アラートから5分間(adjustment_interval_minutesの値)は増減しない
Mackerelでスケールアウトのアラート2回目→2台目追加
Mackerelでスケールアウトのアラート3回目→それ以上増えない(max_capacityの値以上は増えない
Mackerelでスケールインのアラート 1回目→1台削除、残り1台(min_capacityの値以上は減らない
Mackerelでスケールインのアラート 2回目→それ以上減らない


"service_name": "web01", -- 任意項目。Mackerelのサービス名。指定されたサービスが存在しなければMackerelに新規作成。
 ・未指定時
   ・Mackerelにサービスが存在しない場合:オートスケールのグループ名でMackerelにサービスを新規作成
   ・Mackerelにサービスが存在する場合:オートスケールのグループ名と同名のサービスを利用する
 ・指定時
   ・Mackerelにサービスが存在しない場合:指定されたサービス名でMackerelに新規作成
   ・Mackerelにサービスが存在する場合:指定されたサービスを利用する

"role_name": "web01", -- 任意項目。Mackerelのロール名。指定されたロールが存在しなければMackerelに新規作成。
 ・未指定時:ロールは作成しない
 ・指定時
   ・Mackerelにロールが存在しない場合:指定されたロール名でMackerelに新規作成
   ・Mackerelにロールが存在する場合:指定されたロールを利用する

create_default_monitors: trueにした場合、監視設定は以下の通りに登録されます。
falseの場合、お客様が設定した監視ルールが適用されます。
trueの場合でも、お客様で監視ルールの編集が可能です。

・スケールアウト用:
 ・CPU使用率 > 80% / > 90% (デフォルト)
 ・メモリ使用率 > 80% / > 90% (デフォルト)
・スケールイン用:
 ・CPU使用率 < 20% / < 10% (デフォルト)
 ・メモリ使用率 < 20% / < 10% (デフォルト)

Mackerel アラートによる動的スケーリング設定の取得

### group_uuidを指定する
# idcfcloud autoscale listMackerelConfig 0000000-90a7-0000-abcd-abcdef000000
							

Mackerel アラートによる動的スケーリング設定の削除

### group_uuidを指定する
# idcfcloud autoscale deleteMackerelConfig 0000000-90a7-0000-abcd-abcdef000000
							

deleteMackerelConfig では以下を削除します。
・アラートグループ
・通知チャンネル
・通知グループ

※監視ルールは削除されません。

4. Mackerel Webhookによるアラート受信によるスケール実施

MackerelからWebhookによりアラート受信するとスケールイン・アウトを実施します。
Webhook受信時に、スケールを実行中の場合はスケールを実施しません。
Webhook受信時に、前回スケール実施後からスケール実行後の増減間隔(分)(adjustment_interval_minutes)を経過していない場合はスケールを実施しません。
いずれの場合も、Criticalのアラート以外ではスケールしません。

以下にスケールの例を記載します。

Mackerelでスケールアウトの監視設定に達すると、max_capacity(スケール時の最大台数)までadjustment_magnitude(アラート受信時の増減台数)の台数ずつスケールアウトします。
Mackerelでスケールインの監視設定に達すると、min_capacity(スケール時の最小台数)までスケールインします。

Mackerelを使ったリソース監視とオートスケールの実現に関する注意事項

・Mackerelの設定はお客様で設定をお願いします。
・監視ルールごとに増減台数を変更することはできません。
 ・例: CPUが80%に達したときは1台増、メモリが80%に達したときは2台増はできません。

・スケールに失敗した場合、ご利用の注意点等はこちらを参照ください。
コンピュート / オートスケールAPI

関連情報

このページの先頭へ このページの先頭へ