Pessoal, e qual que é a grande diferença entre monitoramento e observabilidade? Normalmente, no dia a dia, a gente ouve muito falar de observabilidade, a gente tem o costume de sempre usar a palavra observabilidade quando a gente está falando de tudo, de monitoramento, observabilidade, tudo que a gente está olhando aqui, quando a gente está tentando compreender como o sistema funciona e como são as saídas desse sistema, tá bom? Mas só para a gente conceituar direitinho, eu queria entrar com vocês um pouquinho na diferença entre os dois para vocês terem claro qual a diferença no dia a dia de quando a gente está falando de monitoramento e quando a gente está falando de observabilidade. Pô, Nathan, mas eu preciso saber a diferença e assim por diante? É importante você saber para você, quando estiver falando com pessoas que têm mais conhecimento do assunto, você está entendendo de qual momento a gente está falando em cada situação. Mas no dia a dia, normalmente, as pessoas acabam chamando sempre de observabilidade ou de observability e assim por diante. Então, vamos lá. Quando a gente está falando de monitoramento versus observabilidade, a gente precisa entender primeiro qual é a definição de monitoramento. Quando a gente está falando de monitoramento, gente, é comum qualquer coisa que a gente fala de monitorar. Monitorar é o que? Você já imagina de cara você olhando algum gráfico, por exemplo, monitorar como é que estão as ações na bolsa, eu vou monitorar como é que está a frequência cardíaca do meu paciente, assim por diante. Você está monitorando, monitorando a glicemia de algum paciente que precisa monitorar a glicemia, ou seja, você está falando ali do processo de coletar, processar, agregar e exibir os dados em tempo real ali sobre um sistema. Então, quando a gente está falando de monitoramento, basicamente, então, eu preciso coletar os dados, ou seja, conseguir pegar todos os dados conforme as coisas vão acontecendo, processar isso, agregar esses dados, ou seja, fazer conjuntos que façam sentido, se necessário, e exibir esses dados de uma forma que faça sentido para a gente conseguir analisar aquilo que está rolando. Então, o monitoramento é basicamente essa forma da gente enxergar as informações. Os dados ali, então, eles podem ter contagem de consulta, tipo de consulta, contagem de erro, tipo de erro, tempo de processamento, tempo de consulta, contagem de erro, tipo de erro, tempo de processamento, tempo de vida de servidor e assim por diante. Você pode pôr vários tipos de coletas de dados e de formas de mostrar os dados para conseguir monitorar. De criar dashboards, por exemplo, para conseguir monitorar todas essas informações que eu falei para vocês. Então, imagina aqui que você tem lá tipos de erro. todas essas informações que eu falei para vocês. Então, imagina aqui que você tem lá tipos de erro. Poxa, a cada 100 chamadas, 15 estão dando erro do tipo API não encontrada, por exemplo. Pô, está retornando um erro 500, algum código de erro de retorno que você quer monitorar. Então, você vai pegar esse erro e vai falar, putz, de 100 chamadas 15% está tendo erro numertal. Ou, por exemplo, uma API que tem que responder numa taxa de resposta ligeira de menos de 200 milissegundos. Quantos porcento dessa API já passou de 200 milissegundos? É uma forma também de você criar um dash de monitoramento e assim por diante. Basicamente é disso que a gente está falando. O objetivo aqui é identificar problemas que são conhecidos e garantir que o sistema está funcionando conforme esperado. Ou seja, a gente já conhece o erro 500, a gente já conhece quando a gente tem, por exemplo, um problema de CPU que está muito alto ou quando a gente tem um tempo de resposta que é muito alto. Você está vendo? Tudo isso eu falei. Eu já tenho base de parâmetro e eu já conheço do que a gente está falando, então com isso eu quero identificar os problemas que eu já conheço e garantir que está tudo funcionando bem, ou seja eu já conheço tudo aquilo, eu quero ficar analisando aquilo para ver se não tem nada fugindo do meu controle, tá bom? E aqui tem várias formas de monitorar que a gente vai falar depois. Tem ferramentas que são muito comuns, eu trouxe aqui três das que eu mais gosto, quatro na verdade, das que eu mais gosto. Grafana, o Splunk, eu gosto muito do Splunk, Prometheus e AppDynamics. Eu sei que tem gente que não gosta do Splunk, ele é mais caro e assim por diante, mas eu gosto bastante. Então tem o Grafana, o Splunk e o Prometheus e o AppD que você consegue usar para fazer esse tipo de ação que eu falei para vocês. Um exemplo para vocês pensarem, monitorar aqui o CPU e a memória de um servidor para garantir que ele não está sobrecarregado. Aquele exemplo que eu dei da tabela, por exemplo, você poderia ter um monitoramento falando, olha, para o banco de dados tal, quando passar de X%, eu vou começar a gerar um dashboard falando que isso é um problema, que isso é ruim e assim por diante. Ou um alerta e assim por diante. O ponto aqui é que você consegue olhar tanto a CPU daquela máquina que está rodando a requisição, que é o banco de dados, ou você consegue olhar a memória também para conseguir acompanhar como é que essas coisas estão indo. Então você vai vendo lá, já estou com 80% de consumo de memória. Oxe, acho que é bom dar uma olhada e assim por diante, tá bom? Basicamente, esse é o monitoramento. E quando a gente está falando de observabilidade? Bom, é a capacidade de você observar o estado interno de um sistema baseado nas saídas que ele está gerando para você, tá? Então, em vez de apenas monitorar, você está começando a explorar os dados para tentar entender o que está errado. E aqui o objetivo é fornecer alguns insights para a gente compreender o comportamento do sistema que pode permitir o diagnóstico e correção rápida. Aqui é quando a gente já está falando de observabilidade. Ferramentas comuns para isso. OpenTelemetry, New Relic e Datadog. Bom, mas Natan, só tem essas? Não, o Splunk, por exemplo, ele tem algumas coisas que você consegue ir até o nível de observabilidade. Ou seja, você pode estar monitorando uma aplicação e falar, puta, agora eu entendi aqui que tem alguma coisa esquisita, deixa eu observar esse item, deixa eu entrar mais a fundo para compreender como é que esses dados estão se relacionando e eu conseguir ter um insight melhor do que está acontecendo. A maior parte das ferramentas tem isso, tá bom? Você consegue fazer também, não só o monitoramento, mas você também consegue fazer a observabilidade. Mas eu tentei separar aqui nas que são mais pensadas para um e para outro, tá? Para mim, por exemplo, o Datadog e o OpenTelemetry são extremamente mais robustos quando a gente está falando de observabilidade do que os demais. O Datadog, inclusive, eu gosto bastante e o OpenTelemetry tem ainda outras perspectivas que são bem legais e a gente vai ouvir aqui no curso também. O exemplo aqui que a gente pode usar é o Tracing distribuído para entender o fluxo de uma solicitação através de múltiplos serviços e identificar onde está ocorrendo uma falha. Aqui, por exemplo, no Splunk, dá para você fazer também, que é, a partir do momento que você pegou um problema, você começa a dar um drill down naquela aplicação e conseguir entender, tipo, olha, tem cinco, seis microserviços. Qual que é o microserviço que está com problema? É esse? Beleza. Deixa eu fazer um scan aqui para desse microserviço, quais são os erros que estão retornando, e pegar, sei lá, o CPF de uma pessoa, o ID de uma pessoa, entender durante esse ID, eu já estou indo no tracing da coisa, durante a requisição, ou seja, durante a relação deste cliente com a minha aplicação, onde foi o problema, o que aconteceu. Então, você consegue fazer isso com mais profundidade. Quais são as características do monitoramento que são legais a gente ter na cabeça? O monitoramento ele é proativo, tá? Então ele normalmente é configurado ali pra alertar quando tiver algum problema conhecido e definido, como eu falei você pode ter ali um monitoramento com alertas, que é muito bom porque como dizem as más línguas não adianta você ter um monitoramento só de dashboard, porque a gente não vive a nossa vida olhando um dashboard. O dashboard é legal, mas é legal a gente ter um monitoramento que gere alertas para possibilitar que o próprio sistema alarme quando a gente precise de alguma coisa a ser realizada. Então, ele é proativo. A primeira coisa é, ele identifica os problemas e ele gera alertas nos problemas conhecidos. Como eu falei, puts, alto tempo de resposta, CPU muito alto, o uso de memória muito alto e assim por diante. Ele também gera os sinais de alerta com base no que a gente falou. Acabei de contar para vocês, CPU acima de 80%. Ele é simples, então normalmente ele tem ali uma coleta e um conjunto limitado de métricas e logs. Ele não vai gerar para você toda a história, todo o filme. Ele gera foto. Basicamente é isso. Ele vai gerar para você uma foto falando, olha, está acontecendo isso. Agora, se você quiser ver o detalhe, o tracing da coisa, a gente está falando da observabilidade. Então, a observabilidade, ele já é exploratório. Você quer entrar e entender os padrões, os problemas que você não previu. Então, poxa, beleza, estamos tendo algum problema ou eu quero analisar para tentar prever algum problema futuro, eu consigo usar a exploração para isso. Ele tem um diagnóstico mais profundo, então ele vai oferecer ali insights detalhados sobre o comportamento do sistema e daí você consegue correlacionar com causas raízes ali para você entender. E ele normalmente é muito mais complexo, porque você já está olhando uma análise de um conjunto gigante de dados, incluindo aqui a Trace, que eu falei muito para vocês, Log, Métrica, então você já está começando a entender ali no detalhe o porquê que as coisas estão acontecendo, beleza? E aqui vamos dar um exemplo prático. Eu coloquei dois exemplos, tá, gente dar um exemplo prático, eu coloquei dois exemplos, tá gente? um exemplo prático, mas um exemplo bastante diferente, tá? de monitoramento o primeiro exemplo que eu quis colocar pra vocês, é um exemplo onde a gente não está olhando tanto pra quem está acostumado pra aquelas ferramentas que eu mostrei acima pode ser até alguma coisa mais caseira como era feito antigamente, mas é uma forma de monitoramento, Então, por exemplo, monitorar a disponibilidade de um serviço web através da verificação de ping. Ou seja, eu posso fazer algum tipo de automação, ficar fazendo um ping na minha API, buscando requisição, e ele gera um alerta caso esse serviço não responda. Tem vários serviços prontos para isso, mas eu coloquei aqui uma forma um pouco mais manual de fazer a coisa, uma forma que você consegue implementar sem a necessidade de nenhuma ferramenta adicional. Isso é uma forma de monitorar, certo? Você está batendo ali, está vendo se está tudo ok e girando alertas caso não esteja. O segundo tipo aqui é medir a latência de solicitações HTTP e alertar se ela tem, se excedeu algum tipo de limite. Aqui, normalmente, usando algum tipo de ferramenta, daquelas que a gente comentou, você pode virar e falar assim, olha, nessa requisição eu só aceito até 100 milissegundos. Passou disso, gera alerta e a gente vai começar a atuar em cima desse ponto. Ou você pode girar um gráfico que mostre isso, que, por exemplo, o seu usuário de negócio, o seu cliente, consegue olhar aquilo e falar, opa, estamos tendo algum problema, já deixa eu preparar a operação. Lembra aquilo que eu falei sobre a proximidade e tal? Já deixa eu preparar a operação porque talvez tenha um problema ali enquanto o time de TI vai olhando o que está acontecendo. A gente consegue analisar e olhar mais rápido quando isso acontece. Agora, quando a gente está falando de observabilidade, para ficar bem claro aqui, o exemplo 1 aqui que eu coloquei é usar um tracing ali para seguir uma solicitação de usuário através de vários microserviços e identificar onde ocorre o aumento de latência inesperado. Aquele caso que eu falei da tabela que estava com várias requisições batendo e não estava conseguindo ter throughput, aqui seria mais ou menos isso. Poxa, deixa eu pegar uma requisição aqui do Natan. O Natan entrou e foi comprar o ingresso para o show do Foo Fighters. Na hora que ele foi comprar o ingresso, não está respondendo, está dando problema. Quanto tempo demorou a requisição do Natan? Puta, demorou 20 segundos. Nossa, uma eternidade. Vamos entender o que aconteceu no meio desses 20 segundos. Poxa, nesses 20 segundos ficou 15 parados no banco de dados. Você já conseguiu fazer o tracing e entender aonde está sendo o seu maior problema dentro da requisição do Natan ali para você ver esse gargalo. Aí, poxa, consigo ver que a maior parte das requisições estão batendo ali, estão travando ali? Você já sabe aonde está o seu problema para até gerar novos monitoramentos e novos alertas para o futuro. Um exemplo 2 aqui é analisar os logs detalhados para identificar padrões que são diferentes, são umas anomalias dentro do sistema e que podem ser falhas que vão acontecer no futuro e com isso você consegue prever e prevenir uma possível falha no futuro. Então, olhando os logs, você já consegue entender o que vai acontecer ali mais ou menos com base nos padrões que você já tem no seu sistema. Basicamente é isso, gente. Até a próxima aula.