<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marcius Bezerra</title>
    <description>The latest articles on DEV Community by Marcius Bezerra (@marciusbezerra).</description>
    <link>https://dev.to/marciusbezerra</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4130859%2F3ecc9efa-d023-40f7-b9ed-600891b7e66e.jpg</url>
      <title>DEV Community: Marcius Bezerra</title>
      <link>https://dev.to/marciusbezerra</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marciusbezerra"/>
    <language>en</language>
    <item>
      <title>Observabilidade com .NET, Prometheus e Grafana: Métricas, Docker e /metrics - Parte 2</title>
      <dc:creator>Marcius Bezerra</dc:creator>
      <pubDate>Fri, 18 Sep 2026 06:20:31 +0000</pubDate>
      <link>https://dev.to/marciusbezerra/observabilidade-com-net-prometheus-e-grafana-metricas-docker-e-metrics-parte-2-24od</link>
      <guid>https://dev.to/marciusbezerra/observabilidade-com-net-prometheus-e-grafana-metricas-docker-e-metrics-parte-2-24od</guid>
      <description>&lt;p&gt;Crie counters e histograms em uma Minimal API, consulte métricas no Prometheus e configure dashboards do Grafana com serviços executados via Docker Compose. Aprenda a implementar observabilidade em uma aplicação ASP.NET Core utilizando Prometheus, Grafana e Docker Compose.&lt;/p&gt;

&lt;p&gt;Nesta etapa prática, são criadas métricas personalizadas com o pacote prometheus-net.AspNetCore. A aplicação disponibiliza os dados no endpoint /metrics, enquanto o Prometheus realiza o scrape periódico e fornece as séries temporais para consultas e visualizações no Grafana.&lt;/p&gt;

&lt;p&gt;O tutorial demonstra como:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Criar uma métrica do tipo Counter com CreateCounter;&lt;/li&gt;
&lt;li&gt;Incrementar valores utilizando Inc;&lt;/li&gt;
&lt;li&gt;Medir a duração de operações com Histogram e CreateHistogram;&lt;/li&gt;
&lt;li&gt;Controlar o timer com NewTimer e o descarte automático do using;&lt;/li&gt;
&lt;li&gt;Criar um endpoint em uma Minimal API para disparar as métricas;&lt;/li&gt;
&lt;li&gt;Executar a aplicação com dotnet watch;&lt;/li&gt;
&lt;li&gt;Inspecionar manualmente o endpoint /metrics;&lt;/li&gt;
&lt;li&gt;Interpretar séries de histogramas com os sufixos _sum, _count e buckets;&lt;/li&gt;
&lt;li&gt;Consultar métricas pela interface do Prometheus;&lt;/li&gt;
&lt;li&gt;Verificar o estado do scrape em Status - Targets;&lt;/li&gt;
&lt;li&gt;Entender o intervalo entre coleta e atualização das métricas;&lt;/li&gt;
&lt;li&gt;Configurar o Prometheus como Data Source do Grafana;&lt;/li&gt;
&lt;li&gt;Utilizar o nome do serviço do Docker Compose em vez de localhost;&lt;/li&gt;
&lt;li&gt;Criar painéis e executar consultas PromQL;&lt;/li&gt;
&lt;li&gt;Escolher visualizações adequadas para counters e métricas de duração;&lt;/li&gt;
&lt;li&gt;Salvar, editar, duplicar e organizar dashboards;&lt;/li&gt;
&lt;li&gt;Importar dashboards prontos do Grafana Labs por ID.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;O conteúdo é especialmente útil para observabilidade de APIs, microsserviços, aplicações distribuídas e sistemas ASP.NET Core que precisam acompanhar volume de requisições, duração de operações e evolução das métricas ao longo do tempo.&lt;/p&gt;

&lt;h1&gt;
  
  
  Índice de capítulos
&lt;/h1&gt;

&lt;p&gt;00:00:00 Introdução e revisão da stack de observabilidade&lt;br&gt;
00:03:34 Métricas personalizadas no Prometheus&lt;br&gt;
00:05:13 Criando uma métrica Prometheus Counter no Program.cs&lt;br&gt;
00:07:00 Criando um Histogram no Prometheus para duração de requisições&lt;br&gt;
00:08:21 Endpoint /update, incremento e timer&lt;br&gt;
00:10:38 Executando com dotnet watch e acessando /metrics&lt;br&gt;
00:12:02 Analisando _sum, _count e buckets do Histogram no Prometheus&lt;br&gt;
00:14:16 Consultando métricas na interface do Prometheus&lt;br&gt;
00:16:57 Visualização Graph e intervalo de atualização (Prometheus)&lt;br&gt;
00:18:05 Verificando o scrape em Status - Targets (Prometheus)&lt;br&gt;
00:18:44 Configurando o Prometheus como Data Source no Grafana&lt;br&gt;
00:20:03 Conectando Grafana e Prometheus pela rede Docker&lt;br&gt;
00:22:06 Criando um dashboard no Grafana&lt;br&gt;
00:23:10 Selecionando métricas e executando queries&lt;br&gt;
00:24:08 Consultas PromQL e cálculo de rate no Grafana&lt;br&gt;
00:25:29 Ajustando visualizações e salvando o dashboard no Grafana&lt;br&gt;
00:26:07 Criando uma segunda visualização no Grafana&lt;br&gt;
00:27:28 Editando, duplicando e nomeando painéis no Grafana&lt;br&gt;
00:28:16 Procurando dashboards Grafana para ASP.NET Core&lt;br&gt;
00:29:34 Importando dashboards do Grafana Labs por ID&lt;br&gt;
00:30:19 Avaliando a compatibilidade dos dashboards&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/uG6YAjLFucQ" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  links:
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Prometheus
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://prometheus.io/" rel="noopener noreferrer"&gt;https://prometheus.io/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CNCF
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.cncf.io/" rel="noopener noreferrer"&gt;https://www.cncf.io/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CNCF / Prometheus
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.cncf.io/projects/prometheus/" rel="noopener noreferrer"&gt;https://www.cncf.io/projects/prometheus/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Grafana
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://grafana.com/" rel="noopener noreferrer"&gt;https://grafana.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  .Net Install Script
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script&lt;/a&gt;&lt;/p&gt;

</description>
      <category>netcore</category>
      <category>aspnetcore</category>
      <category>csharp</category>
      <category>docker</category>
    </item>
    <item>
      <title>Observabilidade com .NET, Prometheus e Grafana: Métricas, Docker e /metrics</title>
      <dc:creator>Marcius Bezerra</dc:creator>
      <pubDate>Fri, 18 Sep 2026 06:20:22 +0000</pubDate>
      <link>https://dev.to/marciusbezerra/observabilidade-com-net-prometheus-e-grafana-metricas-docker-e-metrics-4f1f</link>
      <guid>https://dev.to/marciusbezerra/observabilidade-com-net-prometheus-e-grafana-metricas-docker-e-metrics-4f1f</guid>
      <description>&lt;p&gt;Observabilidade com .NET, Prometheus e Grafana: Métricas, Docker e /metrics&lt;/p&gt;

&lt;p&gt;Configure uma Minimal API ASP.NET Core com Prometheus, Docker Compose e Grafana para expor e coletar métricas HTTP.&lt;/p&gt;

&lt;h1&gt;
  
  
  Descrição
&lt;/h1&gt;

&lt;p&gt;Neste tutorial prático, você aprenderá os fundamentos de observabilidade com .NET, utilizando Prometheus para coleta de métricas e Grafana para visualização por meio de dashboards.&lt;/p&gt;

&lt;p&gt;O projeto utiliza uma Minimal API em ASP.NET Core, configurada para expor o endpoint /metrics com a biblioteca prometheus-net.AspNetCore. A partir desse endpoint, o Prometheus realiza o processo de scraping (pull model) em intervalos configuráveis, armazenando métricas em séries temporais.&lt;/p&gt;

&lt;p&gt;Também é criado um ambiente local reproduzível com Docker Compose, contendo os serviços do Prometheus e do Grafana. Você verá como configurar o arquivo prometheus.yml, integrar containers ao host usando host.docker.internal, publicar portas e validar o acesso à interface do Grafana.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conteúdos abordados
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Conceitos iniciais de observabilidade, métricas, logs e traces&lt;/li&gt;
&lt;li&gt;Prometheus e métricas baseadas em séries temporais&lt;/li&gt;
&lt;li&gt;PromQL e o modelo de coleta pull/scrape&lt;/li&gt;
&lt;li&gt;Grafana como camada de visualização de dados&lt;/li&gt;
&lt;li&gt;Ecossistema Prometheus, Grafana, Loki e Tempo&lt;/li&gt;
&lt;li&gt;Criação de Minimal API com .NET 10 e ASP.NET Core&lt;/li&gt;
&lt;li&gt;Endpoint HTTP /metrics&lt;/li&gt;
&lt;li&gt;Instalação do pacote prometheus-net.AspNetCore&lt;/li&gt;
&lt;li&gt;Configuração de scrape_interval e scrape_configs&lt;/li&gt;
&lt;li&gt;Comunicação entre Docker e aplicação executada no host&lt;/li&gt;
&lt;li&gt;Criação do docker-compose.yml&lt;/li&gt;
&lt;li&gt;Execução e inspeção de containers com Docker&lt;/li&gt;
&lt;li&gt;Configuração inicial e acesso ao Grafana&lt;/li&gt;
&lt;li&gt;Coleta automática de métricas HTTP, CPU, memória e requisições&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Este é o primeiro passo para instrumentar aplicações .NET e preparar uma stack de observabilidade. Na continuação, serão abordadas métricas customizadas, consultas no Prometheus e a criação de dashboards no Grafana.&lt;/p&gt;

&lt;h1&gt;
  
  
  Índice de capítulos
&lt;/h1&gt;

&lt;p&gt;00:00:00 O que é Prometheus e métricas de séries temporais&lt;br&gt;
00:03:40 Site do Prometheus, CNCF e PromQL&lt;br&gt;
00:05:31 O que é Grafana e fontes de dados suportadas&lt;br&gt;
00:07:48 Ecossistema de observabilidade: Prometheus, Loki, Tempo e Grafana&lt;br&gt;
00:08:57 Como o Prometheus funciona: pull model, scrape e endpoint /metrics&lt;br&gt;
00:10:48 Expondo métricas em aplicações web .NET&lt;br&gt;
00:12:14 Preparação do ambiente e verificação do SDK .NET&lt;br&gt;
00:15:07 Criando uma Minimal API ASP.NET Core com dotnet new web&lt;br&gt;
00:19:00 Abrindo e conhecendo a estrutura do projeto no VS Code&lt;br&gt;
00:24:57 Instalando o pacote prometheus-net.AspNetCore&lt;br&gt;
00:29:32 Configurando o arquivo prometheus.yml&lt;br&gt;
00:32:54 Acesso ao host a partir do Docker com host.docker.internal&lt;br&gt;
00:34:29 Criando o docker-compose.yml para Prometheus e Grafana&lt;br&gt;
00:37:58 Verificando containers e possíveis conflitos de portas&lt;br&gt;
00:40:11 Subindo os serviços com Docker Compose&lt;br&gt;
00:42:07 Acessando e validando o Grafana&lt;br&gt;
00:43:25 Configurando UseMetricServer na Minimal API&lt;br&gt;
00:45:17 Validando o endpoint /metrics&lt;br&gt;
00:46:17 Habilitando métricas HTTP com UseHttpMetrics&lt;/p&gt;

&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/lM1-wvsqa80" width="710" height="399"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;h1&gt;
  
  
  links:
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Prometheus
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://prometheus.io/" rel="noopener noreferrer"&gt;https://prometheus.io/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CNCF
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.cncf.io/" rel="noopener noreferrer"&gt;https://www.cncf.io/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  CNCF / Prometheus
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.cncf.io/projects/prometheus/" rel="noopener noreferrer"&gt;https://www.cncf.io/projects/prometheus/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Grafana
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://grafana.com/" rel="noopener noreferrer"&gt;https://grafana.com/&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  .Net Install Script
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script&lt;/a&gt;&lt;/p&gt;

</description>
      <category>netcore</category>
      <category>csharp</category>
      <category>docker</category>
      <category>grafana</category>
    </item>
  </channel>
</rss>
