Azureの状態を監視する例として、もう1つ、Webサーバの動作状態を監視する方法を見ていきましょう。
Webサーバを運用していると、アクセス数が増えてサーバの負荷が高くなり、応答が遅くなったり、最悪の場合は無応答になったりすることがあります。またプログラムコードの不具合などによって、Webサーバのサービス(プロセス)がエラーを起こしたり、停止したりしてしまうことも考えられます。
Webサーバを適切に運用するためには、このような状態になったことをすぐに検出できないと困るでしょう。
こんな場合に備えて、今度は、Webサーバに何らかのエラーが発生したことを検出するアラートルールを作成してみたいと思います。
ここでは、以前の記事「Azure Web AppsでWordPressをインストールしてみる」で作成したWeb Appsのサイト(WordPressサイト)を監視してみます。
AzureのアラートでWebサイトの状態を監視する場合、いろいろな状況を検出できますが、ここでは「HTTP Server Errors」というメトリック項目を使って障害状態を検出してみます。
HTTP Server Errorsとは、Webサーバが何らかの理由で応答しなくなったり、内部エラーが発生したりしたことを表すカウンターです。HTTPのステータスコードでいえば、500番台に相当します(HTTPプロトコルやそのエラーコードについては、「超入門HTTPプロトコル」参照)。過負荷やバグなどでWebアプリケーションにエラーが生じたり、応答が極端に遅くなったり、まったく応答しなくなったりすると、このメトリックの値が0以外の値になります。これを検出してみましょう。
まずAzure PortalのダッシュボードでWeb Appsの管理画面を開き、左側のメニューブレードから[監視中]−[警告]を選択して、新しいアラートルールを追加してみます。
以下に設定例を示します。先ほどのCPU使用率の検出例と同じようなルールになっていますが、アラート対象が「HTTP Server Errors」で、その値(数字)が「1以上」であることを条件にしています。
しきい値の条件を「1以上」にしているので、1回エラーが発生すると、すぐにアラートのメールが送信されることになります。
単発のエラーは無視して、連続でエラーが多発している状態を検出したければ、もう少し値を大きくしてもよいでしょう。このあたりはいろいろ試してみてください。
たった1回だけのエラーでメールを送信するようにしていると、多過ぎるかもしれません。Webサーバでは、結構エラーが発生することがありますが、連続で発生していなければ、特に問題とはならないことも少なくありません。多過ぎる場合は、値や監視期間などを適宜調整してください。
Webサーバにエラーが発生すると、例えばダッシュボードの「HTTP 5xx」のグラフにその数などが表示されます。
この例ではエラーが2回発生しています。すると先ほどのアラートルールでは、この状態を検出して、アラートルールの画面が次のように変わります。
これに伴って、次のようなメールが指定されたアドレスに送信されます。件名は「[ALERT ACTIVATED] - Http Server Errors GreaterThanOrEqual 1 (Count) in the last 5 minutes」となっています。
上の例では、アラートが発生した場合にメールを送るだけでしたが、それ以外にも例えばVMを再起動したり、スケールアップしたりといったアクションを起こすこともできます。このためには「Runbook」という、Azureの自動処理アクションを利用します。
アラート時にRunbookを実行するには、アラートルールの最後にある「Take action」で実行したいRunbookを指定します。
デフォルトでは、VMのリスタートや停止、スケールアップ、スケールダウンなどが実行できますが、自分で処理を記述すれば、もっと別の処理を行わせることも可能です。
Runbookを使った自動化処理については、回を改めて詳しく取り上げます。
今回はAzureの監視機能を試してみました。特別なコードなどを記述することなく、用意されているアラート機能をオンにするだけで、CPUが高負荷になっていることを検出できるし、Webサーバのエラーも検出できます。他に多くの状態やイベントなどを簡単に検出できるので、便利に活用できそうです。
ここで紹介した以外にも、Azureの監視関連の機能は他にも多くあります。負荷やエラーなどに応じて自動的にスケールアップ/スケールアウトしたり、(新サービスの開始予定などに備えて)あらかじめスケールアップをスケジュールしておいたりもできます。そのような使い方については、別の回に紹介したいと思います。
Copyright© Digital Advantage Corp. All Rights Reserved.