Мониторинг VPN-шлюзов с помощью средства устранения неполадок Наблюдателя за сетями

Чтобы предоставлять клиентам надежное обслуживание, вы должны знать все о производительности своей сети. Поэтому важно быстро обнаруживать аварийные состояния сети и принимать необходимые меры, чтобы свести к минимуму последствия этих состояний. Служба автоматизации Azure позволяет реализовать и выполнить эту задачу программными средствами с помощью модулей runbook. С помощью службы автоматизации Azure вы можете выполнять упреждающий непрерывный мониторинг сети и создавать оповещения.

Сценарий

На следующем изображении показано многоуровневое приложение, локальное подключение к которому обеспечивают VPN-шлюз и туннель. Для производительности приложений крайне важно обеспечить включение и работу VPN-шлюза.

Модуль runbook создается со скриптом для проверки состояния подключения VPN-туннеля с помощью API устранения неполадок в ресурсах. Если туннель не работает, администраторам электронной почтой отправляется триггер.

Scenario example

Вы узнаете:

  • Как создать модуль runbook, вызывающий командлет Start-AzureRmNetworkWatcherResourceTroubleshooting для устранения неполадок подключения.
  • Подключение расписания к модулю runbook

Подготовка к работе

Прежде чем приступить к работе с этим сценарием, следует подготовить такие необходимые компоненты:

  • Учетная запись службы автоматизации Azure. Убедитесь, что учетная запись службы автоматизации содержит последние версии модулей, а также модуль AzureRM.Network. Чтобы добавить модуль AzureRM.Network в учетную запись службы автоматизации Модуль, см. коллекцию модулей.
  • Набор учетных данных, настроенных в службе автоматизации Azure. См. дополнительные сведения о безопасности службы автоматизации Azure.
  • Допустимый SMTP-сервер (Microsoft 365, локальный или другой адрес электронной почты) и учетные данные, определенные в службе автоматизации Azure.
  • Настроенный шлюз виртуальной сети в Azure.
  • Существующая учетная запись хранения с существующим контейнером для хранения журналов.

Примечание.

Инфраструктура, показанная на предыдущем рисунке, предназначена для иллюстрации. Она не создается с помощью выполнения инструкций из этой статьи.

Создание модуля runbook

Чтобы настроить пример, сначала нужно создать модуль runbook.

Шаг 1

Перейдите к службе автоматизации Azure на портале Azure и нажмите кнопку Модули Runbook.

automation account overview

Шаг 2

Нажмите кнопку Добавить Runbook, чтобы начать создание модуля Runbook.

runbooks blade

Шаг 3.

В разделе Быстрое создание, нажмите кнопку Создать новый Runbook, чтобы создать модуль runbook.

add a runbook blade

Шаг 4

На этом этапе присвойте модулю runbook имя. В этом примере он называется Get-VPNGatewayStatus. Необходимо указать описательное имя модуля runbook. Кроме того, рекомендуется присвоить ему имя, которое соответствует стандартам именования PowerShell. Тип модуля runbook в этом примере — PowerShell. Другие варианты: графический, рабочий процесс PowerShell и графический рабочий процесс PowerShell.

runbook blade

Шаг 5

На этом шаге создается модуль runbook. В примере ниже содержится весь необходимый код. Элементы <value> в этом коде необходимо заменить значениями из вашей подписки.

Используйте следующий код и нажмите кнопку Сохранить.

# Set these variables to the proper values for your environment
$automationCredential = "<work or school account>"
$fromEmail = "<from email address>"
$toEmail = "<to email address>"
$smtpServer = "<smtp.office365.com>"
$smtpPort = 587
$runAsConnectionName = "<AzureRunAsConnection>"
$subscriptionId = "<subscription id>"
$region = "<Azure region>"
$vpnConnectionName = "<vpn connection name>"
$vpnConnectionResourceGroup = "<resource group name>"
$storageAccountName = "<storage account name>"
$storageAccountResourceGroup = "<resource group name>"
$storageAccountContainer = "<container name>"

# Get credentials for work or school account
$cred = Get-AutomationPSCredential -Name $automationCredential

# Get the connection "AzureRunAsConnection "
$servicePrincipalConnection=Get-AutomationConnection -Name $runAsConnectionName

"Logging in to Azure..."
Connect-AzureRmAccount `
    -ServicePrincipal `
    -TenantId $servicePrincipalConnection.TenantId `
    -ApplicationId $servicePrincipalConnection.ApplicationId `
    -CertificateThumbprint $servicePrincipalConnection.CertificateThumbprint
"Setting context to a specific subscription"
Set-AzureRmContext -SubscriptionId $subscriptionId

$nw = Get-AzurermResource | Where {$_.ResourceType -eq "Microsoft.Network/networkWatchers" -and $_.Location -eq $region }
$networkWatcher = Get-AzureRmNetworkWatcher -Name $nw.Name -ResourceGroupName $nw.ResourceGroupName
$connection = Get-AzureRmVirtualNetworkGatewayConnection -Name $vpnConnectionName -ResourceGroupName $vpnConnectionResourceGroup
$sa = Get-AzureRmStorageAccount -Name $storageAccountName -ResourceGroupName $storageAccountResourceGroup 
$storagePath = "$($sa.PrimaryEndpoints.Blob)$($storageAccountContainer)"
$result = Start-AzureRmNetworkWatcherResourceTroubleshooting -NetworkWatcher $networkWatcher -TargetResourceId $connection.Id -StorageId $sa.Id -StoragePath $storagePath

if($result.code -ne "Healthy")
    {
        $body = "Connection for $($connection.name) is: $($result.code) `n$($result.results[0].summary) `nView the logs at $($storagePath) to learn more."
        Write-Output $body
        $subject = "$($connection.name) Status"
        Send-MailMessage `
        -To $toEmail `
        -Subject $subject `
        -Body $body `
        -UseSsl `
        -Port $smtpPort `
        -SmtpServer $smtpServer `
        -From $fromEmail `
        -BodyAsHtml `
        -Credential $cred
    }
else
    {
    Write-Output ("Connection Status is: $($result.code)")
    }

Шаг 6

После сохранения модуля runbook его необходимо подключить к расписанию, чтобы автоматизировать запуск модуля. Чтобы начать, нажмите кнопку Расписание.

Step 6

Необходимо создать новое расписание. Щелкните Связать расписание с модулем runbook.

Step 7

Шаг 1

В колонке Расписание щелкните Создать новое расписание.

Step 8

Шаг 2

В колонке Новое расписание заполните сведения о расписании. Вы можете указать значения, перечисленные ниже.

  • Имя — понятное имя расписания.
  • Описание — описание расписания.
  • Начало — это значение включает дату, время и часовой пояс, которые формируют время активации расписания.
  • Повторение — это значение определяет повторение расписания. Допустимые значения: Однократно или Периодически.
  • Повторять каждые — интервал повторения расписания в часах, днях, неделях или месяцах.
  • Установить срок действия — значение определяет, есть ли у расписания срок действия. Возможные варианты: Да или Нет. Если выбран вариант "Да", необходимо указать допустимое значение даты и времени.

Примечание.

Если модуль runbook необходимо запускать чаще, чем каждый час, необходимо создать несколько расписаний с разными интервалами (то есть 15, 30, 45 минут после часа)

Step 9

Шаг 3.

Нажмите кнопку "Сохранить", чтобы сохранить расписание для модуля runbook.

Step 10

Следующие шаги

Чтобы узнать, как интегрировать средство устранения неполадок Наблюдателя за сетями со службой автоматизации Azure, научитесь активировать захват пакетов на основе предупреждений виртуальной машины. Инструкции см. в статье о том, как с помощью Наблюдателя за сетями Azure создать захват пакетов, который активируется оповещениями.