Compartir a través de


Supervisión de las puertas de enlace de VPN con la solución de problemas de Network Watcher

Obtener información detallada sobre el rendimiento de la red es fundamental para proporcionar servicios de confianza a los clientes. Por lo tanto, es fundamental detectar rápidamente las condiciones de interrupción de la red y tomar medidas correctivas para mitigar los efectos de la condición de interrupción. Azure Automation permite implementar y ejecutar una tarea de forma programática a través de runbooks. El uso de Azure Automation crea una receta perfecta para realizar la supervisión continua y proactiva de la red y crear alertas.

Escenario

El escenario en la siguiente imagen es una aplicación de varios niveles, con conectividad local establecida mediante VPN Gateway y un túnel. Asegurarse de que VPN Gateway está activo y ejecutándose es fundamental para el correcto rendimiento de aplicaciones.

Se crea un runbook con un script para comprobar el estado de la conexión de túnel de VPN, usando la API de solución de problemas de recursos para comprobar el estado del túnel de conexión. Si el estado no es correcto, se envía a los administradores un desencadenador de correo electrónico.

Scenario example

En este escenario:

  • Creará un runbook que llama al cmdlet Start-AzureRmNetworkWatcherResourceTroubleshooting para solucionar los problemas de estado de la conexión
  • Vinculará una programación al runbook

Antes de empezar

Antes de comenzar con este escenario, tiene que cumplir los siguientes requisitos previos:

  • Tener una cuenta de Azure Automation en Azure. Asegúrese de que la cuenta de automatización tiene los módulos más recientes y de que además tiene el módulo AzureRM.Network. Si tiene que agregar el módulo AzureRM.Network a la cuenta de automatización, lo tiene a su disposición en la galería de módulos.
  • Tener un conjunto de credenciales configuradas en Azure Automation. Obtenga más información en el artículo sobre seguridad en Azure Automation
  • Tener un servidor SMTP válido (Microsoft 365, correo electrónico local u otro) y las credenciales definidas en Azure Automation
  • Tener una puerta de enlace de Virtual Network configurada en Azure.
  • Una cuenta de almacenamiento existente con un contenedor existente en el que almacenar los registros.

Nota:

La infraestructura que se muestra en la imagen anterior tiene fines meramente ilustrativos y no se creó con los pasos que se incluyen en este artículo.

Creación del runbook

El primer paso para configurar el ejemplo es crear el runbook.

Paso 1

Navegue a Azure Automation en Azure Portal y haga clic en Runbooks

automation account overview

Paso 2

Haga clic en Agregar un runbook para iniciar el proceso de creación del runbook.

runbooks blade

Paso 3

En Creación rápida, haga clic en Crear un runbook nuevo para crear el runbook.

add a runbook blade

Paso 4

En este paso, se le da un nombre al runbook, en el ejemplo se llama VPNGatewayStatus Get. Es importante darle al runbook un nombre descriptivo y se recomienda que el nombre siga los estándares de nomenclatura de PowerShell. El tipo de runbook para este ejemplo es PowerShell, las otras opciones son Gráfico, Flujo de trabajo de PowerShell y Flujo de trabajo de PowerShell gráfico.

runbook blade

Paso 5

En este paso se crea el runbook, el ejemplo de código siguiente proporciona todo el código necesario para el ejemplo. Los elementos en el código que contienen <value> tienen que reemplazarse con los valores de la suscripción.

Use el código siguiente y haga clic en Guardar

# 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)")
    }

Paso 6

Una vez guardado el runbook, tiene que haber una programación vinculada al mismo para automatizar su inicio. Para iniciar el proceso, haga clic en Programación.

Step 6

Tiene que crear una nueva programación. Haga clic en Vincular una programación a su runbook.

Step 7

Paso 1

En la hoja Programación, haga clic en Crear una programación nueva

Step 8

Paso 2

En la hoja Nueva programación rellene la información de programación. La lista siguiente enumera los valores que se pueden establecer:

  • Nombre: el nombre descriptivo de la programación.
  • Description: descripción de la programación.
  • Se inicia el: este valor es una combinación de fecha, hora y zona horaria que componen el horario en el que se desencadena la programación.
  • Periodicidad: este valor determina la repetición de programaciones. Los valores posibles son Una vez o Periódica.
  • Repetir cada: el intervalo de periodicidad de la programación en horas, días, semanas o meses.
  • Configurar expiración: el valor determina si la programación debería expirar o no. Se puede establecer en o No. Si se elige Sí es necesario proporcionar una fecha y hora válidas.

Nota:

Si necesita que un runbook se ejecute con más frecuencia que cada hora, tiene que crear varias programaciones en intervalos diferentes (es decir, 15, 30, 45 minutos después de la hora)

Step 9

Paso 3

Haga clic en Guardar para guardar la programación del runbook.

Step 10

Pasos siguientes

Ahora que comprende mejor cómo integrar la solución de problemas de Network Watcher con Azure Automation, aprenda a desencadenar capturas de paquetes en las alertas de máquina virtual consultando el artículo en el que se describe cómo crear una captura de paquetes desencadenada mediante alertas con Azure Network Watcher.