ロード バランサーの監視

Azure リソースに依存するクリティカルなアプリケーションとビジネス プロセスがある場合は、それらのリソースの可用性、パフォーマンス、操作を監視する必要があります。

この記事では、Load Balancer によって生成される監視データについて説明します。 Load Balancer では Azure Monitor が使用されます。 Azure Monitor を使用するすべての Azure サービスにとって共通する機能に詳しくない場合は、「Azure Monitor を使用した Azure リソースの監視」を参照してください。

ロード バランサーの分析情報

Azure の一部のサービスには、サービス監視の起点となることを目的として特別に事前構築された監視ダッシュボードが Azure portal にあります。 これらの特別なダッシュボードは、"分析情報" と呼ばれます。

Load Balancer の分析情報には次のものがあります。

  • 機能依存関係ビュー
  • メトリック ダッシュボード
  • [概要] タブ
  • フロントエンドとバックエンドの可用性に関するタブ
  • データ スループットに関するタブ
  • フローの分布
  • 接続モニター
  • メトリック定義

Load Balancer の分析情報の詳細については、「Azure Load Balancer を監視および構成するための分析情報の使用」を参照してください

データの監視

Load Balancer では、他の Azure リソースと同じ種類の監視データが収集されます。これについては、Azure リソースの監視データに関するページを参照してください。

Load Balancer によって作成されるメトリックとログ メトリックの詳細については、「Load Balancer データの監視のリファレンス」を参照してください。

Load Balancer は、以下を通じて他の監視データを提供します。

収集とルーティング

プラットフォーム メトリックとアクティビティ ログは自動的に収集および格納されますが、診断設定を使用して他の場所にルーティングすることもできます。

リソース ログは、診断設定を作成して 1 つ以上の場所にルーティングするまでは収集および格納されません。

診断設定の作成

診断設定は、Azure portal、PowerShell、または Azure CLI を使用して作成できます。

一般的なガイダンスについては、Azure でプラットフォーム ログとメトリックを収集するための診断設定の作成に関するページを参照してください。

診断設定を作成するときは、収集するログのカテゴリを指定します。 Load Balancer のカテゴリは AllMetrics です

ポータル

  1. Azure portal にサインインします。

  2. ポータルの上部にある検索ボックスに、「ロード バランサー」と入力します。

  3. 検索結果で [ロード バランサー] を選択します。

  4. お使いのロード バランサーを選択します。 この例では myLoadBalancer を使用します。

  5. myLoadBalancer[監視] セクションで、 [診断設定] を選択します。

  6. [診断設定] で、 [+ 診断設定を追加する] を選択します。

  7. [診断設定] に次の情報を入力するか、選択します。

    設定
    診断設定の名前 診断設定の名前を入力します。
    カテゴリの詳細
    メトリック [AllMetrics] を選択します。
  8. [宛先の詳細] を選択します。 宛先オプションのいくつかは次のとおりです。

    • Log Analytics への送信
      • サブスクリプションLog Analytics ワークスペースを選択します。
    • ストレージ アカウントへのアーカイブ
      • サブスクリプションストレージ アカウントを選択します。
    • イベント ハブへのストリーム
      • [サブスクリプション][イベント ハブの名前空間][イベント ハブ名 (オプション)][イベント ハブ ポリシー名] を選択します
  9. [保存] を選択します。

PowerShell

Azure PowerShell にサインインします。

Connect-AzAccount 

Log Analytics ワークスペース

リソース ログを Log Analytics ワークスペースに送信するには、次のコマンドを入力します。 角かっこで囲まれた値は、実際の値に置き換えます。

## Place the load balancer in a variable. ##
$lbpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-load-balancer-name>
}
$lb = Get-AzLoadBalancer @lbpara
    
## Place the workspace in a variable. ##
$wspara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-log-analytics-workspace-name>
}
$ws = Get-AzOperationalInsightsWorkspace @wspara
    
## Enable the diagnostic setting. ##
Set-AzDiagnosticSetting `
    -ResourceId $lb.id `
    -Name <your-diagnostic-setting-name> `
    -Enabled $true `
    -MetricCategory 'AllMetrics' `
    -WorkspaceId $ws.ResourceId

ストレージ アカウント

リソース ログをストレージ アカウントに送信するには、次のコマンドを入力します。 角かっこで囲まれた値は、実際の値に置き換えます。

## Place the load balancer in a variable. ##
$lbpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-load-balancer-name>
}
$lb = Get-AzLoadBalancer @lbpara
    
## Place the storage account in a variable. ##
$storpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-storage-account-name>
}
$storage = Get-AzStorageAccount @storpara
    
## Enable the diagnostic setting. ##
Set-AzDiagnosticSetting `
    -ResourceId $lb.id `
    -Name <your-diagnostic-setting-name> `
    -StorageAccountId $storage.id `
    -Enabled $true `
    -MetricCategory 'AllMetrics'

イベント ハブ

イベント ハブの名前空間にリソース ログを送信するには、次のコマンドを入力します。 角かっこで囲まれた値は、実際の値に置き換えます。

## Place the load balancer in a variable. ##
$lbpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-load-balancer-name>
}
$lb = Get-AzLoadBalancer @lbpara
    
## Place the event hub in a variable. ##
$hubpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-event-hub-name>
}
$eventhub = Get-AzEventHubNamespace @hubpara

## Place the event hub authorization rule in a variable. ##    
$hubrule = @{
    ResourceGroupName = 'myResourceGroup'
    Namespace = 'myeventhub8675'
}
$eventhubrule = Get-AzEventHubAuthorizationRule @hubrule

## Enable the diagnostic setting. ##
Set-AzDiagnosticSetting `
    -ResourceId $lb.Id `
    -Name 'myDiagSetting-event'`
    -EventHubName $eventhub.Name `
    -EventHubAuthorizationRuleId $eventhubrule.Id `
    -Enabled $true `
    -MetricCategory 'AllMetrics'

Azure CLI

Azure CLI にサインインします。

az login

Log Analytics ワークスペース

リソース ログを Log Analytics ワークスペースに送信するには、次のコマンドを入力します。 角かっこで囲まれた値は、実際の値に置き換えます。

lbid=$(az network lb show \
    --name <your-load-balancer-name> \
    --resource-group <your-resource-group> \
    --query id \
    --output tsv)

wsid=$(az monitor log-analytics workspace show \
    --resource-group <your-resource-group> \
    --workspace-name <your-log-analytics-workspace-name> \
    --query id \
    --output tsv)
    
az monitor diagnostic-settings create \
    --name <your-diagnostic-setting-name> \
    --resource $lbid \
    --metrics '[{"category": "AllMetrics","enabled": true}]' \
    --workspace $wsid

ストレージ アカウント

リソース ログをストレージ アカウントに送信するには、次のコマンドを入力します。 角かっこで囲まれた値は、実際の値に置き換えます。

lbid=$(az network lb show \
    --name <your-load-balancer-name> \
    --resource-group <your-resource-group> \
    --query id \
    --output tsv)

storid=$(az storage account show \
        --name <your-storage-account-name> \
        --resource-group <your-resource-group> \
        --query id \
        --output tsv)
    
az monitor diagnostic-settings create \
    --name <your-diagnostic-setting-name> \
    --resource $lbid \
    --metrics '[{"category": "AllMetrics","enabled": true}]' \
    --storage-account $storid

イベント ハブ

イベント ハブの名前空間にリソース ログを送信するには、次のコマンドを入力します。 角かっこで囲まれた値は、実際の値に置き換えます。

lbid=$(az network lb show \
    --name <your-load-balancer-name> \
    --resource-group <your-resource-group> \
    --query id \
    --output tsv)

az monitor diagnostic-settings create \
    --name myDiagSetting-event \
    --resource $lbid \
    --metrics '[{"category": "AllMetrics","enabled": true}]' \
    --event-hub-rule /subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.EventHub/namespaces/<your-event-hub-namespace>/authorizationrules/RootManageSharedAccessKey

収集できるメトリックとログについては、次のセクションで説明します。

メトリックの分析

Azure Monitor のメニューから [メトリック] を開き、メトリックス エクスプローラーを使用して、Load Balancer のメトリックを、他の Azure サービスからのメトリックと一緒に分析することができます。 このツールの使用方法の詳細については、「Azure Monitor メトリックス エクスプローラーでメトリックスを分析する」を参照してください。

Load Balancer のために収集されるプラットフォーム メトリックの一覧については、Load Balancer データの監視のリファレンスのメトリックに関する記事を参照してください

参考のために、Azure Monitor でサポートされているすべてのリソース メトリックの一覧を確認できます。

ログの分析

Azure Monitor ログのデータはテーブルに格納され、各テーブルには独自の一意のプロパティ セットがあります。

アクティビティ ログは、サブスクリプションレベルのイベントの分析情報が得られるプラットフォーム ログの一種です。 個別に表示できるほか、Azure Monitor ログにルーティングして、Log Analytics を使用してより複雑なクエリを実行することもできます。

Azure Monitor ログによって使用され、Log Analytics によってクエリ可能なテーブルの一覧については、「Load Balancer データの監視のリファレンス」を参照してください

NSG フロー ログを使用したロード バランサー トラフィックの分析

NSG のフロー ログは、ネットワーク セキュリティ グループを使用した IP トラフィックに関する情報をログに記録できる Azure Network Watcher の機能です。 フロー データは Azure Storage に送信され、そこからデータにアクセスし、任意の視覚化ツール、セキュリティ情報イベント管理 (SIEM) ソリューション、または侵入検出システム (IDS) にエクスポートできます。

NSG フロー ログを使用して、ロード バランサーを通過するトラフィックを分析できます。 NSG フロー ログには、ロード バランサーのフロントエンド IP アドレスが含まれていないことに注意してください。 ロード バランサーに流れるトラフィックを分析するには、NSG フロー ログをロード バランサーのバックエンド プール メンバーのプライベート IP アドレスでフィルター処理する必要があります。

警告

Azure Monitor のアラートは、監視データで重要な状態が見つかると事前に通知します。 これにより、ユーザーが気付く前に、管理者が問題を識別して対処できます。 アラートはメトリックログアクティビティ ログに対して設定できます。 アラートの種類に応じて、さまざまな利点と欠点があります。

Load Balancer 上で動作するアプリケーションを作成または実行している場合、Azure Monitor Application Insights によって他の種類のアラートが提供されます。

次の表に、Load Balancer の一般的および推奨される警告ルールを示します。

アラートの種類 条件 説明
VM が使用できないため、負荷分散規則を使用できない フロントエンド IP アドレスとフロントエンド ポート (既知および将来のすべての値) で分割されたデータ パスの可用性が 0 であり、2 次アラートで正常性プローブの状態が 0 の場合は、アラートを発生します これらのアラートは、関連するバックエンド プール内のすべての VM が構成済み正常性プローブによってプローブ対象外にされているため、構成された負荷分散規則のデータ パスの可用性がトラフィックを処理できていないかどうかを判断するのに役立ちます。 ロード バランサーのトラブルシューティング ガイドを確認して、潜在的な根本原因を調査します。
VM の可用性が大幅に低い バックエンド IP とバックエンド ポートで分割された正常性プローブの状態が、プール サイズ全体のユーザー定義のプローブ対象率 (つまり、25% がプローブ対象) と等しい場合は、アラートを発生します このアラートは、トラフィックを処理するために利用可能な VM が必要数に達していないかどうかを判断します
インターネット エンドポイントへの送信接続が失敗する "接続状態" = "失敗" でフィルター処理された SNAT 接続数が 0 より大きい場合は、アラートを発生します このアラートは、SNAT ポートが使い果たされ、VM が送信接続を開始できなかった場合に発生します。
SNAT の枯渇に近づいている 使用された SNAT ポートがユーザー定義の数を超えている場合、アラートを発生します このアラートには、常に同じ数のポートが割り当てられる静的な送信の構成が必要です。 その後、割り当てられたポートのうち一定の割合が使用された場合に発生します。

次のステップ