[Caso Real] Automatizando consulta no Application Insights

[Caso Real] Automatizando consulta no Application Insights
Photo by Kaleidico / Unsplash

Ola pessoALL,

Esse último final de semana aconteceu uma situação complicada, eu sou um dos responsáveis por um sistema nos EUA que roda 24x7 e processa pagamentos, era sábado por volta das 18:00 aqui no BR e começaram a chegar alguns alertas da api de pagamentos, temos uma regra simples no nosso application insights, a cada 5 minutos se a quantidade de exceptions for maior que 5 nós disparamos um alerta.
Faz algum tempo que não temos problemas nessa API, graças a Deus, e nas últimas vezes foi um problema do gateway que usamos. Pois bem, estava na rua com minha família e por algum motivo esqueci de levar meu notebook e não tinha nenhum jeito fácil de executar as queries que costumo usar para poder dar uma resposta para o time de suporte para saber se era um erro do nosso lado ou do lado do gateway.
O que vou descrever aqui é um jeito simples de executar queries do Azure Monitor ou do Application Insights e enviar os resultados por email (pode ser teams, slack ou qualquer outra integração). Vamos lá

Criando o Azure Logic Apps

Se você ainda não conhece sobre o Logic Apps, recomendo que de uma lida na documentação https://azure.microsoft.com/pt-br/services/logic-apps/#overview

Os Aplicativos Lógicos do Azure são um iPaaS (plataforma de integração como serviço) líder no setor, criado com base em um runtime conteinerizado. Implante e execute os Aplicativos Lógicos em qualquer lugar para aumentar a escala e portabilidade ao automatizar fluxos de trabalho comercialmente críticos em qualquer lugar.

Basicamente o Logic Apps nos permite fazer orquestrações e controle de fluxo para automatizar tarefas do dia a dia com nenhum ou pouco código.

A automação em si é bem simples:

  • Toda vez que um POST for recebido na URL fornecida
  • Rodamos uma query no application insights
  • Transformamos o resultado da query em uma tabela html
  • Enviamos um email

As conexões com os servicços como o GMail (ou office 365) são bem intuitivas e feitas via interface.

Pontos importantes

Temos apenas dois pontos importantes aqui, o primeiro é a query do application insights.

requests
| where resultCode == "500" and timestamp > ago(10m)
| order by timestamp desc
| project name, duration, performanceBucket, operation_Id
| join kind=leftouter (exceptions
        | project  operation_Id, problemId, outerMessage, innermostMessage
        ) on operation_Id
| project-away operation_Id, operation_Id1

Faço um join com a tabela de expcetions para saber a origem dos erros e ter algumas informações extras sobre o erro. A última função project-away serve para excluir algumas colunas do resultset.

O "pulo do gato" aqui para facilitar a visualização dos resultados é transformar os resultados em uma tabela html, para mais informações, consulte a documentação

Perform operations on data - Azure Logic Apps
Convert, manage, and manipulate data outputs and formats in Azure Logic Apps.

No final temos um email com os resultados e conseguimos avaliar o que esta acontecendo

Executando a automação

No meu caso coloquei dois modos de iniciar a automação

  • No próprio alerta do Azure eu criei um grupo que dispara a trigger do logic app
  • Criei um comando no slack do meu time que executa um post para a URL fornecida do logic app e faz o mesmo processo.

Por hoje é só pessoALL, espero que tenham gostado e podem comentar a vontade sobre outras utilizações do Azure Logic App