Mediante Azure Alerts, podemos gestionar de forma automática actuaciones sobre nuestros artefactos de Azure basándonos en las métricas y eventos que nos proporciona.
3. Os presento a…
Tina
Tina es la responsable de negocio de la empresa “Colored Stars”.
Su empresa se dedica a ofrecer estrellas de colores a sus clientes. Miles de estrellas. De
todos los tamaños. De todo tipo.
Pero toda su infraestructura informática la tienen on-premises. En una sala muy chula,
con el aire acondicionado a tope, lleno de cables y de ordenadores, racs de discos, cajas
vacías, routers viejos… una fregona, una escoba y un recogedor.
3
4. … y también a…
Lito
Lito es empleado de la empresa CloudRulesButSupportOnPremises. CRUSOP.
Trabaja como IT administrator, y su responsabilidad actual es atender las llamadas de los
clientes que experimenten problemas con alguna de sus aplicaciones…
Está… digamos… asegurándose de que todo sigue funcionando.
4
5. … y también a…
Lito
Pero claro…
Lito tiene la mania de dormir 8 horas todos los días. Y sus clientes son internacionales,
por los que tiene que estar disponible para atender sus llamadas... Incluso cuando
duerme.
5
6. Un día…
Puigmercial
Un día, un Puigmercial… digo… comercial se presentó en las oficinas de “Colored Stars”
para ofrecerles pasar todas sus soluciones al cloud. En concreto, al cloud de Microsoft.
En un primer momento, Tina dudó de lo que le explicaban, pero al final…
6
8. Tiempo después…
Todo iba genial. ¡Azure es la hostia!
Pero no todas las aplicaciones que tenían en “Colored Stars” estaban bien
programadas… imaginaos… ¡tenían aplicaciones en Visual Basic! ¡¡¡Visual Basic!!!
Y claro, un día…
8
9. Tiempo después…
… la aplicación principal de Colored Stars cayó… todo dejó de funcionar.
9
10. Tiempo después…
Tina llamó a Lito… y Lito solo le supo decir que había que reiniciar la aplicación. Lo hizo,
desde el portal de Azure es muy fácil. Pero eran las 4h de la mañana.
Y esto se repitió durante los tres días siguientes… y pasó un mes, y casi cada día Lito
recibía llamada de Tina.
10
11. Así que…
Así que Lito pensó en cómo no tener que atender llamadas de ese tipo, de las que solo
hace falta levantarse para reiniciar la aplicación.
11
12. Así que…
Y de ese análisis, después de mucho buscar, encontró la solución.
12
15. Azure Alerts
¿Qué son?
Azure Alerts es un servicio de Azure mediante el que se proporciona un método de
monitorización a algunos servicios de Azure.
Aunque en realidad el origen de Alerts está vinculado a Azure Monitor, otros servicios,
como las WebApps, permiten configurar criterios sobre los datos de monitorización del
artefacto para lanzar una notificación advirtiendo de que las condiciones definidas por el
criterio de la alerta se han cumplido.
Enlaces:
• https://docs.microsoft.com/en-us/azure/monitoring-and-diagnostics/monitoring-
overview-alerts
15
16. Azure Alerts
Estados
Active Resolved
¿Y qué estados puede tener una Azure Alert una vez lanzada?
Pues aunque parezca evidente, una Azure Alert puede tener un estado Activado o un
estado Resuelto. Cuidado, y con esto hago un poco de spoiler, porque Azure Alerts
levantará una alerta en el momento en el que la condición que configuréis se cumpla,
pero también en el momento en el que la métrica que generó la alerta anterior queda
resuelta.
16
17. Azure Alerts
¿Qué podemos controlar?
Y quizá, llegados a este punto, os preguntaréis… ¿Qué puedo controlar mediante Azure
Alerts en una web app?
Pues parámetros diversos, como el tiempo de CPU, las peticiones que recibe un servicio
o aplicación por parte de los usuarios finales, o la cantidad de errores que nuestra
aplicación ha generado.
Estas condiciones de Azure Alerts se gestionan mediante umbrales de tolerancia. Lo
veremos más adelante, tranquilos… durante el tiempo demo!
17
18. Azure Alerts
¿Y cómo me avisa?
¿Qué queda?
Pues saber de qué modo nos avisa Azure Alerts de que algo va mal (o de que una de
nuestras métricas se cumple).
En este caso, estamos algo más limitados… Azure Alerts nos envía un correo
electrónico…
¿De qué le sirve eso a Lito cuando duerme? De nada…
Por suerte…
18
19. Azure Alerts
¿Y cómo me avisa?
… además de correos electrónicos, Azure Alerts nos permite invocar una llamada a un
webhook cuando se genera una alerta. Ese es el camino que vamos a seguir, porque en
realidad la alerta sólo nos avisa de que algo pasa, pero para poder actuar en
consecuencia… necesitamos algo más.
Y es aquí donde vamos a utilizar una solución serverless, que para los que no sepan que
es eso de serverless, os digo que no es que no tengáis un ordenador detrás de vuestra
solución… sino que es un ordenador muy tocho… muy muy tocho… inmensamente
tocho, del que no os tenéis que preocupar porque de eso se encarga Micro… en el que
podéis montar una aplicación en una pequeña parte de dicha máquina. Os presento…
19
20. Azure Functions
¿Qué son?
Azure Functions no es más que un servicio serverless de Microsoft Azure, que permite
desplegar aplicaciones de diversa tipología en un entorno altamente escalable.
Los tipos de aplicación que admite este servicio van desde servicios de backend móvil
hasta servicios event-based asociados a otros servicios como Azure Service Bus (esto no
lo explicaremos hoy).
Una de las gracias de Azure functions es que la podéis programar como os de la gana.
> https://docs.microsoft.com/en-us/azure/azure-functions/supported-languages
En Java incluso. Sí… seguro que más de uno se estará preguntado qué es ese logo de ahí
abajo… el blanco y azul sobre fondo negro…
Ese logo es el del lenguaje F#, un lenguaje funcional que Microsoft adoptó… o creó… no
lo tengo muy claro, para permitir a los desarrolladores del entorno Microsoft disponer
de un lenguaje con el que poder cubrir el escenario de la programación funcional.
> https://es.wikipedia.org/wiki/F_Sharp
20
21. Pero hoy hemos venido a hablar de uno de los lenguajes que Azure Functions admite de
manera experimental… y este es, nada más y nada menos… que powershell, amigos.
20
22. Azure Functions
¿Por qué powershell?
Hay varios motivos para escoger powershell:
➢ Es un lenguaje simple de scripting, pensado para realizar tareas de mantenimiento de
equipos y de infraestructuras…
➢ … como por ejemplo la disponible en Azure, para el que existe un módulo específico
que permite manejar casi cualquier artefacto en la nube… y…
➢ … también porque Manu y Nacho tienen cierta animadversión a las consolas,
terminales y todo eso… aunque he de reconocer que poco a poco le van cogiendo el
gustillo.
Teniendo en cuenta que Lito necesita reiniciar la webapp de Colored Stars cuando esta
cae… ¿qué mejor que un lenguaje de administradores de sistema para hacerlo?
21
23. Azure Functions
Webhooks
Hemos escogido nuestro arma. Ahora temenos que encontrar la manera de utilizarla.
Azure Functions permite configurar tres tipos de webhooks de forma nativa:
- General Webhooks
- Github webhooks
- Slack webhooks
A nosotros nos interesa el primero de ellos. Mediante un general webhook, podremos
hacer que nuestra alert avise a nuestra function para que haga lo que queremos hacer.
El problema… es que desde las plantillas disponibles, solo podemos seleccionar
plantillas de lenguajes probados, como c#, no de lenguajes experimentales. Lo veremos
en la demo. Ya queda menos.
22
24. Azure Functions
Interacción con el management API de Azure
Sólo nos queda una cosa por solucionar, y es cómo autenticamos nuestras operaciones
de administración automáticas contra el management de Azure…
¡Fácil, sencillo y para toda la familia!
Azure Active Directory nos proporciona un mecanismo para autorizar aplicaciones, de
manera que se generen unas credenciales que nos permitan ejecutar procesos
desasistidos o servicios (en este caso nuestra function de reinicio).
De hecho, dentro de Azure Active Directory tenemos una serie de roles por defecto, de
los cuales nos aprovecharemos para que nuestra aplicación tenga acceso para gestionar
nuestros artefactos de Azure.
Referencias: https://docs.microsoft.com/en-us/azure/active-directory/role-based-
access-built-in-roles
23
26. Y colorín colorado…
Así que… después de todo, todos contentos. Puigmercial, Tina y Lito… todos felices
gracias a Azure Alerts y las posibilidades de diseño serverless que ofrece Azure.
¡Estrellas de colores para todos!
25