ASP.NET Core Monitoramento de Performance em Tempo Real
Hoje em dia temos API’s para todos os lados e em algum ponto precisamos começar a monitorar nossa API em tempo real, e é através desse artigo/tutorial onde irei demonstrar como iremos fazer isso com .NET Core + InfluxDB e Grafana. (O InfluxDB e o Grafana iremos utilizar através do Docker).
Criando a API
Criar a API é bem simples, basta criar um novo projeto no VisualStudio e selecionar a opção .NET Core / ASP.NET Core Web Application
Instalando o Grafana
Updated:
Utilizem esse Gist para subir a stack
Antigo:
Para fazer o setup do Grafana através do Docker é muito simples, basta executar a seguinte linha de comando:
docker run -d -p 3000:3000 grafana/grafana
Mais informações podem ser conferidas aqui no site do Grafana.
Instalando o InfluxDB
O procedimento é igual ao do Grafana, basta executar a seguinte linha de comando:
docker run -p 8086:8086 -d -v influxdb:/var/lib/influxdb influxdb
Como podem observar o Grafana ficou na porta 3000 e o Influx na porta 8086.
Configurando a API
Agora precisamos ir lá na API e configurar para gravar as métricas no InfluxDB, portanto iremos modificar alguns arquivos e instalar pacotes Nuget.
Install-Package App.Metrics.Extensions.Mvc
Install-Package App.Metrics.Formatters.Json
Install-Package App.Metrics.Extensions.Reporting.InfluxDB
Modifique seu arquivo Startup.cs conforme exemplo abaixo:
Observe que adicionamos linhas pertinentes à configuração do InfluxDB como por exemplo:
var database = “appmetricsdemo”;
var uri = new Uri(“http://127.0.0.1:8086");
Portanto use da forma que configurou.
Configurando o Grafana
Vamos agora acessar o Grafana, http://localhost:3000, usuário e senha padrão é admin/admin.
Agora você precisará configurar um DataSource, onde no nosso caso será o Influx, abaixo segue exemplo de configuração:
Note que a URL eu inseri o IP do container Docker onde está rodando o InfluxDB, pois o Grafana também está sendo executado no Docker e os dois estão sendo executados dentro do mesmo network.
Clique em Save & Test, você deverá ver esse resultado:
Agora vamos importar o Dashboard para o Grafana:
Aqui nesse site você pode encontrar o arquivo Json para importar para o seu dashboard, porém deixarei também a cópia do que utilizei na demo aqui:
Vamos agora executar nossa aplicação, fique à vontade para adicionar novos Controllers.
Resultado
Endpoints:
Overview:
Detalhe de requisições dos EndPoints
Configurações de filtros do Grafana:
Bom, deu pra ter uma idéia de quão poderosa é essa ferramenta, certo ?
A idéia é demonstrar como subir esse ambiente e rapidamente configurar sua API.
Projeto utilizado no GitHub tá aqui:
Até a próxima!