Mackerel で Basic 認証、IP アドレス制限を利用している URL を外形監視する

こんにちわオペレーション部 ttaka です。
今回は Mackerel の外形監視の設定について書いてみます。

想定する読者

  • Mackerel のアカウントを取得している人
  • Mackerel で Web サービスを外形監視したい人

記事を書こうと思ったきっかけ

Web サービスの監視で一番大切な監視だと思ったから

システムの監視をはじめると、まず「何を監視するか?」を考える必要があるかと思います。

システムの用途によって対象は異なると思いますが
Web サービスであればサービス監視 = 外形監視は必須かと思います。

そのため、まずは Mackerel での外形監視について設定を行ってみました。

実際の設定

構成図

動作環境

  • OS: Amazon Linux release 2 (Karoo)
  • Apache: 2.4.39-1
  • MySQL: 5.7.23
  • PHP: 7.2.21-1
  • WordPress: 5.2.3

やること

  1. トップページの外形監視設定
  2. Basic 認証ありページの外形監視設定
  3. IP アドレス制限をかけてるページの外形監視設定

1. トップページの外形監視設定

基本的にはヘルプページ URL外形監視をおこなう を見ていただくことで
特に難しいこともなく設定が行えるかと思いますが、オプションについて一部説明をします。

レスポンスタイムが閾値より遅い場合にもアラートを発生させる


応答遅延があった場合もアラート通知を行う設定となります。
デフォルトではタイムアウト(15秒)となっているため、15秒以上の遅延は検知できますが、
Web サービスを監視するのであればより短い時間で設定するのがよいかと思います。

私は監視の初期導入段階であれば、まずは以下で設定をしています。

  • WARNING 3000 ms
  • CRITICAL 5000 ms
  • 平均値監視 3 分

もちろん提供するサービスにより最適な設定値は異なってくると思いますが
最適な設定値は運用をしていく中で育てていくという考え方です。

アラート発生までの最大試行回数


Mackerel の仕様でチェック間隔は1分毎の固定となっているため、
デフォルトの試行回数の 3 回だと、最大でアラート通知が約 3 分遅くなります。

※サーバ上で Mackerel からのアクセスを確認後、Apache を停止してステータスを確認してみました

ただし、試行回数を 1 回にしてしまうと一時的な遅延で即時復旧するような場合もアラートが通知されてしまい、
本当に対応が必要なアラートが通知された場合に、対応が遅れてしまうこともあります。
そのため、試行回数を 1 回に設定するのはなるべく避けるのがよいかと思います。

レスポンスボディのチェック


レスポンスボディに指定の文字列が含まれていることを確認することができます。

設定しない場合はレスポンスタイムとステータスコードで判定することになりますが
この場合、例えば 200 ステータスを返すブランクページであっても監視が通ってしまいます。

そのため、こちらは可能な限り設定するのが良いかと思います。
私が設定する際はなるべくソース末尾で変更があまり発生しない文字列を指定したいため
コピーライトを設定することが多いです。

2. Basic 認証ありページの外形監視設定

WordPress の管理画面のログインページなどに Basic 認証を設定している場合があるかと思います。
そのようなページを監視する場合は HTTP リクエストヘッダを設定する必要があります。

設定については下記ブログ記事に詳細が記載してありますので、そちらを参考にしていただければと思います。

【小ネタ】MackerelでBasic認証がかかっているページを外形監視する #mackerelio

3. IP アドレス制限をかけてるページの外形監視設定

接続元の IP アドレスを絞っているページの外形監視を行う場合は
Mackerel からの接続 IP アドレスを許可してあげる必要があります。

今回は下記記事を参考にさせていただき
WordPress の管理画面のログインページ(wp-login.php)への接続を
Application Load Balancer(ALB)のリクエストルーティングを使って
IP アドレス制限をかけてみようと思います。

Application Load BalancerのリスナールールによるIP制限

許可ルールを追加する


Mackerel からの接続元の IP アドレスと 管理者の接続元の IP アドレス をルールに追加します。
Mackerel の接続元の IP アドレスはヘルプページに記載があります。

なお、Mackerel の接続元の IP アドレスは変更になる場合があるので
設定を行う際には必ず Mackerel のヘルプページを参照するようにしてください。

FAQ・Webhook通知や外形監視など、Mackerelからの通知元IPアドレスは?

※赤下線部はぼかしてありますが、管理者の接続元の IP アドレスを設定しています

拒否ルールを追加する


許可 IP アドレス以外から接続があった場合は、ALB の固定レスポンスを返すように設定します。
この設定がないと IP アドレスの制限が正しく行えないため、忘れずに設定するようにしましょう。

デフォルトのルール


こちらはデフォルトで設定されています。
上からルールを適用していきマッチするルールがない場合のルーティング先になります。

最後に

Web サービスに限らず「システムが正常に動作している」ことを
監視することがとても重要になってくると思います。

「システムが正常に動作している」というのはシステムごとに定義が異なってくるかと思いますが
Web サービスであれば共通して「サイトが遅延なく正常に表示できること」は重要な事項と思います。

もちろん、トップページが正常に表示できればすべてが担保ができるわけではないのですが
監視まで手が回らなかったり、監視を何からはじめていいかわからない場合などは
まず外形監視から開始してみるのがいいかと思います。

最後にこの記事がだれかのお役に立てば幸いです。

参考