<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Dose de Telemetria]]></title><description><![CDATA[Dose de Telemetria]]></description><link>https://blog.dosedetelemetria.com</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1742628326866/f9709cf7-3c0c-4af9-a6c2-f05a2f8a181c.png</url><title>Dose de Telemetria</title><link>https://blog.dosedetelemetria.com</link></image><generator>RSS for Node</generator><lastBuildDate>Sun, 10 May 2026 20:47:08 GMT</lastBuildDate><atom:link href="https://blog.dosedetelemetria.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Observabilidade == APM?]]></title><description><![CDATA[Recentemente, um termo novo começou a circular no mundo da tecnologia: observabilidade. Como acontece com muitos conceitos emergentes, este se baseia em conhecimentos acumulados ao longo das décadas. No entanto, não é raro que novos conceitos sejam c...]]></description><link>https://blog.dosedetelemetria.com/observabilidade-apm</link><guid isPermaLink="true">https://blog.dosedetelemetria.com/observabilidade-apm</guid><category><![CDATA[apm]]></category><category><![CDATA[observabilidade]]></category><category><![CDATA[monitoramento]]></category><dc:creator><![CDATA[Juraci Paixão Kröhling]]></dc:creator><pubDate>Sun, 28 Jan 2024 23:00:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1705479339947/0dfe6ff6-ef25-4729-b529-abf513f607bd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Recentemente, um termo novo começou a circular no mundo da tecnologia: observabilidade. Como acontece com muitos conceitos emergentes, este se baseia em conhecimentos acumulados ao longo das décadas. No entanto, não é raro que novos conceitos sejam confundidos com os antigos, por vezes sendo vistos apenas como uma estratégia de marketing. Neste contexto, algumas empresas começaram a substituir termos em seus materiais de marketing, adaptando-se a essa nova tendência sem realmente alterar seus produtos.</p>
<p>É essencial entender, contudo, que observabilidade difere significativamente do conceito de "monitoramento", conforme já discuti em algumas <em>lives</em> e artigos anteriores no blog:</p>
<p><strong><em>💡 Monitoramento é querer saber as respostas para perguntas específicas, observabilidade é querer saber as respostas para perguntas que ainda não foram feitas.</em></strong></p>
<p>Em suma, enquanto o monitoramento se preocupa em verificar o estado atual de elementos como memória ou filas em uma aplicação específica, a observabilidade permite teorizar sobre o comportamento da aplicação e usar dados de telemetria para validar ou refutar essas teorias. Questões como: "Será que a lentidão está afetando somente usuários em São Paulo ou é um problema geral? Será que impacta apenas clientes VIP ou está relacionado a um método de pagamento específico?" são exemplos do escopo da observabilidade.</p>
<h2 id="heading-o-papel-do-apm-nessa-discussao"><strong>O Papel do APM Nessa Discussão</strong></h2>
<p>Recentemente, deparei-me com um post em uma rede social que me fez lembrar do equívoco comum de considerar observabilidade e APM (Application Performance Management) como sinônimos:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705479426107/f8759745-f04b-4636-b30b-0901d131535c.png" alt="“Eu tenho trabalhado com observabilidade (anteriormente conhecida como APM) por alguns anos...”" class="image--center mx-auto" /></p>
<p>A postagem dizia: <em>“Eu tenho trabalhado com observabilidade (anteriormente conhecida como APM) por alguns anos...”</em></p>
<p>Para deixar claro: eu não conheço essa pessoa e não conheço a solução que ela vende, e respeito muito todas as pessoas que trabalham nessa empresa e são atuantes no projeto OpenTelemetry.</p>
<p>No entanto, tenho que discordar:</p>
<p><strong><em>💡 Observabilidade não é o que antes era conhecido como APM</em></strong></p>
<p>A observabilidade mantém-se como a capacidade de explorar dados de telemetria, formulando e respondendo perguntas. Já o APM, por outro lado, oferece visualizações e insights específicos para questões comuns, como identificar os endpoints mais lentos ou as queries SQL que mais impactam o desempenho.</p>
<p>O APM é extremamente útil, mas equiparar observabilidade a APM é um equívoco que pode ser prejudicial tanto para quem extrai valor do APM quanto para quem busca compreender a observabilidade em sua plenitude.</p>
]]></content:encoded></item><item><title><![CDATA[Seu maior custo de telemetria é com logs. Mas não precisa ser assim.]]></title><description><![CDATA[Um dos maiores desafios e custos associados à observabilidade de um sistema é a necessidade de transmitir e armazenar registros detalhados de eventos (logs). Apesar dos custos, esses registros são essenciais para o monitoramento e solução de problema...]]></description><link>https://blog.dosedetelemetria.com/seu-maior-custo-de-telemetria-e-com-logs-mas-nao-precisa-ser-assim</link><guid isPermaLink="true">https://blog.dosedetelemetria.com/seu-maior-custo-de-telemetria-e-com-logs-mas-nao-precisa-ser-assim</guid><category><![CDATA[métricas]]></category><category><![CDATA[observabilidade]]></category><category><![CDATA[Logs]]></category><category><![CDATA[OpenTelemetry]]></category><category><![CDATA[opentelemetry collector]]></category><dc:creator><![CDATA[Juraci Paixão Kröhling]]></dc:creator><pubDate>Sun, 21 Jan 2024 23:00:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1705406190671/e2f488de-ea63-42ff-a93c-30a8d0628071.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Um dos maiores desafios e custos associados à observabilidade de um sistema é a necessidade de transmitir e armazenar registros detalhados de eventos (logs). Apesar dos custos, esses registros são essenciais para o monitoramento e solução de problemas. Geralmente, cada registro é armazenado localmente em um arquivo de texto simples e enviado para um local central para armazenamento e pesquisa.</p>
<p>Neste sistema de armazenamento de logs, eles geralmente passam por compressão para reduzir os custos de armazenament, e indexação para facilitar a busca e recuperação posterior. Mesmo depois de tudo isso, muitos desses registros podem nunca mais serem vistos ou consultados novamente. Com tudo isso em mente, não preciso ser um mágico ou vidente para adivinhar que o maior custo que você tem em sua solução de observabilidade está relacionado aos logs.</p>
<p><strong><em>💡 E se eu te dissesse que você pode reduzir boa parte de seus custos de observabilidade utilizando uma estratégia muito simples?</em></strong></p>
<p>Ao analisarmos nossos registros de logs, fica claro que o papel mais importante da maioria deles é informar quando um determinado evento ocorreu. Uma vez armazenados, agregamos essas informações em tempo de consulta para saber quantas vezes o evento aconteceu em um determinado período de tempo. E é exatamente para isso que temos outro sinal: métricas. Elas são armazenadas geralmente em um banco de dados temporal, onde o nome do evento é armazenado apenas uma vez, e os diferentes valores em cada intervalo de tempo são armazenados com um alto grau de compressão. O resultado é que cada ocorrência de um evento ocupa, estatisticamente, menos de 1.5 bytes, enquanto o registro do evento de log armazenará tanto a representação em texto puro quanto os índices utilizados para busca, resultando em um custo de armazenamento muito superior.</p>
<p><strong><em>💡Cada ocorrência de um evento ocupa, estatisticamente, menos de 1.5 bytes como métrica. Ao calcular o custo de uma solução de logs, usa-se 200 bytes para cada ocorrência como ponto de partida.</em></strong></p>
<p>Não estou dizendo que TODOS os eventos devem ser migrados de logs para métricas, mas muitos dos eventos que armazenamos hoje podem sim ser convertidos.</p>
<h2 id="heading-como-fazer-a-conversao">Como fazer a conversão</h2>
<p>A melhor forma de se fazer a conversão é ao alterar a instrumentação no seu próprio código. Por exemplo, onde antes víamos algo assim…</p>
<pre><code class="lang-go">log.Info(<span class="hljs-string">"chamada http recebida para / , status é 200"</span>)
</code></pre>
<p>… agora temos algo assim ao usar a API de métricas do OpenTelemetry:</p>
<pre><code class="lang-go"><span class="hljs-comment">// em um código de inicialização:</span>
contadorHTTP, err := meter.Int64Counter(
        <span class="hljs-string">"http.calls"</span>,
        metric.WithDescription(<span class="hljs-string">"Quantidade de vezes que recebemos uma chamada HTTP."</span>),
    )

<span class="hljs-comment">// no nosso handler HTTP, adicionamos 1 ao contador</span>
contadorHTTP.Add(r.Context(), <span class="hljs-number">1</span>, metric.WithAttributes(semconv.HTTPStatusCode(<span class="hljs-number">200</span>))))
</code></pre>
<p>A segunda forma de se fazer isso é utilizar o OpenTelemetry Collector para converter de um sinal para o outro. Por exemplo, pode-se utilizar o <code>count connector</code> juntamente com um filtro, para que apenas eventos pré-selecionados sejam convertidos em métricas. Todos os outros eventos continuam como logs:</p>
<pre><code class="lang-yaml"><span class="hljs-attr">receivers:</span>
  <span class="hljs-attr">otlp:</span>
    <span class="hljs-attr">protocols:</span>
      <span class="hljs-attr">grpc:</span>

<span class="hljs-attr">processors:</span>
  <span class="hljs-attr">filter/remove-common-events:</span>
    <span class="hljs-attr">logs:</span>
      <span class="hljs-attr">log_record:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">'IsMatch(body, ".*http call made to route.*")'</span>

  <span class="hljs-attr">filter/retain-common-events:</span>
    <span class="hljs-attr">logs:</span>
      <span class="hljs-attr">log_record:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">'not IsMatch(body, ".*http call made to route.*")'</span>

<span class="hljs-attr">exporters:</span>
  <span class="hljs-attr">logging/metrics:</span>
    <span class="hljs-attr">verbosity:</span> <span class="hljs-string">detailed</span>
  <span class="hljs-attr">logging/logs:</span>

<span class="hljs-attr">connectors:</span>
  <span class="hljs-attr">count:</span>
  <span class="hljs-attr">forward:</span>

<span class="hljs-attr">service:</span>
  <span class="hljs-attr">pipelines:</span>
    <span class="hljs-comment"># a pipeline principal, direcionando os dados para as outras pipelines de logs</span>
    <span class="hljs-attr">logs:</span>
      <span class="hljs-attr">receivers:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">otlp</span>
      <span class="hljs-attr">exporters:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">forward</span>

    <span class="hljs-comment"># filtra os eventos comuns, mantendo o restante</span>
    <span class="hljs-attr">logs/everything-else:</span>
      <span class="hljs-attr">receivers:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">forward</span>
      <span class="hljs-attr">processors:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">filter/remove-common-events</span>
      <span class="hljs-attr">exporters:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">logging/logs</span>

    <span class="hljs-comment"># mantem apenas os eventos comuns</span>
    <span class="hljs-attr">logs/common-events:</span>
      <span class="hljs-attr">receivers:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">forward</span>
      <span class="hljs-attr">processors:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">filter/retain-common-events</span>
      <span class="hljs-attr">exporters:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">count</span>

    <span class="hljs-comment"># converte logs em metricas</span>
    <span class="hljs-attr">metrics/count-common-events:</span>
      <span class="hljs-attr">receivers:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">count</span>
      <span class="hljs-attr">exporters:</span>
        <span class="hljs-bullet">-</span> <span class="hljs-string">logging/metrics</span>
</code></pre>
<p>Com isso, se detectarmos que o evento com o texto “http call made to route” é muito comum em nosso ambiente, podemos convertê-lo em métricas diretamente no Collector. Para testar, podemos utilizar o <code>telemetrygen</code> para gerar dois tipos de registros de logs, um que vai ser convertido pra métricas, e outro que não:</p>
<pre><code class="lang-bash">telemetrygen logs --otlp-insecure --logs 10 --body <span class="hljs-string">"http call made to route '/', status=200"</span>
telemetrygen logs --otlp-insecure --logs 10 --body <span class="hljs-string">"some other message"</span>
</code></pre>
<p>Entre um comando e outro, veja as métricas internas do nosso Collector, pra ter certeza de que logs foram convertidos para métricas e de logs que continuaram sendo logs. Dê uma olhada nas métricas <code>otelcol_exporter_sent_metric_points</code> , <code>otelcol_exporter_sent_log_records</code> e <code>otelcol_receiver_accepted_log_records</code>:</p>
<ul>
<li><p>ao rodar o primeiro comando, o Collector deve ter aceito 10 registros de log, exportado 10 pontos de dados de métricas, e nenhum log</p>
</li>
<li><p>ao rodar o segundo comando, o Collector deve ter aceito 20 registros de log, exportado 10 pontos de dados de métricas, e 10 registros de log</p>
</li>
</ul>
<h2 id="heading-conclusao">Conclusão</h2>
<p>Muito provavelmente você tem um sistema que emite logs, mas não emite métricas. Por este motivo, você acaba usando ferramentas de log quando seu interesse está na verdade em métricas. Porém, os custos acabam sendo muito mais altos do que se o sinal adequado fosse utilizado. A conversão de logs em métricas não só otimiza os custos de armazenamento e transmissão, mas também pode melhorar a eficiência na análise de dados e na detecção de problemas.</p>
]]></content:encoded></item><item><title><![CDATA[Navegando pela Carreira em Engenharia de Observabilidade]]></title><description><![CDATA[A observabilidade não é apenas uma função técnica dentro da engenharia de software, mas também um campo em expansão que desempenha um papel crucial na operação e no sucesso dos sistemas modernos. Este guia aborda os aspectos essenciais da carreira em...]]></description><link>https://blog.dosedetelemetria.com/navegando-pela-carreira-em-engenharia-de-observabilidade</link><guid isPermaLink="true">https://blog.dosedetelemetria.com/navegando-pela-carreira-em-engenharia-de-observabilidade</guid><category><![CDATA[engenharia de observabilidade]]></category><category><![CDATA[carreira]]></category><dc:creator><![CDATA[Juraci Paixão Kröhling]]></dc:creator><pubDate>Sun, 14 Jan 2024 23:00:09 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1704448331091/562cbec7-9fdd-4b9e-acda-6eacabd78354.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A observabilidade não é apenas uma função técnica dentro da engenharia de software, mas também um campo em expansão que desempenha um papel crucial na operação e no sucesso dos sistemas modernos. Este guia aborda os aspectos essenciais da carreira em observabilidade, explorando desde ferramentas e técnicas até o impacto cultural desta disciplina nas organizações.</p>
<h2 id="heading-fundamentos-de-observabilidade"><strong>Fundamentos de Observabilidade</strong></h2>
<p>A observabilidade é a arte e a ciência de tornar sistemas complexos transparentes e compreensíveis. Vai além do monitoramento tradicional, envolvendo a análise profunda do comportamento e da interação de sistemas de software em diferentes cenários. Profissionais dessa área têm a responsabilidade de antecipar problemas antes que afetem os sistemas, garantindo estabilidade e eficiência operacional. No entanto, como é impossível prever tudo, a chave para o sucesso está na instrumentação efetiva dos serviços em operação. Isso permite compreender seu comportamento real em tempo de execução e facilita o diagnóstico durante momentos de estresse.</p>
<p>Para isso, é necessário conhecer os elementos fundamentais da observabilidade: os sinais de telemetria. Saber quais são e quando utilizá-los é essencial. Também é importante compreender as diferenças entre os sinais e como são armazenados, pois muitas decisões do dia a dia estão relacionadas a esses detalhes, como alta cardinalidade, armazenamento colunar, indexação de dados, entre outros temas que fazem parte do repertório de uma pessoa engenheira de observabilidade.</p>
<h2 id="heading-ferramentas-e-tecnologias-chave"><strong>Ferramentas e Tecnologias Chave</strong></h2>
<p>O arsenal de uma pessoa engenheira de observabilidade inclui ferramentas de métricas, rastreamento distribuído e logs. Além de conhecer ferramentas específicas utilizadas para o armazenamento desses sinais, como Prometheus, Jaeger, Loki, entre outros, é necessário também saber como esses sinais são gerados: quais bibliotecas de instrumentação podem ser utilizadas? Depois da instrumentação, temos que nos preocupar com as ferramentas de coleta e processamento, como o OpenTelemetry Collector.</p>
<p>A habilidade de implementar e otimizar essas ferramentas é crucial, permitindo a coleta, o processamento e a análise eficiente de dados de telemetria.</p>
<h2 id="heading-abordagem-analitica-e-resolucao-de-problemas"><strong>Abordagem Analítica e Resolução de Problemas</strong></h2>
<p>Profissionais de observabilidade devem possuir uma forte capacidade analítica. Além disso, é importante destacar que eles não são os principais responsáveis por operar serviços de negócios, mas desempenham um papel fundamental ao auxiliar e orientar outros profissionais da empresa, como SREs e engenheiros de software. Dessa forma, é essencial que eles saibam interpretar grandes volumes de dados e transformá-los em insights acionáveis, o que requer uma habilidade analítica apurada. Essa habilidade é vital, pois permite identificar rapidamente problemas e tomar decisões embasadas em evidências confiáveis. Portanto, a capacidade analítica é um atributo fundamental para o sucesso dos profissionais de observabilidade.</p>
<h2 id="heading-aprendizado-continuo-e-adaptacao"><strong>Aprendizado Contínuo e Adaptação</strong></h2>
<p>O campo de observabilidade ainda está em sua infância e constantemente vemos novidades surgindo. Novas ferramentas, práticas, conceitos e tecnologias estão emergindo regularmente. Para ter sucesso nessa área em constante evolução, é fundamental se manter atualizado por meio de eventos da comunidade, webinars, treinamentos e também por meio da leitura de artigos e pesquisas recentes. Além disso, é essencial estar aberto a novas ideias e experimentos, e praticar constantemente com o objetivo de aprendizado e aprimoramento contínuo. É importante também buscar oportunidades de colaboração com profissionais da área, participando de grupos de estudo e fóruns de discussão para trocar conhecimentos e experiências, como os canais <a target="_blank" href="https://t.me/OpenTelemetryBR">OpenTelemetry BR</a> e <a target="_blank" href="https://t.me/+WLdVNO5IKZszZGQy">Dose de Telemetria</a> no Telegram. Dessa forma, poderemos estar sempre preparados para os desafios e exigências cada vez maiores desse campo promissor.</p>
<h2 id="heading-impacto-cultural-e-educacao-transversal"><strong>Impacto Cultural e Educação Transversal</strong></h2>
<p>Um aspecto crucial da carreira em observabilidade é o impacto cultural dentro das organizações. Engenheiros de observabilidade desempenham um papel vital na educação de outras equipes, promovendo uma compreensão mais ampla da importância da observabilidade. Eles são os embaixadores desta disciplina, ajudando a integrar práticas de observabilidade em todos os aspectos do desenvolvimento de software e operações.</p>
<h2 id="heading-leitura-recomendada">📚 Leitura recomendada</h2>
<ul>
<li><p><a target="_blank" href="https://www.oreilly.com/library/view/distributed-systems-observability/9781492033431/">Distributed Systems Observability</a><br />  Um dos livros mais influentes na área de observabilidade, apesar de já estar um pouco defasado</p>
</li>
<li><p><a target="_blank" href="https://www.oreilly.com/library/view/distributed-tracing-in/9781492056621/">Distributed Tracing in Practice</a><br />  Poderia ser mais “in practice”, mas ainda assim é um livro interessante para se entender rastreamento distribuído</p>
</li>
<li><p><a target="_blank" href="https://www.packtpub.com/product/cloud-native-observability-with-opentelemetry/9781801077705">Cloud-Native Observability with OpenTelemetry | Packt</a><br />  Livro focado em OpenTelemetry escrito por um mantenedor do projeto</p>
</li>
<li><p><a target="_blank" href="https://www.oreilly.com/library/view/observability-engineering/9781492076438/">Observability Engineering</a><br />  Provavelmente o melhor livro da atualidade nessa área, mas é um pouco dogmático demais em alguns aspectos. Leia com cuidado, filtre os interesses comerciais dos autores, e adapte os conceitos para suas necessidades.</p>
</li>
</ul>
<h2 id="heading-video-original">Vídeo original</h2>
<p>Falei sobre este tópico em um vídeo disponível no canal do <a target="_blank" href="https://www.youtube.com/@DoseDeTelemetria">Dose de Telemetria</a> no YouTube. Você pode assistir ao vídeo <a target="_blank" href="https://www.youtube.com/watch?v=u4KSj6dsH_g">aqui</a>.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=u4KSj6dsH_g">https://www.youtube.com/watch?v=u4KSj6dsH_g</a></div>
]]></content:encoded></item><item><title><![CDATA[Telemetria, Monitoramento e Observabilidade]]></title><description><![CDATA[A telemetria, frequentemente esquecida nas discussões sobre tecnologia, é um elemento crucial no entendimento e aprimoramento do desempenho das aplicações. Ela refere-se aos dados gerados por uma aplicação que não são diretamente ligados ao seu aspec...]]></description><link>https://blog.dosedetelemetria.com/telemetria-monitoramento-e-observabilidade</link><guid isPermaLink="true">https://blog.dosedetelemetria.com/telemetria-monitoramento-e-observabilidade</guid><category><![CDATA[telemetria]]></category><category><![CDATA[monitoramento]]></category><category><![CDATA[observabilidade]]></category><dc:creator><![CDATA[Juraci Paixão Kröhling]]></dc:creator><pubDate>Thu, 04 Jan 2024 21:39:41 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1704404306565/d20aa955-d1c4-4326-be34-47991d31a210.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A telemetria, frequentemente esquecida nas discussões sobre tecnologia, é um elemento crucial no entendimento e aprimoramento do desempenho das aplicações. Ela refere-se aos dados gerados por uma aplicação que não são diretamente ligados ao seu aspecto comercial, mas que são essenciais para entender o comportamento do software.</p>
<p>Uma excelente maneira de compreender o que é telemetria é através da analogia com a condução de um carro. Quando dirigimos, uma série de dados como velocidade, aceleração, e desaceleração são constantemente registrados. Esses dados, semelhantes aos gerados por uma aplicação, fornecem insights sobre o desempenho, como a velocidade de processamento ou o número de requisições recebidas por minuto.</p>
<h2 id="heading-os-tipos-principais-de-dados-de-telemetria">Os <strong>Tipos Principais de Dados de Telemetria</strong></h2>
<p><strong>Logs</strong>: Esses são registros de eventos específicos que ocorrem durante a operação da aplicação. Eles são cruciais para o processo de depuração e fornecem um relato detalhado do que aconteceu e quando.</p>
<p><strong>Métricas</strong>: Representam um resumo agregado de como a aplicação está funcionando. Por exemplo, elas podem quantificar o número atual de visitantes de um site. Métricas podem ser representadas de várias formas, incluindo contadores que só aumentam ou valores que variam.</p>
<p><strong>Rastros</strong>: Estes são conjuntos de informações que ajudam a entender o percurso de uma requisição específica através de vários processos ou microserviços. Eles são fundamentais para compreender como as diferentes partes de uma aplicação interagem.</p>
<h3 id="heading-outros-sinais">Outros Sinais</h3>
<p>Existem também outros tipos de dados de telemetria que são importantes para entender o desempenho e o comportamento de uma aplicação, entre eles:</p>
<p><strong>Eventos</strong>: São registros de ocorrências significativas que ocorrem durante a execução da aplicação. Eles podem ser utilizados para identificar eventos específicos e analisar seu impacto no sistema.</p>
<p><strong>Perfis</strong>: Permitem o monitoramento e a análise do desempenho de uma aplicação ao longo do tempo. Eles fornecem informações detalhadas sobre a utilização de memória, tempo de execução de funções e outros aspectos relacionados ao desempenho.</p>
<p><strong>Erros (Stack Traces)</strong>: São registros que capturam informações sobre exceções e erros que ocorrem durante a execução da aplicação. Esses registros são essenciais para identificar e corrigir problemas no sistema.</p>
<p>Esses tipos adicionais de dados de telemetria complementam os logs, métricas e rastros mencionados anteriormente, fornecendo uma visão mais completa e detalhada do desempenho e do estado da aplicação.</p>
<h2 id="heading-monitoramento-vs-observabilidade"><strong>Monitoramento vs. Observabilidade</strong></h2>
<h3 id="heading-monitoramento">Monitoramento</h3>
<p>O monitoramento diz respeito a ter respostas para perguntas conhecidas sobre uma aplicação. Por exemplo, receber um alerta quando a CPU de um servidor atinge 90% de sua capacidade. É uma forma proativa de estar ciente do estado atual do sistema.</p>
<h3 id="heading-observabilidade">Observabilidade</h3>
<p>Por outro lado, a observabilidade se refere à capacidade de entender o que está acontecendo em um sistema com base nos dados coletados, incluindo a telemetria. Ela é crucial para diagnosticar problemas não previstos durante o desenvolvimento.</p>
<h2 id="heading-conclusao"><strong>Conclusão</strong></h2>
<p>Em resumo, a telemetria é a matéria-prima para o monitoramento e a observabilidade em tecnologia da informação. Ela fornece os dados necessários para compreender profundamente o funcionamento de uma aplicação, permitindo a otimização e a manutenção eficiente do sistema.</p>
<h2 id="heading-video-original">Vídeo original</h2>
<p>Falei sobre este tópico em um vídeo disponível no canal do <a target="_blank" href="https://www.youtube.com/@DoseDeTelemetria">Dose de Telemetria</a> no YouTube. Você pode assistir ao vídeo <a target="_blank" href="https://youtu.be/x-FKKFCMbjc">aqui</a>.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=x-FKKFCMbjc">https://www.youtube.com/watch?v=x-FKKFCMbjc</a></div>
]]></content:encoded></item><item><title><![CDATA[O Dilema da Telemetria]]></title><description><![CDATA[Dependemos de dados de telemetria para compreender o estado de nossas aplicações, nos ajudando no diagnóstico de eventuais problemas. Porém, como nada é de graça, acabamos pagando por cada novo dado de telemetria gerado: cada métrica, cada trecho de ...]]></description><link>https://blog.dosedetelemetria.com/o-dilema-da-telemetria</link><guid isPermaLink="true">https://blog.dosedetelemetria.com/o-dilema-da-telemetria</guid><category><![CDATA[observabilidade]]></category><category><![CDATA[faq]]></category><category><![CDATA[telemetria]]></category><dc:creator><![CDATA[Juraci Paixão Kröhling]]></dc:creator><pubDate>Thu, 04 Jan 2024 21:13:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1704402660481/839ab4a8-44d0-46cf-aa7b-c4207735106e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Dependemos de dados de telemetria para compreender o estado de nossas aplicações, nos ajudando no diagnóstico de eventuais problemas. Porém, como nada é de graça, acabamos pagando por cada novo dado de telemetria gerado: cada métrica, cada trecho de um rastro, cada registro de log nos traz um custo, tanto de processamento quanto de memória e armazenamento. Se não tomarmos cuidado, podemos acabar sobrecarregando ainda mais um sistema que talvez já esteja sobrecarregado.</p>
<p>Em alguns casos, isso pode até precipitar falhas que de outra forma poderiam ter sido evitadas: já tive uma experiência no passado em que a escrita síncrona de logs estava causando uma degradação significativa de performance em um sistema de alta concorrência.</p>
<h2 id="heading-metricas"><strong>Métricas</strong></h2>
<p>Em contraste com logs ou rastros, as métricas são geralmente menos invasivas. Elas são predefinidas e agregadas, o que minimiza o impacto no desempenho do sistema. No entanto, problemas podem surgir durante a atualização concorrente dos contadores ou na transmissão desses dados: diferentes bibliotecas utilizam diferentes técnicas que podem não ser as mais corretas para seu caso de uso.</p>
<p>Um dos maiores desafios ao utilizar sistemas do tipo pull, como o Prometheus, é encontrar um equilíbrio adequado entre a frequência das requisições feitas pelo servidor ao cliente que está expondo as métricas e a quantidade adequada de métricas que o cliente deve expor. É importante garantir que o servidor não faça requisições tão frequentes que sobrecarreguem o cliente, nem que o cliente exponha um número excessivo de métricas que possa impactar negativamente o desempenho do sistema.</p>
<p>Já em sistemas push, como o OTLP (OpenTelemetry Protocol), é importante considerar que vários clientes podem enviar dados para o mesmo servidor simultaneamente. Portanto, o servidor precisa ter capacidade para receber todos esses dados.</p>
<h2 id="heading-rastros"><strong>Rastros</strong></h2>
<p>Os trechos (spans) em rastros (traces) representam um desafio maior. Por serem sinais de alta resolução, sem agregação, eles utilizam armazenamento de dados em memória e podem aumentar a carga no sistema. A gestão eficaz desses rastros é crucial para minimizar seu impacto. Estratégias como amostragem (sampling) ou envio de dados em lotes (batching) podem ajudar nessa tarefa. Mas ainda assim, quanto mais trechos são utilizados em um determinado serviço, maior o número de dados que são mantidos em memória: trechos apenas são enviados para o destino quando são finalizados, o que geralmente acontece somente no final da requisição.</p>
<h2 id="heading-logs">Logs</h2>
<p>Já quando falamos de logs, nossa maior preocupação é com I/O: conseguimos escrever todos os registros na nossa saída de log? Hoje em dia, a prática comum é de escrever em stdout e stderr, mas essas saídas têm performance boa o suficiente para o volume de registros que você está esperando? Aqui, a saída mais sensata é converter eventos que iriam para o registro de logs em métricas, quando podem ser agregados, ou em trechos de um rastro, quando o evento pertence a uma transação específica.</p>
<h2 id="heading-cuidado-com-o-desperdicio">Cuidado com o Desperdício</h2>
<p>Um aspecto crítico é o consumo de rede e o armazenamento de dados de telemetria. Na minha experiência, muitos dados coletados acabam não sendo utilizados, o que resulta em desperdício de recursos. Portanto, é importante não apenas considerar como a telemetria é gerada e coletada, mas também como ela é usada. Se os dados de rastreamento distribuído são apenas armazenados e raramente lidos, pode ser interessante aplicar uma estratégia mais forte de amostragem, para que menos dados sejam enviados e armazenados. Além disso, reduzir o número de dimensões de uma métrica pode diminuir significativamente o número de séries temporais no banco de dados. E converter logs em métricas certamente vai reduzir muito seus custos de rede e armazenamento!</p>
<h2 id="heading-conclusao"><strong>Conclusão</strong></h2>
<p>A telemetria é essencial para diagnóstico e otimização de sistemas, mas seu uso deve ser cuidadosamente gerenciado para evitar impactos negativos adicionais, especialmente em sistemas críticos e de alta concorrência.</p>
<h2 id="heading-video-original">Vídeo original</h2>
<p>Falei sobre este tópico em um vídeo disponível no canal do <a target="_blank" href="https://www.youtube.com/@DoseDeTelemetria">Dose de Telemetria</a> no YouTube. Você pode assistir ao vídeo <a target="_blank" href="https://www.youtube.com/watch?v=fllOmv0fIK8">aqui</a>.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=fllOmv0fIK8">https://www.youtube.com/watch?v=fllOmv0fIK8</a></div>
]]></content:encoded></item><item><title><![CDATA[Observa Aí, Dev]]></title><description><![CDATA[No fim do ano passado, consegui acesso ao meu plano "premium" da OpenAI com o ChatGPT 4. Fiz alguns testes com DALL-E, mas o que eu queria mesmo era outra coisa, algo pensei estes dias ao ouvir o álbum novo do Gabriel O Pensador:

Você poderia escrev...]]></description><link>https://blog.dosedetelemetria.com/observa-ai-dev</link><guid isPermaLink="true">https://blog.dosedetelemetria.com/observa-ai-dev</guid><category><![CDATA[diversão]]></category><dc:creator><![CDATA[Juraci Paixão Kröhling]]></dc:creator><pubDate>Thu, 04 Jan 2024 21:05:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1704401768875/c62d7afa-3950-4e24-b470-803cadf31e10.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>No fim do ano passado, consegui acesso ao meu plano "premium" da OpenAI com o ChatGPT 4. Fiz alguns testes com DALL-E, mas o que eu queria mesmo era outra coisa, algo pensei estes dias ao ouvir o álbum novo do Gabriel O Pensador:</p>
<blockquote>
<p>Você poderia escrever uma música no estilo musical do Gabriel O Pensador, usando Observabilidade como tema central?</p>
</blockquote>
<p>Claro que não é um Gabriel O Pensador de verdade, mas juro que fiquei bem surpreso com o resultado!</p>
<h2 id="heading-observa-ai-dev">Observa Aí, Dev</h2>
<p>Ei, dev, já parou pra observar?<br />No mundo do código, tem mais pra monitorar.<br />Logs espalhados, contando a história,<br />De bugs escondidos, perdidos na memória.<br />Trace cada passo, veja a viagem,<br />De um request perdido na paisagem.<br />Microserviços, um labirinto sem fim,<br />Um trace aqui, outro ali, e chega em mim.</p>
<p>(Refrão)</p>
<p>Observa aí, no mundo virtual,<br />Cada linha de código, um sinal.<br />Métricas e logs, nossa bússola fiel,<br />No mar de código, é o nosso papel.</p>
<p>(Verso 2)</p>
<p>Monitora o sistema, olho no painel,<br />CPU, memória, tudo nele é tão fiel.<br />Latência e erros, um gráfico a subir,<br />Alarme toca, é hora de agir.<br />No mundo cloud, tudo é tão volátil,<br />Um crash aqui, acolá, algo tão sutil.<br />Mas com observabilidade, a gente vê,<br />O que está por trás do código, o que faz o sistema de pé.</p>
<p>(Refrão)</p>
<p>Observa aí, dev, na tua tela,<br />Cada alerta, uma história, uma aquarela.<br />Dashboard iluminado, dados a fluir,<br />Na arte de codar, a gente aprende a prever.</p>
<p>(Ponte)</p>
<p>Na nuvem, na terra, no código, na guerra,<br />Cada linha que escreve, uma nova era.<br />Observabilidade, nossa lanterna no escuro,<br />Ilumina o caminho, no código seguro.</p>
<p>(Refrão)</p>
<p>Então observa, amigo, não deixa passar,<br />Cada bug, cada log, um lugar para olhar.<br />No mar de informações, a gente aprende a nadar,<br />Com observabilidade, a gente aprende a jogar.</p>
<p>(Outro)</p>
<p>E aí, dev, viu como tudo se conecta?<br />Na tela, no código, na métrica perfeita.<br />Observa, melhora, e segue o caminhar,<br />No mundo do código, a gente nunca para de sonhar.</p>
]]></content:encoded></item></channel></rss>