Your Web News in One Place

Help Webnuz

Referal links:

Sign up for GreenGeeks web hosting
July 27, 2021 01:41 am GMT

Observabilidade em APIs ASP.NET core

Ferramentas utilizadas:

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.

image

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:

image

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.

image

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).

exemplo de mtricas

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

Share this article:    Share on Facebook
View Full Article

Dev To

An online community for sharing and discovering great ideas, having debates, and making friends

More About this Source Visit Dev To