しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

Azure Web Apps 上で動作しているアプリケーションの監視を行う 2 つの方法

Azure に関わらず Web アプリケーションを運用する上で、当然ながら重要になるのがアプリケーションが正しく動作しているかを監視することです。

ちゃんとデータを取りたい場合には New Relic や Application Insights をアプリケーションに組み込んで監視することの方が多いですが、最低限の可用性だけ確認したい場合には Web Apps だけで実現出来ます。

メトリックの監視を行う

ちゃんと公式サイトにドキュメントがありますが、旧ポータルをベースに書かれているので内容が少し古いです。なので、新ポータルをベースにした設定方法を紹介しておきます。

どのような設定が出来るのかを例として挙げると「指定した数分間に HTTP エラーが返されていないか」や「CPU 時間やメモリ使用量、レスポンス時間が設定値を超えていないか」といった条件を作成し、実際に起こったタイミングでメールや WebHook で通知を行えるようになっています。

実際の設定は新ポータルから Web App を選択した時に表示されるブレードにある「メトリック」タイルから行います。このタイルを選択することでモニタリングの設定が行えるようになっています。

調べたところ、設定を行うにはこのタイルから入るしかないみたいなので、削除している場合は再度追加する必要がありそうです。レイアウトのリセットでも表示されるようになります。

タイルを選択すると、メトリックとアラートの設定が行える新しいブレードが表示されます。この画面からアラートの追加とチャートに表示するメトリックの表示と非表示が行えます。

アラートの追加を選ぶと、設定画面が表示されるので名前やモニタリング対象のメトリック、そして条件などを選択していきます。チャートには実際の値が表示されるので、特に難しいことは無いと思います。

監視を行う期間は 5 分から 6 時間までの広い範囲から選択できるようになっています。この期間内に条件が成立した場合にアラートがアクティブ化されます。

作成したアラートがアクティブになった時にメールを送信する設定なども存在しています。メーリングリストなどを使ってアラートを受け取りたい場合には、追加のメールアドレスを設定して対応を行えます。

アラートの作成が完了すると、一覧にアラートの名前と状態が表示されます。

実際にアクティブ化された場合には、警告アイコンが表示されるようになります。

メールアドレスへの通知設定を有効にしていた場合には、以下のような内容のメールが関係者と、設定している場合には追加のメールアドレスにも届くようになっています。

問題が解決したタイミングでも、解決したことを通知するメールが同様に送信されます。

今回はサイト単位での設定を行いましたが、同様に App Service Plan 単位にもアラートを設定することが出来ます。基本的に複数のサイトを運用することが多いはずなので、App Service Plan 側に CPU 時間やメモリ使用量のアラートを仕込んでおくと、仮想マシン単位での情報になるので便利だと思います。

エンドポイントの監視を行う

メトリックの監視とは異なり、エンドポイントの監視では HTTP リクエストを実際に投げて確認するという点です。世界中に存在するデータセンターを利用し、可用性を定期的に確認することが簡単に行えます。

先程と同様に Web Test のタイルをポータルに追加すると、簡単に作成することが出来ます。ちなみに Web Apps のブレードに存在していますが、実体は Application Insights の Web Test が使われています。

メトリックの監視とは大きく異なり、HTTP レスポンスに対しても指定した文字列が含まれているかといった条件を追加することが出来ます。当然ながら Web Test を作成すると Application Insights が追加されます。

アラートの設定でメールを送信するようにしておくと、アクティブ化された時に以下のようなメールが送信されます。今回書いていて初めて知りましたが、指定した URL への ping だけではなく、帰ってきたデータが HTML の場合は含まれているリソースに対してもチェックを行ってくれるようです。

Web Test についてですが、以前に Application Insights に関して勉強会で話したことがあるので、その時のスライドと補足記事を紹介しておきます。

日本語のドキュメントも用意されているので、一通り目を通しておくことをお勧めします。

一般的なアプリケーションの運用で必要になる機能は Web Apps に殆ど揃っているので、ポータルからの設定だけで完結するという良い時代になりました。