2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

AzureのApplication Insightsを使えばWebサイトの生き死にを簡単に監視することができます。
また、通知手段も電話やメール、SMSなど様々な通知方法が選べます。
以降では、監視対象のWebサイトがパブリック環境かプライベート環境かで手順が異なるので、それぞれ解説していきます。

パブリック環境の場合

image.png

Webサイトがパブリックに公開されている場合は非常に簡単です。Azure portalから監視の設定ができます。
Application Insightsのリソースを作成して「可用性」タブから「標準テストの追加」を選ぶだけです。

image.png
「URL」に監視したいサイトのURLを入れればOKです。簡単ですね。

参考

プライベート環境の場合

image.png

実は手順自体はMSLearnに書いてあります。

該当箇所
image.png
ちょっとこれだけだとわかりづらいですね。以下では、詳細を解説していきます。

流れ

  1. Azure Storageアカウントの作成
  2. Azure LogAnalyticsの作成
  3. Azure Functionsの作成
  4. Azure Application Insightsの作成
  5. Azure Monitor Private Endpointの作成
  6. Log AnalyticsとApplication Insightsの接続
  7. Azure Functionsを可用性監視対象の内部VMと同じVNetにVNet統合
  8. Application Insightsにてアラートルールとアクショングループを作成

ポイント

  • Azure Private LinkとAzure Monitor Private Link Scopeを使用してApplication InsightsをカスタムVNetに接続します
  • 先ほどMSLearnに書いてあったTrackAvailability()というApplication InsightsのAPIを定期的に呼び出すAzure Functionsのタイマートリガー関数を作成します
  • 今回監視対象のIPはプライベート環境(カスタムVNet内)にいるため、該当のVNetに対してAzure FunctionsをVNet統合する必要があります

以下ではポイントに絞って手順を解説していきます。

Storageアカウントの作成

Azure Functionsを作成するために、設定ファイルやソースファイルそのものを置いておくための場所としてStorageアカウントが必要。

作成方法は以下の記事を参考。
ちなみにストレージアカウントのネットワークは「すべてのネットワークから有効」にする。
「選択した仮想ネットワークとIPから有効」にするとFunctionsをデプロイするときにErrorになる。

image.png

Log Analyticsの作成

こちらも基本的にportalからポチポチ押していけば作れます。

Azure Functionsの作成

以下に沿ってportalからポチポチ作りましょう。言語は「.NET」でやってみます。

作れたら、ブラウザから関数を編集できる「App Service Editor」が便利です(作成したFunctionsのタブからいけます)。
image.png

コーディング

こちらも以下を参考に進めていきます。

runAvailabilityTest.csx
using System.Net.Http; 

public async static Task RunAvailabilityTestAsync(ILogger log) 
{ 
    using (var httpClient = new HttpClient()) 
    { 
        // TODO: Replace with your business logic 
        await httpClient.GetStringAsync("https://www.bing.com/"); 
    } 
}

httpClient.GetStringAsync()の引数に指定するURLに対して外形監視ができます。
ちなみにこの時点で、パブリックなURLに対してであれば監視ができます(プライベート環境のURLを指定すると接続できず失敗します)。

サンプルの通りbingに対して外形監視した様子
image.png
3回やったので「成功」が3件でていますね。

Application InsightsとVNetをつなぐ(Private Link)

Application Insightsを接続
image.png

PrivateEndPointを作成
image.png

PrivateEndPointを接続
image.png
あと最終的には公式ドキュメント等にも書いてある通り、Appilcation InsightsとLog Analyticsスペースのパブリックアクセスをオフにする。

VNet統合する

Azure FunctionsとAzure VMが所属しているVNetを接続する必要があるため、VNet統合する。
image.png

VNet統合する
image.png

コードの修正

内部のWebサイトに対して可用性監視の設定をしてみる
image.png

確認

上手くいっている!
image.png

アラートの追加

Application Insightsの「アラート」からアラートルールとアクショングループを作成する。Function「Time Trigger1 Successes」が0以下になったとき(=アラートルール)、メールで通知するという設定(=アクショングループ)を追加してみた。
なお、アクショングループでは通知ではなくWebhookなどのアクションを選択することもできる。
image.png

実際にDBサーバを落としてみると、
image.png
エラー検知している!

メールも来た
image.png
メールが来るのに8分くらいかかった。

DBを起動してみると、
image.png
またメールが来た!

おわりに

今回はパブリック環境とプライベート環境でそれぞれ外形監視をする方法について見てみました。是非参考にしてみて下さい。
image.png

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?