Zerkana

lunes, 6 de mayo de 2019

Azure Automation - Parte 3 - Configurando las alertas

Hi,

En ese último post dedicado al servicio de Azure Automation nos vamos a centrar en la configuración de alertas para obtener la tranquilidad de que recibiremos un SMS o mail ante fallo de alguno de nuestros runbook.

En este articulo vamos a realizar una configuración de alertas no solo del estado general del runbook = "Job Status"  sino que también vamos a monitorizar los errores que se produzcan en el código de nuestro script (Powershell, Python etc...) supervisando y alertando sobre el estado de los "Job Stream".

Esta muy bien saber si la ejecución del runbook ha fallado o se ha suspendido pero... ¿y si falla alguna secuencia o parámetro de nuestro script? Por ejemplo los cmdlet de conexión a Exchange online son cambiados y/o actualizados por Microsoft o existe algún problema con la cuenta de Admin usada para conectar, en fin, podríamos poner mil condiciones que pueden afectar a la funcionalidad de nuestro código.

Tras esta breve introducción comenzamos con las configuraciones necesarias, donde el primer paso es configurar integración entre Azure automation y Azure Monitor donde el servicio de automation enviará los logs a un workspace de log analytics, a partir de aquí podremos configurar nuestras alertas y grupos de acción:

Estos son los pre-requisitos necesarios:

  • Azure powershell 
  • Espacio de trabajo de Log Analytics
  • El ResoruceID de la cuenta de automatización que queremos integrar


  1. Creación de un Workspace de log Analytics 
Si no disponemos de uno, tendremos que generarlo accediendo al portal de Azure-->En la búsqueda introducimos "analytics" y podremos generarlo desde el Marketplace:





   2.  Configurar integración cuenta automatización con Azure Monitor

El siguiente paso sería conectar powershell (Connect-Azaccount) a nuestra suscripción de azure y realizar la integración:

 Obtenemos y anotamos el ResourceID de la cuenta de automatización a integrar y del workspace de log analytics:

# Find the ResourceId for the Automation Account
Get-AzResource -ResourceType "Microsoft.Automation/automationAccounts"

# Find the ResourceId for the Log Analytics workspace
Get-AzResource -ResourceType "Microsoft.OperationalInsights/workspaces"


Creamos un script con el siguiente código, añadiendo los ResourceID obtenidos en el paso anterior y realizamos la integración:

$workspaceId = "[resource id of the log analytics workspace]"
$automationAccountId = "[resource id of your automation account]"

Set-AzDiagnosticSetting -ResourceId $automationAccountId -WorkspaceId $workspaceId -Enabled 1

Tras la integración el servicio de automation puede tardar hasta una hora en comenzar a enviar los log al espacio de trabajo de log analytics.

Para comprobar que la integración es correcta ejecutamos el siguiente código:

Get-AzDiagnosticSetting -ResourceId $automationAccountId

y en la salida nos aseguramos que "LOGS" aparece como "enabled=True"


Otra opción para asegurarnos de que todo es OK, seria acceder al servicio de Azure Monitor y en configuración de diagnostico validar que esta habilitado:





   3.  Configuración de alertas para Job Status y Job Streams


Podemos ver como se han comenzado a registrar los logs de nuestra cuenta de automation en azure monitor de la siguiente forma:

Accedemos a Azure Monitor-->Registros y ejecutamos la siguiente Query

AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION"





Una vez validado, sin salir de esta pantalla podemos comenzar a configurar alertas relativas a Job status y Job Streams sobre nuestros runbook.


En primer lugar vamos a configurar una alerta para envío de correo cuando un runbook falla o queda en estado suspendido

Esta sería la Query que tenemos que realizar y sobre ella configurar una regla de alerta:

AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobLogs" and (ResultType == "Failed" or ResultType == "Suspended") | summarize AggregatedValue = count() by RunbookName_s



La regla de alerta deber estar basada en consulta, este seria el aspecto final:



Luego debemos generar un "Grupo de acción" donde indicamos que se realizará al desencadenarse la alerta, en nuestro caso se enviará un correo electrónico a la dirección especificada (podría ser una lista de distribución para todos los interesados)



Por último debemos introducir la información necesaria para nuestra alerta y que recibiremos por correo:




Con estos sencillos pasos tendremos configurada nuestra primera alerta y el grupo de acción que podremos añadir a nuevas reglas de alerta configuradas 😄


Para configurar nuestra segunda alerta, la más  importante y que monitorizará y alertará sobre fallos en los Job Streams tenemos que realizar los mismos pasos con estos cambios:


Esta sería la consulta sobre la cual configurar la regla de alerta:

AzureDiagnostics | where ResourceProvider == "MICROSOFT.AUTOMATION" and Category == "JobStreams" and StreamType_s == "Error" | summarize AggregatedValue = count() by JobId_g

No hace falta crear otro grupo de acción, podemos usar el creado anteriormente.


Bien, una vez configuradas las reglas de alerta podemos ver su estado en la siguiente pantalla, preparadas para entra en acción:






Referencias en la web:
https://docs.microsoft.com/en-us/azure/automation/automation-manage-send-joblogs-log-analytics


Un Saludo


No hay comentarios: