サーバー監視サービスMackerelで特定のインスタンスに設定されている監視ルールの閾値を変更する方法について

2023.02.21

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

こんにちは、コンサル部@大阪オフィスのTodaです。

サーバー監視サービスMackerel(マカレル)をご利用頂く中で、特定のインスタンスだけ監視ルールの閾値を変えたいと要望を受ける事があります。
弊社から提供しているMackerelではあらかじめ監視ルールを設定した状態で提供をしておりますので、既存ルールには影響がないように独自の閾値を設定してみたいと思います。

Mackerel(マカレル) とは?

Mackerelは株式会社はてながサービス提供をしているSaaS型サーバー監視サービスになります。
監視対象にエージェントを導入することでクラウドもしくはオンプレミスのサーバを監視することができます。

■ Mackerel(マカレル): 新世代のサーバー管理・監視サービス
https://ja.mackerel.io/

監視ルールについて

Mackerelの監視ルールは下記7点の設定とエージェントに個別設定したプロセス・サービスなど監視が可能です。

  • ホストメトリック監視
    • ホストのメトリックの平均値を利用して監視します。メモリやストレージの使用量の監視が可能です。
  • ホスト死活監視
    • ホストが継続的にメトリックを投稿していることを監視します。投稿が止まるとインスタンス異常と認識します。
  • サービスメトリック監視
    • APIから自由にメトリックを投稿して監視をおこないます。運用中のサービスの利用者PVやECサイトの受注件数などをAPIを経由して投稿することで独自の計測が可能になります。
  • 外形監視
    • 決まったURLに対して1分おきにステータスコードの監視をおこないます。4xxまたは5xxのステータスまたはレスポンスタイムが一定以上の場合に異常と認識します。
  • 式による監視
    • 複数のメトリックを計算した結果を利用して監視をおこないます。
  • ロール内異常監視
    • 機械学習により、Mackerelで設定されたロール内にあるホストに対して、特別な監視項目を設定することなくサーバーの異常を検知する機能です。 監視ルールを選定する場合、ノウハウや経験が必要でしたが、ロール内異常監視はルールの設定をしなくても機械学習を利用してインスタンスが普段の動作と違う場合に異常と認識する事ができます。
  • チェック監視
    • 設定された条件と照合し、OK もしくは NG の判定結果を監視します。 プロセスやサービス監視はエージェント側に設定をしますがチェック監視の項目で設定されています。

■ 監視・通知を設定する - Mackerel(ヘルプ)
https://mackerel.io/ja/docs/entry/howto/alerts

サービス・ロールについて

Mackerelの監視ではホスト単体に監視ルールを適用するのではなく、サービス・ロールと呼ばれる単位でグルーピングをおこない管理ルールの適用をおこないます。
※ 下記、サービスとロールはAWSリソースとは別になります。

  • サービス
    • 監視対象となるシステムやサービスを構成している1つ以上のホスト群をグルーピングするための単位です。また、1つのホストは複数のサービスに所属することもできます。
  • ロール
    • 「サービス」に属する1つ以上のホスト群をさらに細かくグルーピングするための単位です。「ロール」は「サービス」ごとに作成することができ、1つのホストは複数のロールに所属することもできます。サービスに属するホストは、必ず何らかのロールに所属する必要があります。

■ 「サービス」「ロール」とは - Mackerel(ヘルプ)
https://mackerel.io/ja/docs/entry/spec/about-service-role

今回の設定

Mackerelではホスト設定で個別に監視の閾値を設定する事はできません。
そのため新しく監視ルールとサービス・ロール設定を追加して、個別にホストに適用するようにします。
また、全ホストのサービス・ロールの再割り当てをおこない適切な監視ルールを適用するのが理想ではございますが、今回は小規模でのスポット対応を想定しているため除外設定を活用する方法で設定をおこなっています。

既存監視ルールにてストレージ使用量が90%を超えた場合にWarningアラートが発生する設定がある状態で、 特定のインスタンスにストレージ使用量が85%時にWarning、90%時にCriticalが発生する監視を追加します。
サービス・ロール設定は既存で「EC2:EC2」となっているところに新しく「EC2:DB」という設定を追加します。

実際の設定をしてみる

Mackerelにログイン

Mackerelにログインをおこない、監視対象が設定されているオーガニゼーションを選択します。

Mackerelにログイン

ロールの追加

今回は既存サービスEC2の中のロールを追加して新しい監視を割り当てをおこないます。
Servicesから[EC2]を選択して[ロールを作成する]をクリックします。

ロールの追加1

新規ロール作成にてロール名を入力して画面下の[作成]をクリックします。

ロールの追加2

上記で、ロール設定は作成完了です。

管理ルールの追加

監視ルールは左メニュー[Monitors]にて一覧が表示されます。
今回はストレージ容量を監視するルールを新規作成しますので画面上部の[管理ルールの作成]をクリックします。

管理ルールの追加1

CPUやメモリ、ストレージ容量の監視はホストメトリック監視になりますので選択をおこないます。

管理ルールの追加2

監視ルールの設定ではメトリックの選択をおこない、閾値の設定や関連付けするサービス・ロールの設定をおこないます。
今回は設定例に合わせて下記パラメータの入力をおこないます。
設定後は画面下の[作成]をクリックします。

  • メトリック:Filesystem %
  • 閾値 Warning条件:> 85%
  • 閾値 Critical条件:> 90%
  • 平均値監視:1
  • アラート発生までの最大試行回数:1
  • 絞込:EC2 : DB
  • 監視ルール名:EC2 Filesystem Usage (DB)
  • オプション:なし

管理ルールの追加3

上記で、監視ルールの作成完了です。

インスタンスへのサービス・ロール関連付け

監視ルールを適用するためインスタンスに作成したサービス・ロールの関連付けをおこないます。
左メニューから[Hosts]をクリックして関連付けしたいホストを選択します。

インスタンスへのサービス・ロール関連付け1

ホストの設定をクリックしてロールの追加をおこないます。
設定後は画面下の[更新]をクリックします。

インスタンスへのサービス・ロール関連付け2

インスタンスへのサービス・ロール関連付け3

設定完了後は、新しい監視ルールが設定されるまで待ちます。
監視が開始されるとMonitorsに項目が追加されます。
ただし、ここで注意頂きたい点として、現状だとEC2 Filesystem Usageに関する監視が2点並行に動いている状態になります。
「EC2 Filesystem Usage(DB)」1点の監視がおこなえるように設定をおこないます。

インスタンスへのサービス・ロール関連付け4

既存監視ルールの除外設定

今回、既存ルールの「EC2 Filesystem Usage」が該当インスタンスでは必要なくなる為、サービス・ロールを利用して除外設定をおこないます。
左メニュー[Monitors]を選択して、対象の監視ルールの[編集]をクリックします。

既存監視ルールの除外設定1

ルール設定の中にある「絞込」で[除外条件を追加]をクリックして、「EC2:DB」を追加します。
設定後は画面下の[更新]をクリックします。

既存監視ルールの除外設定2

既存監視ルールの除外設定3

監視の再確認

設定後、ホスト監視に戻ると「EC2 Filesystem Usage」の監視が消えて、「EC2 Filesystem Usage(DB)」のみになっている事がわかります。
こちらで特定のインスタンスに独自の閾値を設定した監視ルールの提供は完了になります。

監視の再確認

さいごに

今回はサーバー監視サービスMackerelで特定のインスタンスに設定されている監視ルールの閾値を変更する方法についてご案内いたしました。
少しでもお客様の参考になればと考えております。