Compartilhar via


Monitoramento de aplicações com Application Insights: primeiros passos

O objetivo deste artigo é apresentar o Application Insights, um serviço do Microsoft Azure voltado ao monitoramento dos mais variados tipos de aplicações.

Introdução

É consenso geral que o monitoramento de uma aplicação em produção é uma tarefa de extrema importância, embora muitas vezes este tipo de atividade seja relegado a um segundo plano. A análise de como um software vem se comportando permite não apenas detectar falhas ou identificar funcionalidades utilizadas de forma mais intensiva, como também fornece insumos para ações que visem melhorar a performance do sistema considerado.

A obtenção de informações como tempos de resposta, erros e outros aspectos relativos ao funcionamento de uma aplicação leva, quase que invariavelmente, à implementação de algum mecanismo de log para a coleta de tais dados. Do ponto de vista prático, isto se traduz em trabalho extra por parte de desenvolvedores com o intuito de criar toda uma estrutura de monitoração.

Este procedimento de coleta automatizada de dados para posterior análise recebe o nome de telemetria. As métricas obtidas poderão então ser empregadas na geração de inúmeros relatórios, fornecendo diferentes visões para os responsáveis pela administração de um sistema.

Observando toda a complexidade que envolve este processo de coleta de dados e consequente geração de análises, a Microsoft disponibilizou um serviço na plataforma Azure voltado ao monitoramento de aplicações. Trata-se do Application Insights, uma alternativa concebida com o objetivo de simplificar o acompanhamento de inúmeros tipos de ocorrência dentro de um software.

A meta deste artigo é descrever, em termos gerais, como o Application Insights funciona e seus principais recursos. Para isto será criada uma aplicação Web de exemplo, com a mesma enviando informações de telemetria para este serviço no Microsoft Azure.

Principais características

A utilização do Application Insights implica na inclusão de um SDK à aplicação que será monitorada, além de necessitar de uma conta para uso do Microsoft Azure. A partir disto acontecerá o envio de dados de telemetria para o serviço na nuvem. No caso específico de aplicações .NET, o SDK pode ser adicionado durante a criação do projeto; isto habilitará então a coleta e transmissão imediata de métricas consideradas como default ao Application Insights.

O fato do Application Insights ser uma solução da Microsoft sugere, num primeiro momento, que o uso desta tecnologia estaria restrito a aplicações construídas com o .NET Framework. Entretanto, este não é o caso. Outras plataformas de desenvolvimento como Java, Node.js, PHP, Python, Ruby, Android e até mesmo JavaScript também são suportadas (a Microsoft disponibiliza inclusive SDKs específicos para cada cenário previsto). Importante destacar ainda que o monitoramento pode ser ativado tanto a nível server-side (como no caso de um projeto em ASP.NET), quanto em modo cliente-side (um aplicativo construído em Xamarin, por exemplo).

Uma vez coletados os dados, no portal do Microsoft Azure poderão ser acessados dashboards para diversos tipos de análises. As visões existentes permitem monitorar aspectos como a disponibilidade de uma aplicação, seu desempenho ao longo do tempo, a ocorrência de falhas ou, mesmo, o local de origem (país) dos usuários.

Assim como qualquer outro serviço em um ambiente de cloud computing, o Application Insights conta com diversas faixas de preço prevendo diferentes níveis de utilização. Contudo, há também a possibilidade de uso gratuito desta solução em cenários que englobem menores volumes de processamento.

Exemplo de utilização

Para implementar o projeto apresentado neste artigo foram utilizados como recursos:

  • O Microsoft Visual Studio Community 2015 Update 1 como IDE de desenvolvimento;
  • A versão 4.6.1 do .NET Framework;
  • O Microsoft ASP.NET MVC 5;
  • Uma conta de acesso gratuita ao Microsoft Azure;
  • O Application Insights como serviço de monitoramento.

Como primeiro passo criar um projeto do tipo “ASP.NET Web Application” chamado “TesteApplicationInsights”:

Certificar-se ainda de que a opção “Add Application Insights to Project” foi marcada, informando também uma conta de acesso ao Microsoft Azure e selecionando a opção “New Application Insights resource” em “Send telemetry to” (como destacado na figura seguinte):

Selecionar na sequência o template “MVC” em “ASP.NET 4.6.1 Templates”:

Analisando a estrutura do projeto na janela “Solution Explorer” será possível notar a presença de diversas referências para uso de bibliotecas do Application Insights:

Um arquivo com configurações chamado ApplicationInsights.config também será gerado:

Importante ressaltar que, além dos ajustes descritos e que foram realizados automaticamente durante a criação do projeto, outras definições para utilização do serviço de monitoramento também serão adicionadas ao arquivo Web.config.

Concluída a geração do projeto de testes, a aplicação TesteApplicationInsights já estará habilitada para o envio de dados de telemetria ao Application Insights. Uma primeira execução da aplicação resultará no envio de dados ao serviço na nuvem, com isto podendo ser observado na janela Output do Visual Studio:

Tentativas de acesso a Views inexistentes (como indicado na próxima imagem) também implicarão na transmissão de informações ao Application Insights:

Ao acessar a opção “Todos os recursos” no portal do Microsoft Azure aparecerá então o site TesteApplicationInsights registrado para uso do recurso de monitoramento:

Clicando sobre a referência para o projeto TesteApplicationInsights será exibido um painel com um resumo relativo à utilização do mesmo:

Este primeiro sumário traz como informações o tempo médio de resposta (41,16 milissegundos), o número de requisições recebidas (103) e de solicitações com falhas (2).

Acionando a seção “SERVER RESPONSE TIME” do gráfico aparecerá um resumo com as diferentes requisições (que tiveram sucesso ou não durante o seu processamento):

É possível até mesmo obter detalhes de requisições direcionadas a um endereço específico (como Home/Index):

A figura seguinte traz maiores detalhes sobre as requisições que resultaram em falhas:

Conclusão

Trabalhando de forma não invasiva e contando com inúmeros recursos, o Application Insights representa uma alternativa bastante abrangente no que se refere ao monitoramento de aplicações. Esta solução foi concebida com o objetivo de evitar grandes esforços de codificação, simplificando a coleta de dados e a geração de análises que envolvam aspectos como desempenho, disponibilidade e ocorrência de falhas.

Pesam ainda a favor do Application Insights o suporte a várias plataformas de desenvolvimento, além da possibilidade de customização daquilo que será coletado. Estas características são garantidas graças à existência de diversos SDKs, os quais simplificam a integração com este serviço no Microsoft Azure.

Referências

Application Insights
https://www.visualstudio.com/products/application-insights-vs

Utilizando o Application Insights
https://channel9.msdn.com/blogs/DX/Utilizando-o-Application-Insights