Monitorizando ejecuciones de Power Automate
Monitorizando ejecuciones de Power Automate

Monitorizando ejecuciones de Power Automate

Esta vez te traigo algo que, en mi opinión, es muy interesante si utilizas Power Automate. Hace tiempo que he estado trabajando en una solución que sirviera para almacenar y monitorizar las ejecuciones de Power Automate. ¿Qué puede aportarme esta solución? Te lo cuento:

Si ya llevas un tiempo en Dataverse habrás utilizado los workflows y sabrás que tenemos esta pantalla:

En la anterior captura se muestran todas las ejecuciones de workflows que tenemos en el sistema. De tal manera que puedo visualizar de manera rápida si algún workflow se encuentra en bucle infinito o está fallando de manera recurrente.

¿Qué pasa si intentamos buscar un sitio así para Power Automate?

Principalmente que no existe a día de hoy (principios de 2023). Microsoft tiene buenas intenciones para sacar una alternativa a esto y en la wave 1 2023 tenemos importantes avances respecto a esto. Una de estas mejoras nos va a permitir registrar el histórico de ejecuciones en Dataverse:

La otra alternativa es aún mejor porque nos va a permitir registrar las ejecuciones de Power Automate en application insight:

¿Y qué hago hasta que saquen todo esto?

Esta es precisamente la pregunta que quise resolver yo hace un tiempo ya que, quería ser proactivo a la hora de detectar errores en los entornos de Dynamics 365 y Dataverse de mis clientes. Para ello estuve investigando el CoE starter kit ya que me permite establecer una gobernanza y una monitorización de lo que ocurre en mi tenant de Power Platform. Este módulo es actualizado cada mes por el equipo de Power CAT (🙌🏻) de Microsoft.

El CoE me ha ayudado muchísimo pero es verdad que una de sus limitaciones precisamente es monitorizar flujos de nube. Ofrece algunas alternativas pero igualmente decidí arremangarme y tomar las riendas.

Combinando lo mejor del CoE con mis conocimientos de la plataforma

Dentro del CoE tenemos el listado de flujos que existen dentro de nuestro tenant como puedes ver en esta imagen:

Peeero dentro de esta aplicación no podemos ver las ejecuciones de nuestros flujos de Power Automate, únicamente vemos los flujos con sus nombres, id’s y entorno correspondientes.

El CoE tiene algo muy bueno y es que gobernamos la plataforma con la propia plataforma y, por lo tanto apliqué esa idea para desarrollar un flujo que registrar ejecuciones del resto de flujos (muy loco, no?).

Para ello lo que debes conocer es que debemos utilizar el conector ‘Http con Azure AD’ y llamar a la siguiente URL de Power Automate:

https://emea.api.flow.microsoft.com/providers/Microsoft.ProcessSimple/environments/{EnvironmentId}/flows/{FlowID}/runs?api-version=2016-11-01

Debemos sustituir las variable dinámicas que tenemos ahí por las correspondientes. EnvironmentID lo vamos a encontrar en los recursos del desarrollador en https://make.powerapps.com:

El Id del flujo de Power Automate lo vamos a extraer del propio CoE ya que, en el listado de flujos vamos a encontrar ese mismo id y sino fíjate en la última columna.

Por lo tanto podemos elaborar un flujo que tenga un desencadenador automatizado cada X tiempo (en mi caso cada 3 horas), que llame a esta API de Power Automate y finalmente registre esa ejecución en dataverse. De esta forma tenemos centralizada en una sola tabla todas las ejecuciones de nuestros flujos:

Recuerda que para que el conector de HTTP con Azure AD funcione, debemos decirle que queremos conectar con la API de Power Automate y, para ello, debemos utilizar los siguientes datos para la conexión:

La solución definitiva

Desarrollar un flujo así te va a llevar un tiempo porque hasta que lo depures, quites los problemas de duplicados a los que me he enfrentado y termines dando con una buena solución te estarás dando de cabezazos contra un muro. Es por ello que voy a compartirte la solución que yo he estado utilizando.

Pero antes debes saber que se compone de tres flujos y estos tres flujos serán:

  1. Custom – Admin | Sync Template v3 (CloudFlowExecutions): Este flujo registrará todas las ejecuciones de los flujos en la tabla de Dataverse y además tiene un sistema para almacenar elementos en memoria que permitirá que vaya más rápido
  2. Cloud Flow – Alert When Cloud Flows is off: Este flujo nos alertará cuando uno de los flujos se haya apagado en el entorno de producción. Esto será útil ya que los flujo se pueden apagar a los 28 días si no se usan o si fallan de manera recurrente.
  3. Cloud Flow – Alert When Cloud Flow Fails: Y, finalmente, este flujo leerá de la tabla donde almacenamos las ejecuciones y cuando lleguen errores, nos enviará una alerta a nuestro correo

Nada más, te invito a que instales esta solución que he dejado en mi repositorio de git aquí

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.