Galera, vamos começar a aprender um pouquinho sobre como são os tipos de métricas que a gente vai acabar usando aqui durante o nosso treinamento. É importante vocês entenderem mais ou menos o conceito delas, para vocês conseguirem depois aprofundar quando o Jacques for falar com vocês mais no detalhe de cada uma dessas métricas na utilização e no hands-on. Então vamos falar um pouquinho de como funcionam essas métricas e qual o conceito de cada uma delas, tá? Então quando a gente está falando do contexto de observabilidade, a gente vai trabalhar com algumas métricas que são mais comuns para o nosso dia a dia, que sempre vão aparecer aí no seu dia a dia, tá bom? Entre elas a gente tem as contadoras, os gauges, os histogramas, os sumares, os temporais e mais ou menos esses são os cinco tipos aqui que a gente vai mais falar ao longo do nosso curso e ao longo do seu dia a dia quando a gente está falando de tipos de métrica, tá? A maior parte deles vai se encaixar nesses cinco tipos, tá? Então vamos começar a aprender mais um pouquinho como é que a gente vai usar isso no dia a dia. Então quando a gente está falando de counters, quais são esses? Quais são as métricas de contadoras? quais são esses? quais são as métricas de contadoras? contadoras, como é meio simples de entender aqui são as métricas que são de incremento de aumento de número ou seja, ou de decresc... ou você pode até falar de decréscimo de número também mas sempre numa linha de evolução tá bom? então eu posso falar que um counter é poxa, eu tive uma requisição duas requisições na minha API, três requisições, quatro requisições, cinco requisições e assim por diante. Eu estou tendo um aumento de número de requisições numa aplicação, por exemplo. Ou você pode usar como um número de usuários únicos entrando dentro de uma plataforma de e-commerce, por exemplo. A gente usa muito isso para a gente trabalhar no dia a dia. Então, muito isso pra gente trabalhar no dia a dia então eu posso falar lá que o meu DAO o número de usuários únicos na plataforma ele vai ser contabilizado com uma contadora, então eu vou ter um usuário, dois usuários, três usuários poxa, o cara entrou cinco vezes na minha plataforma em um só dia, eu vou contar como um então eu consigo fazer algumas regras pra isso, então você não vai falar o número de requisições, como eu falei no primeiro exemplo, você pode falar o número de vezes que um usuário único entrou. Então, ele pode ter feito 5 requisições, mas ele entrou uma vez só. É um tipo de jeito de você usar uma contadora. Você pode usar uma contadora também, é mais difícil, mas você quiser fazer decréscimo. Pô, eu quero falar que cada usuário que entra, eu fazer um decréscimo porque eu só posso ter até 5 mil usuários comprando e depois disso eu não tenho mais estoque, por exemplo, pode ser uma ideia também de observabilidade, que é uma contadora regressiva e tudo bem, mas a maior parte das vezes a gente vê isso acontecendo com acréscimo, tá bom? Então é básico, meio simples para vocês entenderem, mas esse é um tipo de métrica que a gente acaba usando muito no dia a dia, que são as contadoras, tá bom? Então, quando a gente está falando de, por exemplo, taxa de eventos, volume acumulado de ocorrência, como eu falei para vocês, tanto de requisições quanto de usuários, etc. Ou até erros, eu posso falar, poxa, quantos erros eu tive no dia, eu tive 5 erros, 10 erros, 15 erros e assim por diante. Você pode colocar também com percentual, tive 5% de falha e assim por diante dentro da minha contagem, depois que você fez a guarda dessa informação. Então aqui basicamente o que a gente está falando é desse tipo de situação, tá bom? Então vamos dar um exemplo prático, mais um para ficar na cabeça de vocês. Então um contador de requisições HTTP, que aumenta quando a gente recebe uma requisição vinda do servidor. Então, você pode ter ali mais de uma pessoa acessando e mais cada requisição vai bater e vai fazer uma contagem para eu saber quanto teve de consumo na minha aplicação ou na minha plataforma, por exemplo. Esse é um tipo de métrica para a gente ficar com ela na cabeça que são as contadoras. Vamos para a segunda? Os gauges. Quando a gente está falando de gauges, eles são ali métricas que podem aumentar ou diminuir. Ou seja, eu não tenho uma projeção de sempre aumentar ou de sempre diminuir. Ela pode ficar oscilando. Quando a gente está falando desse tipo de métrica, ela é muito utilizada para CPU, memória temperatura você pode colocar vários tipos de coisa que acabam impactando muito porque elas flutuam no ambiente de tecnologia ou seja imagina que na primeira métrica lá que você falou ou seja nas suas contadoras você falou que teve um aumento de significativo muita gente entrando ali no seu site um monte de requisição HTTP acontecendo. E daí, com isso, você aumentou o consumo de memória e CPU da sua aplicação. Então, você já está tendo aqui dois tipos de métrica. Eu estou com o dedo quebrado, então parece que são três, mas são dois, tá? Vou fazer até assim para facilitar. Dois tipos de métrica. O primeiro dele vai ser uma métrica contadora. E o segundo vai ser uma métrica de gauss. Nessa segunda uma métrica contadora e o segundo vai ser uma métrica de gauss nessa segunda métrica, você vai estar considerando o quanto que aumenta e o quanto que diminui daquilo, ou seja, a oscilação tá bom? Então um exemplo de uso aqui é monitorar a utilização de memória do servidor, ou o número de conexão no banco de dados, isso a gente usa bastante pra ver se você tem muita thread conectada e assim por diante, você pode usar o número de conexões no banco de dados para você também gerar alertas e assim por diante, tá bom? Quanto você vai usar isso? Muito. Essa acho que é uma das que a gente mais usa no dia a dia, porque você vai olhar tudo que está oscilando. Então, desde memória até CPU, até número de conexões em bancos de dados e assim por diante. E esse tipo de métrica normalmente vai te estartar alguns processos de subida de máquina ou de diminuição e assim por diante pode ajudar inclusive no seu FinOps, que vai ser uma outra métrica de contadora o seu FinOps está sempre crescendo dificilmente você vai ter um FinOps que diminui, você pode até ter um FinOps mais eficiente mas você nunca vai ter um crédOps que diminui. Você pode até ter um FinOps mais eficiente, mas você nunca vai ter um crédito, talvez, entrando da sua provedora cloud. Nunca vi isso acontecendo. Se acontecer com vocês, me contem, mas não é comum. Então, basicamente, a gente pode ter esses dois tipos de métrica e elas se combinam. Elas andam juntas, tá bom? Um exemplo prático, ele pode ser usado para monitorar, por exemplo, a taxa de utilização de CPU de um cluster de um servidor que pode deixar você ajustar aumentando mais máquina ou até aumentando infra mesmo para ter mais CPU para processar e assim por diante. Então aqui você consegue ter esse tipo de ação, tá bom? Vamos para os histogramas. Os histogramas ali vão ser métricas que eles vão agrupar faixas ou buckets aqui é muito importante porque eu vou dar um exemplo pra vocês quando a gente olha por exemplo a métrica que é o tempo de requisição tá bom? o tempo de requisição de uma aplicação eu posso virar e falar assim, olha eu tenho uma aplicação que responde normalmente em 500 milissegundos, tá bom? Mas essa aplicação, ela tem alguns picos, ela acaba respondendo em determinados momentos em 10 segundos. Então, eu tenho uma aplicação que a maior parte do tempo está em 500 milissegundos, tem alguns picos de 10 segundos, alguns outros ela bate 30, 70 segundos e assim por diante. Então, ela tem alguns picos ali que ela ultrapassa os limites e assim por diante então imagina que você tem todo esse tipo de arcabouço aqui de situações para a mesma aplicação se eu olhar pra ela num dashboard normal de observabilidade você vai ver o tempo médio de requisição vai pegar tudo vai vai somar e vai dividir pelo número de requisições vai pegar o tempo médio Então imagina que eu peguei tudo isso aqui, somei, dividi, pego o tempo médio. O tempo médio, ele pode te dar uma visão distorcida, porque você não sabe qual que está sendo o seu tempo máximo e você não sabe quantas pessoas chegaram naquele tempo máximo. Então o tempo médio ele vai te falar o tempo médio você teve um monte, também teve uma experiência linda. Então, nesse momento, você pode ter algum tipo de descasamento. Vou dar um exemplo que isso pode acontecer. Imagina que eu entrei e fiz uma requisição para consulta de saldo. Fiz a consulta de saldo no seu sistema e na primeira requisição demorou 10 segundos. Nossa, tempo horrível. na segunda você estava com isso em cache então eu peguei e só atualizei minha página e você estava com isso em cache ainda você veio na sua requisição, bateu voltou e trouxe pra mim em sei lá 60 milissegundos se você pegar o 10 ou 60 milissegundos já vai te dar uma distorção, você vai ver, sei lá 5 segundos de tempo de requisição você viu como as coisas começam a não se falar muito bem? Porque, na verdade, a minha experiência não foi de 5 segundos, foi uma de 10 e uma de 60 milissegundos, porque já estava em cache. Então, você tem um problema de aplicação para trabalhar assim. A diferença é que você teve alguma informação cacheada, ou seja, na minha segunda vez, talvez eu não tive a mesma experiência ruim, mas na primeira foi horrível. Então, você vê como quando a gente está falando da observabilidade, essa inteligência de entender os números vai fazer total sentido no seu dia a dia. Por que eu estou contando isso? Porque imagina que você tem que saber como está a experiência do seu cliente, você está olhando esse tipo de requisição, esse tempo de requisição que eu falei para vocês, e daí você pegou que o tempo médio de requisição está aceitável, beleza? Está aceitável não significa que está bom, ele está aceitável para um tempo médio mas você não sabe se a experiência do seu usuário tá bom aí se você olhar lá o P95 ao invés de olhar o tempo médio, eu vou olhar o P95 que é o percentual 95% de requisições, o que esse cara vai fazer? ele vai tirar os outliers então vou pegar aqui no nosso caso eu vou ali, um segundo 1 segundo não, perdão 60 milissegundos, requisições de 2 segundos, de 3 segundos de 10 segundos, estou pegando tudo isso aqui cheguei lá numa requisição de 800 milissegundos, poxa, esse cara ele está fora do do meu padrão, ele é muito outlier, esse cara ele não vai impactar o que eu vou fazer é olhar aqui em 95% das requisições que eu tenho eu atendo até 10 segundos que olhar que em 95% das requisições que eu tenho, eu atendo até 10 segundos. O que isso significa? Significa que o que é muito grotesco, eu deixei de lado que pode ter sido uma falha sistêmica em algum momento muito fora do comum. E daí, com isso, eu olho só o que está dentro do P95. Isso vai me dar uma outra visibilidade. Significa que o que eu consigo mostrar é que nas requisições em normalidade, eu atendo em até 10 segundos. Não significa, de novo, que a maior parte dos meus clientes são atendidos em 10 segundos. Significa que na normalidade, em até 10 segundos eu te respondo. Mas eu não sei se são 500 pessoas em 10 segundos e duas em milissegundos, ou o contrário, isso você não consegue ver tão claramente quando você está olhando o percentil 95. Se você for para o percentil 99, você também consegue olhar lá no P99 a mesma situação, mas o seu alt lá era um corte ainda menor, você está sendo mais criterioso. Mas isso é só uma outra chamada que você vai desconsiderar, a menor da menor da menor parte. É quase irrisório. Então, você vai falar, poxa, olha, a maior parte das minhas requisições, quase todas eu respondo em até 15 segundos. Só que foi muito grotesco que eu não estou pegando, que é só 1% que eu estou tirando de outlier aqui no meio da conversa. Então, por que eu estou contando tudo isso? Quando isso acontece, e você quer ter uma visão de como seus usuários estão sendo tratados, você precisa ir para os histogramas. Que vai ser o seguinte, você vai olhar faixas de bucket. Então, o que eu vou fazer é, quantas pessoas, quantos mil usuários, tiveram a sua requisição atendida em até um segundo? Puta, X mil. Quantas tiveram a sua requisição entre 1 e 2? X mil. Quantas tiveram entre 2 e 3? X mil, e assim por diante, então eu estou quebrando e sabendo que um pedaço dos meus usuários tiveram até 1%, outro tanto até 2%, outro tanto até 2%, outro tanto até 5%, você entendeu? um tanto até 1 segundo, perdão, outro tanto até 2 segundos, outro tanto até 3 segundos outro tanto até 4 segundos, eu falei por cento antes porque acho que a minha mente bugou, mas a gente está falando de clusters de atendimento. Com isso você consegue ver se a maior parte dos seus usuários estão num cluster aceitável ou não. E daí com isso você consegue entender melhor que tipo de ação que você tem que tomar. E você tem que usar tudo isso em conjunto, tanto os seus P95 e P99 quanto os histogramas para você conseguir tomar a melhor decisão, beleza? Então vamos pensar aqui num exemplo de uso para medir a distribuição de tempo de resposta para a aplicação web para entender como a latência varia entre diferentes requisições. Então, você também pode olhar, em vez de ser por usuário, como eu falei, você pode usar por função. Imagina que eu posso falar os clusters de milissegundos de resposta para determinadas funções. Então, quando o usuário tem, por exemplo, uma jornada, uma função de consulta de saldo, diferente de quando ele tem uma função de, sei lá, de atualização de saldo e assim por diante, você pode fazer por isso também, tá bom? Quando que é legal você usar? Quando você precisa analisar ali a distribuição de um conjunto de valores, igual eu expliquei para vocês, especialmente quando você precisa otimizar ou diagnosticar alguma coisa de desempenho. Vocês viram que tudo que eu mostrei para vocês foi basicamente para a gente chegar em um diagnóstico de se a gente precisa trabalhar ou não nesse assunto. Um exemplo prático aqui, então, é o sistema de pagamento online, onde a gente pode usar para monitorar os tempos de resposta de transação, identificando se a gente tem pico de latência, que pode afetar a experiência do usuário. De novo, clusterizando, você pode olhar pra decidir se você precisa atacar esse cara ou não nesse tipo de exemplo, tá bom? A gente tem o outro caso que são os sumários. Eles são ali muito parecidos com os histogramos. Só que ao invés da gente agrupar os valores, eles vão calcular os valores. Eu acabei de explicar ele pra vocês pelos P50, P95, P99. Então ele ele para vocês pelos P50, P95, P99. Então, ele vai mostrar onde a maior parte dos seus valores se encontra. Então, ele não está te mostrando os clusters, quantos clientes estão sendo em cada um deles, mas ele vai tirar da regra tudo que é o seu outlier. Ele vai te dar uma visão mais clara de onde a maior parte está acontecendo ali para você conseguir compreender como que está mais a sua aplicação, mas mais em alto nível. É importante você usar os dois ao mesmo tempo, tá bom? Então, aqui um exemplo de uso é medir o tempo de resposta de requisições HTTP e calcular o percentil 95 para garantir que a maior parte das requisições está sendo respondida dentro de um intervalo aceitável. Então aqui quando você olha para isso, você consegue ver que você está respondendo ali em até 9 segundos, ou até, sei lá, o seu tempo aceitável é 1 segundo. Se você estiver com P95 em até 1 segundo, ok, você sabe que as suas requisições estão indo até ali, elas não estão ultrapassando isso. Uma vez ou outra elas ultrapassam quando você tem alguma coisa muito complicada acontecendo. Sei lá, teve um banco de dados que topou por algum motivo, ou em um momento de incidente, assim por diante, você acaba tirando esses caras de dentro da sua conta para você conseguir focar no que é realmente experiência e o que não é falha. Quando que você vai usar ele? Para quando você precisa de informação sobre como vai funcionar toda essa estratégia, mas sem ter que entrar com os buckets ali de histogramas. Então, você não precisa implementar nada de quebra, porque você não precisa saber quantos estão em cada lugar. Você só precisa saber que está num tempo aceitável, tá bom? Então, normalmente, a gente usa esse cara quando a gente está com um lugar onde o tempo está sendo aceitável. Quando o tempo começa a parar de sair da zona do aceitável, é importante você ter os Instagrams para conseguir entender aonde está acontecendo a grande maior parte de falhas, tá bom? Um exemplo prático aqui é um sistema de entrega de vídeos, onde eles podem ser usados ali para garantir que 95% das visualizações, elas conseguem ser carregadas em menos de 2 segundos, proporcionando uma boa experiência. Para mim, 2 segundos ainda é muito, mas está bom. A gente está falando ali de até 2 segundos para garantir uma boa experiência. Então, 95% das requisições estão indo em até 2 segundos. Só que você não consegue olhar quantos por cento do seu público está sendo em 1, quantos por cento está sendo em 500 milissegundos, quantos por cento do seu público está sendo em 1, quantos por cento está sendo em 500 milissegundos, quantos por cento está sendo em 1,5. Para isso, você vai precisar desse outro carinha aqui, que são os histogramas. Eu gosto de sempre juntar esses dois caras aqui. Os dois juntos te contam uma boa história. Um só deles acaba te trazendo uma visão um pouco mais superficial, tá bom? E tem as métricas temporais. As métricas temporais vão medir o tempo gasto para realizar uma determinada operação. Como o tempo para processar, por exemplo, uma requisição, carregar uma página ou para concluir uma transação. Vamos dar um exemplo aqui. Monitorar o tempo de processamento de uma transação em um banco de dados e o tempo de resposta de uma API. Então a gente acabou de falar dela várias vezes, mas ela está sendo agrupada em alguns tipos de assuntos. Por exemplo, eu posso ter um temporal agrupado ou sumarizado ou com histogramas para ter agrupamento, mas vamos voltar para o temporal. Quando que você vai usar ela? Para diagnosticar ali gargalos e otimizar o desempenho do sistema. Então você vai ver quanto quanto está o seu tempo de resposta de API, por exemplo, e daí você pode tomar alguma decisão para melhorar ou não. Então, aqui em uma aplicação web, medir o tempo de carregamento de página, por exemplo, pode garantir que o seu usuário está tendo ali uma experiência boa ou não. E você pode gerar alertas a cada vez que você ultrapasse um tempo de carregamento de, sei lá, 3 segundos, que é um tempo de carregamento longo pra uma página. Então, basicamente, são esses os carinhas que a gente tem que conversar e que vocês tem que ter na cabeça, porque o Jaques vai falar mais com vocês na hora de implementar ali no dia a dia, beleza?