連載
» 2017年10月05日 05時00分 公開

Azure ハイッ! ここ大事!:Azureでサービスの動作状態を監視する (3/3)

[打越浩幸,デジタルアドバンテージ]
前のページへ 1|2|3       

 Azureの状態を監視する例として、もう1つ、Webサーバの動作状態を監視する方法を見ていきましょう。

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以外の値になります。これを検出してみましょう。

Webサーバのエラーを検出するアラートルールを作成する

 まずAzure PortalのダッシュボードでWeb Appsの管理画面を開き、左側のメニューブレードから[監視中]−[警告]を選択して、新しいアラートルールを追加してみます。

 以下に設定例を示します。先ほどのCPU使用率の検出例と同じようなルールになっていますが、アラート対象が「HTTP Server Errors」で、その値(数字)が「1以上」であることを条件にしています。

Webサーバのエラーを検出させるルールの例 Webサーバのエラーを検出させるルールの例
「HTTP Server Errors」の値が1以上なら、Webサーバに何らかのエラー(内部エラーや過負荷による無応答など)が発生したものとして、アラートメールを送信させるルールの例。

 しきい値の条件を「1以上」にしているので、1回エラーが発生すると、すぐにアラートのメールが送信されることになります。

 単発のエラーは無視して、連続でエラーが多発している状態を検出したければ、もう少し値を大きくしてもよいでしょう。このあたりはいろいろ試してみてください。

【ハイッ! ここ大事!】

【ハイッ! ここ大事!】

 たった1回だけのエラーでメールを送信するようにしていると、多過ぎるかもしれません。Webサーバでは、結構エラーが発生することがありますが、連続で発生していなければ、特に問題とはならないことも少なくありません。多過ぎる場合は、値や監視期間などを適宜調整してください。


Webサーバのエラーの例

 Webサーバにエラーが発生すると、例えばダッシュボードの「HTTP 5xx」のグラフにその数などが表示されます。

Webサーバのエラー履歴 Webサーバのエラー履歴
「HTTP 5xx」のエラーが起こった場合の例。1分ずつ計測しているので、エラーがあると、グラフはこのように1分単位で1ずつ増減した形状になります。

 この例ではエラーが2回発生しています。すると先ほどのアラートルールでは、この状態を検出して、アラートルールの画面が次のように変わります。

Webサーバのエラー発生時のアラートルールの状態 Webサーバのエラー発生時のアラートルールの状態
Webサーバにエラーが発生すると、このようにアラートルールの画面に表示されます。

 これに伴って、次のようなメールが指定されたアドレスに送信されます。件名は「[ALERT ACTIVATED] - Http Server Errors GreaterThanOrEqual 1 (Count) in the last 5 minutes」となっています。

Webサーバのエラー時に送られるメールの例 Webサーバのエラー時に送られるメールの例
エラーが発生すると、このようなメールが送られてきます。期間を「過去5分間」に設定しているので、最後のエラー発生から5分経過すると、今度は[[ALERT RESOLVED] - Http Server Errors GreaterThanOrEqual 1 (Count) in the last 5 minutes]」という件名のエラーが送られてきます。

アラート発生時に何らかの処理を実行する

 上の例では、アラートが発生した場合にメールを送るだけでしたが、それ以外にも例えばVMを再起動したり、スケールアップしたりといったアクションを起こすこともできます。このためには「Runbook」という、Azureの自動処理アクションを利用します。

 アラート時にRunbookを実行するには、アラートルールの最後にある「Take action」で実行したいRunbookを指定します。

アラートとRunbook アラートとRunbook
アラートが発生した場合に、Runbook(Azureの自動処理機能の1つ)を使うと、例えばVMを再起動させたり、スケールアップさせたりできます。またアラートの条件が解除されたら(例:CPU使用率がずっと低いままだったら)、スケールダウンさせる、といったこともできます。

 デフォルトでは、VMのリスタートや停止、スケールアップ、スケールダウンなどが実行できますが、自分で処理を記述すれば、もっと別の処理を行わせることも可能です。

 Runbookを使った自動化処理については、回を改めて詳しく取り上げます。


 今回はAzureの監視機能を試してみました。特別なコードなどを記述することなく、用意されているアラート機能をオンにするだけで、CPUが高負荷になっていることを検出できるし、Webサーバのエラーも検出できます。他に多くの状態やイベントなどを簡単に検出できるので、便利に活用できそうです。

 ここで紹介した以外にも、Azureの監視関連の機能は他にも多くあります。負荷やエラーなどに応じて自動的にスケールアップ/スケールアウトしたり、(新サービスの開始予定などに備えて)あらかじめスケールアップをスケジュールしておいたりもできます。そのような使い方については、別の回に紹介したいと思います。

前のページへ 1|2|3       

Copyright© 1999-2017 Digital Advantage Corp. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。