An Interest In:
Web News this Week
- April 23, 2024
- April 22, 2024
- April 21, 2024
- April 20, 2024
- April 19, 2024
- April 18, 2024
- April 17, 2024
Observabilidade em APIs ASP.NET core
Ferramentas utilizadas:
- Asp.Net core 3.1
- prometheus-net
- InfluxDB
- Grafana
Introduo
Para este tutorial ser construdo apenas uma API com Asp.net core que contm um controller, ou seja, o foco aqui sobre como adicionar um coletor de mtricas na sua API. Neste tutorial todas as ferramentas sero instaladas localmente sem uso de Docker.
InfluxDB
O InfluxDB um banco de dados (TSDB) usado para armazenar registros onde a data e hora em que eles foram armazenados so relevantes para algum tipo de anlise. Portanto, o InfluxDB usado para armazenar mtricas de servidor, monitoramento de desempenho de aplicativos, dados de rede, dados de sensores, eventos, negociaes em um mercado e outros tipos de dados analticos. Ele possui uma linguagem prpria chamada Influx que se utiliza do paradigma funcional e oferece vrias funes para manipular e analisar dados.
O InfluxDB pode ser usado com Docker ou instalando o banco de dados na sua mquina. Para instalar o InfluxDB basta baixar o pacote comprimido no site InfluxData e descomprimir na pasta C:\Program Files\InfluxData\
, aps isso basta abrir o terminal do seu computador e rodar o binrio do banco de dados.
cd "C:\Program Files\InfluxData\" ./influxd
Aps isso voc consegue acessar a UI do influxDB que fica por padro no endereo http://localhost:8086
Grafana
O grafana uma aplicao de cdigo aberto onde possvel criar dashboards que refletem os dados que esto armazenados em alguma fonte de dados que voc especifica. Ele pode ser usado de duas formas: como container Docker ou instalado localmente. Para instalar basta entrar no site do Grafana e selecionar o seu sistema operacional. Se voc estiver no windows baixe o arquivo .msi e siga o instalador. Aps finalizar a instalao o servidor do grafana ja estar rodando na porta 3000 http://localhost:3000
.
API Asp.Net Core 3.1
Aqui ser usado Visual Studio 2019. Crie uma API Asp.Net Core 3.1 com os seguintes passos:
- Selecione a opo Criar um projeto
- Selecione o projeto Aplicativo Web ASP.NET Core e d o nome que desejar
Aps essa criao adicione o seguinte pacote prometheus-net.AspNetCore
Se voc no sabe instalar um pacote, segue as instrues:
- Selecione a opo Ferramentas > Gerenciador de pacotes do NuGet > Gerenciar pacotes do NuGet para a Soluo
- Na janela que ir abrir selecione a aba Procurar e digite o nome do pacote.
- Aps encontrar o pacote selecione ele e instale na sua soluo.
Aps fazer isso basta voc adicionar o middleWare do prometheus para expor as metricas da sua API no endpoint /metrics
. O app.UseHttpMetrics()
deve ser posto aps app.UseRouting()
.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { ... app.UseRouting(); app.UseHttpMetrics(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapMetrics(); }); }
Quando voc rodar a sua API e consultar o endpoint /metrics
ver o seguinte resultado:
Salvando as mtricas no InfluxDB
O InfluxDB tem os buckets que so onde as mtricas so armazenadas, porm com Asp.net core voc s tem ferramentas/pacotes que te possibilitam escrever e consultar esse bucket, no tem um pacote que colete e insira os dados diretamente no bucket. Para isso o InfluxDB tambm oferece os scrapers que so coletores que buscam dados de um endpoint informado por voc que expe as mtricas no padro de escrita Prometheus. Esses Scrapers ficam varrendo o endpoint que voc informou e guarda os dados que encontra no bucket informado por voc.
Para utilizar o Scrapper voc precisa:
- Criar um Bucket
- Criar um Scraper
Se voc no souber como criar assista o video. Criando buckets e scrapers
Vale ressaltar que na opo "Target URL" para criar o scraper voc deve informar o endpoint de mtricas da sua API.
Aps isso, quando voc rodar a sua API e comear a fazer requisies para ela os dados sero inseridos nos buckets, e voc vai poder visualizar que eles esto sendo salvos atravs da opo Explore na interface grfica do InfluxDB http://localhost:8086
.
Criando Dashboard no Grafana
Depois de ter instalado o grafana voc deve acessar o endereo http://localhost:3000
, fazer login e comear os preparativos para visualizar os seus dados que esto armazenados no InfluxDB. Para isso voc deve:
- Adicionar a fonte de dados do InfluxDB
- Criar o Dashboard de forma que cada quadro represente uma query ao Bucket
Assista o vdeo para saber como fazer os dois passos anteriores.
Se voc no conhece a forma de escrita com Influx e no tem intimidade com ela voc pode utilizar o construtor de query (Query Builder), selecionar os parmetros que voc quer visualizar e depois copiar o script gerado em Script Editor (Esse procedimento mostrado no vdeo sugerido logo acima).
Uma informao que acho relevante citar aqui : voc pode verificar os tipos de dados disponibilizados pela ferramenta prometheus-net.AspNetCore olhando o seu endpoint /metrics
. Cada mtrica tem um breve resumo com a sua descrio (#HELP) e tipo (#TYPE).
Saber o tipo de informao disponibilizada te ajudar a escolher o tipo de grfico correto para a sua visualizao.
Com o prometheus-dotnet voc tambm pode criar suas prprias mtricas, em um prximo tutorial demonstrarei como pode ser feito!
Original Link: https://dev.to/beatriz813/obsevabilidade-em-apis-asp-net-core-5cil
Dev To
An online community for sharing and discovering great ideas, having debates, and making friendsMore About this Source Visit Dev To