目次
1. 機能の概要
2. 利用する前提条件
1. Mackerelでサーバー監視を行うための準備を行う
「スケーラブルなWebサイトを構築したい(Web2台構成) 」で作成した仮想マシンに
「Mackerelを使ったリソース監視」の通りにMackerelの監視設定を行います。
mackerel-agentの仕様については mackerel-agent仕様 をご参照ください。
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