Pessoal, agora que a gente já evoluiu um pouco sobre o assunto de observabilidade, eu queria entrar um pouco mais no detalhe com vocês, quando a gente está falando de logs, que é um dos pilares da observabilidade. Vou passar com vocês por todos os pilares que a gente tem e dar uma detalhada para a gente começar a entender um pouco mais cada um dos pilares quando a gente estiver falando sobre eles mais para frente, nos hands-on e quando os meninos estiverem falando com vocês mais no detalhe de cada aplicação, beleza? Então o primeiro deles que eu queria falar com vocês é o log, tá? Então os logs eles são o que no final das contas? Eu já falei um pouco com isso com vocês antes, vocês, alguns de vocês já devem conhecer muito bem, mas eu queria aqui reforçar o conhecimento para todo mundo ficar nivelado, todo mundo ficar com o mesmo nível de informação para a gente seguir nas discussões, beleza? Então, quando a gente está falando de logs, eles não são nada mais do que os registros detalhados dos eventos que estão acontecendo dentro de um sistema. Ou seja, o passo a passo, as migalhas que vão acontecendo durante o percurso de alguma coisa, alguma função que está acontecendo dentro do sistema. Então, imagina que você tem uma porrada de eventos acontecendo, tanto funcionais ali, ou seja, você pode ter várias funções rolando, vários microserviços se chamando, várias mensagens passando de um lado para o outro, várias coisas que estão sendo executadas para fazer uma função acontecer. Tanto funcionalmente, beleza? Ou seja, passo a passo para fazer, por exemplo, um pagamento. Puts, eu preciso conhecer o cliente, eu preciso ver quais são os métodos de pagamento, eu preciso pagar, eu preciso validar o pagamento, eu preciso mandar uma mensagem. Então, todos os passos, os eventos que vão acontecendo até que o pagamento seja efetuado, são eventos. Mas também são eventos, mas também são eventos todas as métricas ou todas as informações que são geradas sistemicamente, ou seja, você pode ter os eventos, por exemplo, de sistema mesmo, de um sistema operacional que está rolando por trás para conseguir fazer isso acontecer. Tem esses eventos também. Tem os eventos também que vão ser eventos ali de infraestrutura, também vão estar acontecendo. Eventos de segurança e assim por diante. Tem vários eventos que são estartados e que estão rolando quando a gente está fazendo uma função acontecer. Então, quando a gente está falando aqui de logs, é conseguir guardar toda essa informação para depois a gente usar posteriormente como observabilidade, para a gente conseguir entender o que está acontecendo. Lembra que eu falei para vocês? a gente vai agir como se fosse um detetive aqui tentando descobrir o problema os logs vão ser extremamente importantes pra gente conseguir entender onde estão essas migalhas e como é que a gente chega no resultado final beleza? então tá bom qual que é a importância que a gente tem dos logs, tá? eles vão oferecer ali um histórico do que rolou e que você vai poder usar ali para entender erro, para você ver como melhorar uma segurança, para ver o comportamento do sistema e propor melhorias e assim por diante. Então, esses são os logs, tá? E as ferramentas que eu coloquei aqui para a gente dar uma olhada, tem uma porrada, tá? Mas o Elastic Stack, o LK, é uma ferramenta muito bacana pra gente fazer a guarda geração de logs, e o Splunk também, tá? Eu gosto bastante do Splunk, então acho que ele é uma ferramenta bem poderosa, a única coisa é que ele é um pouquinho caro, a maior parte das vezes. Outra coisa que a gente tem aqui, é, vamos falar um pouquinho da importância desses logs, a gente está falando da observabilidade, se você não tiver esse histórico detalhado do que está acontecendo, ou você vai demorar muito para identificar o erro, ou você vai dar o remédio errado, porque você não vai ter a informação toda. Então vamos imaginar que você é um médico tentando resolver a gripe de um paciente. Então você viu ali que o paciente está com febre, com dor de cabeça e espirrando. Então Você viu ali que o paciente está com febre, com dor de cabeça e espirrando. Então, tudo isso no diagnóstico você já pegou, mas você não tirou uma chapa do pulmão. Você não teve informação, por exemplo, informações visuais do que está rolando. Você não conseguiu fazer nenhum exame mais detalhado para dar o seu diagnóstico. E você foi lá e tratou ele para uma gripe simples. E no final, o que ele tinha, por exemplo, era, sei lá, alguma coisa mais complicada, ele podia estar com algum problema pulmonar e você não conseguiu pegar. Quando você não tem logs ou tem logs falhos, o que pode acontecer com você é isso, você pode dar o diagnóstico errado ou nem conseguir dar o diagnóstico, porque dependendo do seu nível de logs, você não vai nem saber que o seu paciente está com febre, por exemplo. Então, quando a gente está falando do sistema, é importante você ter esses logs para você conseguir entender qual é o comportamento do que está acontecendo e poder melhorar esse sistema também. Então, isso é muito importante, tanto no reativo, quando acontecer um problema e você tiver que resolver, ou até melhor ainda no proativo, quando você consegue entender tudo o que está rolando para tentar dar o remédio anteriormente. Uma coisa muito importante da gente pensar é o histórico de eventos, ou seja, os logs eles têm que capturar o registro sequencial de eventos que estão acontecendo no sistema pra poder ter análise depois, tá? Então é legal você ter aqui isso de uma forma bem estruturada pra você conseguir ter o histórico de quando as coisas foram acontecendo. O temporal aqui é muito importante. Uma coisa que é muito importante também é para você ter o diagnóstico de problemas, como eu falei, e para segurança e auditoria também. Eu falei pouco sobre isso, mas por vezes você precisa participar de alguma auditoria, dependendo do tipo de sistema que você tem, e você vai precisar de logs para conseguir contar a historinha do que estava acontecendo e assim por diante. Então, auditorias de conformidade ou segurança. Putz, você está tendo algum tipo de ataque, algum cyber ataque rolando, você precisa começar a olhar para isso com cuidado, com cautela, para você conseguir dar os remédios e não ter nenhuma vulnerabilidade exposta ali, tá bom? Quando a gente está falando de log, também a gente tem alguns tipos de log que eu vou comentar aqui com vocês e depois a gente vai aprofundar mais lá para frente, tá? O primeiro deles é o logo de aplicação. São os registros que a gente gera ali pela aplicação de eventos específicos. Eu vou dar um exemplo aqui para vocês. São as transações de usuários, erro de aplicação, mensagem de depuração. Então, os erros que a aplicação está dando ali, as coisas que são do seu código principalmente, elas vêm aqui nos logs de aplicação. É onde você vai conseguir entender como que o seu microserviço, a sua base de dados, etc., estava respondendo no momento de um problema, por exemplo. Ou quais são as coisas que esse microserviço, essa função está sofrendo no dia a dia. Tem os logs de sistema, são os que eu falei para vocês, que são os logs do sistema operacional. Então, tem informações sobre os processos que estavam rodando, sobre os recursos do sistema, sobre os eventos que o próprio sistema estava rodando, às vezes por trás, algum tipo de atualização por trás, ele pode estar impactando a sua aplicação, e assim por diante. Esses logs também são sempre bem interessantes de ter. E tem os logs de acesso, que são os logs ali de detalhes sobre os acessos, sobre as pessoas que estão acessando, tá? Então, como a página da web estão acessando, arquivos ou serviços que estão acessando a API, ou incluindo ali informações de quem acessou e quando acessou. Então, aqui é mais para você ter uma visão de quem está acessando, quem está usando a sua aplicação e assim por diante. Eu falei pessoa, mas entenda a pessoa como algo, porque pode ser uma outra API chamando, pode ser um ambiente externo. Então, dependendo, quando eu falo pessoa, é o chamador, tá? O chamador da sua função. Pode ser uma API, pode ser um banco de dados, pode ser um LambdaFront, pode ser uma porrada de coisa. Então, basicamente, o que tem que ter na cabeça é que aqui a gente vai guardar os logs de acesso disso. E quando a gente está falando da estruturação de logs, o que é importante a gente pensar, tá? Para que para que eles sejam logs válidos que a gente consiga usar depois no dia a dia eles precisam ter algumas boas práticas eu listei aqui 3 principais primeiro o formato tem que ser consistente normalmente vamos usar JSON porque quando a gente está falando de formato de log se você tiver vários tipos de formato de log alguém usou JSON alguém usou sei lá, algum formato nada a ver, um TXT da vida, usou uma maluquice pra guardar log, depois pra você fazer automação de análise vai ser difícil, pra você conseguir fazer a gestão disso também vai ser complicado, vai ser bem chato de você trabalhar com isso. Então, a padronização, mais do que o formato inconsistente, é a padronização do formato que você vai utilizar. Eu aconselho a usar JSON porque é o que todo mundo usa, não tem por que inventar aqui, na minha opinião. Outra coisa que a gente tem aqui para olhar é a inclusão de metadados. Então você colocar metadados que são relevantes, como timestamp, como eu falei, a visão temporal da coisa na hora que você for fazer um tracing vai ser extremamente importante. Então o timestamp vai ser muito importante, que é a hora que as coisas aconteceram, hora, minuto, segundo, que as coisas aconteceram. Os IDs de transação também, quem passou para onde, qual é o ID que está sendo trafegado para você conseguir depois mapear uma chave de como foi essa conversa desse ID de transação que foi passando de um lado para o outro. E os níveis de log também são importantes. Se outro. E os níveis de log também são importantes. Se é info, erro, debug, etc. Você colocar isso também é importante no seu metadado. E as mensagens claras. Não adianta você colocar mensagem de log ali que não faz o menor sentido. Então, as mensagens elas tem que estar sendo bem descritas, tem que mostrar o contexto que elas estavam sendo executadas e assim por diante. E a importância do evento que você está gerando ali. Então a importância do evento que você está gerando ali. Então, é importante você ter formato, inclusão dos metadados e as mensagens sendo claras para a gente conseguir fazer depois a utilização dos logs, senão não vai servir para nada, você não vai conseguir usar isso de forma boa. E vou falar real para vocês, eu já peguei bastante aplicação que estava com os logs sem timestamp, por exemplo. Quer me matar é a aplicação sem timestamp. porque daí você pega aquela aplicação vai fazer um debug como você vai saber o que que aconteceu primeiro aconteceu depois vou dar um caso para vocês uma vez a gente tava com problema bem grave e eu entrei para ajudar o pessoal ali a resolver e quando a gente tava analisando os logs eu peguei eu não conseguia fazer a busca pelo ID de transação que não tinha nos logs e nem pelo timestamp e E eu não sabia que estava sem timestamp. Eu entendi que estava vindo numa das chamadas, ele era o timestamp, mas não era. Era alguma outra data nada a ver, um horário nada a ver e eu estava achando que era o timestamp de execução. E daí o que eu fiz? Eu busquei pelo ID da pessoa, que não é o CPF, mas é o ID da pessoa dentro do sistema, que você consegue saber que é aquela pessoa que estava entrando. E daí eu vi que, putz, aquela pessoa tinha passado por uns níveis ali do sistema e tinha feito, tudo tinha dado certo, só que tinha demorado quatro horas para executar. Eu falei, meu Deus do céu, a gente começou essa execução e demorou quatro horas, tem algum problema muito grave. Ficamos analisando. Já tinha um problema, sim, claro, mas eu fiquei ali um tempão parado analisando aquilo, porque eu tinha entendido que estava a fazer quatro horas aquela pessoa tinha ficado em processo, tá? O que seria surreal para um ambiente online, mas o que a gente estava falando era um ambiente que poderia demorar um pouco mais de tempo, mas quatro horas era surreal. Em determinado momento eu comecei a analisar com mais calma, e ali em conversa com o nosso tech lead, a gente discutindo ele falou assim, cara eu estou olhando aqui, não é timestamp e como a gente não tem o ID da transação a gente não consegue puxar a transação o que está dando a impressão é que essa pessoa entrou várias vezes, a gente está vendo o log que ela entrou, sei lá, a uma da tarde, outro que ela entrou às duas outro que ela e terminou outra, ou quando essa pessoa foi fazer outra coisa e está aparecendo no log também. Então, ficou bem complicado de fazer. Aqui eu estou dando um exemplo dos piores que eu tenho, mas que acontecem na vida real. Então, é importante para vocês pensem em ter tudo isso estruturado, porque depois, na hora que tiver um problema, vocês vão lembrar de mim, tá bom? Outra coisa também, são as ferramentas aqui, como eu comentei algumas eu só vou dar uma passada por cima, só pra vocês terem uma ideia de como elas funcionam então tem várias ali que você vai usar pra coletar armazenar e analisar os logs tá? Eu coloquei as duas aqui que eu mais gosto, a Elastic Stack é um conjunto é um conjunto, tá? Então você vai ter ali o Elasticsearch o Logstash e o Kibana são três ferramentinhas que juntos fazem o RK, beleza? E tem o Splunk, que ele é ali muito utilizado, na verdade ele é bem poderoso, ele é muito bom, mas normalmente como eu falei ele é um pouco mais caro, então ele é muito poderoso para a coleta dos dados, indexação e análise dos dados de log em tempo real ali. E o que eu acho que é legal é que ele tem recurso tanto de geração de dashboards, quanto de visualização e alertas também. E ele é muito bom para você fazer drill down depois, para você conseguir fazer, se você precisar descer no nível de detalhe e conseguir analisar o que está acontecendo, ele é muito bom para isso também. E aqui eu coloquei aqui um exemplo para a gente discutir um pouco, que é um exemplo de problema, mas eu coloquei um exemplo bem alto nível, porque depois a gente vai fazer alguns hands-on, que acho que vai ser até mais interessante, mas só para a gente ter uma noção, já é começar a entender isso, como que funciona no dia a dia. Então imagina que você tem ali uma aplicação de e-commerce e você está recebendo um monte de reclamação de usuário que está tendo problema, não está conseguindo finalizar a compra e assim por diante. E você vai ter que analisar os logs da aplicação ali para identificar o erro. Para isso você vai usar o Elastic Stack, tá? Então qual que é o processo? O Log Stash, se você não preparou antes a geração de log, não vai adiantar de nada, então ele não vai coletar nada, vamos ser muito honestos. Você tem que ter preparado, conforme tudo aquilo que a gente falou, para você conseguir coletar esses logs via Logstash. Depois disso, que você coletou e enviou para o Elasticsearch, o Elasticse O Slack Search vai indexar os logs e vai deixar você fazer as buscas nesses logs. Porque no final das contas, log é um monte de informação, um monte de texto, um monte de dado que você precisa fazer busca. Então você tem ali o Lask Search que vai fazer a busca. E o Kibana vai ser usado para você conseguir, com base no que você indexou de log, ou que você conseguiu resgatar de log, criar dashboards para você conseguir de forma visual destacar o que está tendo de erro caso você precise de uma análise. Ou seja, você tem aqui uma ferramenta que ela consegue passar por todos os ponteiros aqui. Qual o resultado esperado disso? Você vai, nesse caso aqui que a gente criou, um exemplo fictício, você conseguiu identificar ali que era um erro no processamento de pagamento, porque, poxa, você conseguiu ver os logs bonitinho, conseguiu fazer o tracing dele, e chegou ali no momento onde você viu que o pagamento não é efetuado, e por isso você conseguiu corrigir esse problema. Agora, se você não tivesse toda essa busca, como é que você ia saber que era no pagamento? Podia ser ali que o cliente não estava conseguindo porque o carrinho de compras ficou fora sei lá, estava com algum problema na hora do carrinho de compras você não vai saber se é carrinho de compras, se é estoque, se é pagamento, você precisa ter os logs para conseguir fazer isso então eu coloquei esse caso aqui mais alto nível para a gente começar a entender como é importante essa geração de logs e aqui eu coloquei um outro cenário de auditoria e segurança, que pouca gente olha para isso com mais cautela, mas as empresas fazem bastante, então é legal vocês ficarem preparados para isso. Então, quando a gente está falando ali de uma empresa que ela precisa garantir que só usuários autorizados podem acessar os sistemas críticos. Isso acontece para caramba em uma porrada de empresa, né? Então, aqui o que você precisa fazer? Precisa monitorar os logs de acesso para ver se não tem ninguém esquisito entrando ali. Vai que tem algum tipo de invasão, algum mendemido, alguma coisa maluca que chegou ali e você consegue capturar com base pelos logs, você já consegue avisar para diminuir algum problema de segurança. Então aqui eu coloquei como exemplo o Splunk. O Splunk então ele vai coletar os dados de acesso ali de vários sistemas para conseguir gerar isso. ali de vários sistemas para conseguir gerar isso. As regras você consegue configurar no próprio Splunk de padrões de acesso em comum. Eu coloquei desse jeito para vocês verem que é tudo no Splunk só. Ele não precisa de três, igual a LK que a gente estava falando ali, que ele é separadinho. O próprio Splunk, ele vai ter tudo isso. Você vai ter as regras de alertas ali que são configuradas nele para ver esses padrões incomuns que pode ser qualquer coisa acontecendo os dashboards do Splunk podem ajudar você a visualizar as tentativas que são suspeitas, que estão esquisitas e aí você pode ver por perfil, vai depender muito do que está rolando, e o resultado que a gente pode pegar é a detecção de tentativa de acesso não autorizado e você pode com isso implementar medidas de seguranças adicionais. Vou dar um exemplo aqui maluco. Imagina que você tem ali um usuário que ele deveria acessar quatro, cinco vezes por dia os registros das pessoas de alguma localidade. Você está vendo que começou a ter um aumento gigantesco de acessos desse usuário de quatro a cinco, ele está fazendo 300, 400 mil. Ou seja, pode estar tendo alguém tentando fazer uma chamada massiva nas suas bases pra conseguir acesso a informações que não deveria ter. Você consegue pegar por aqui. Esse tipo de coisa e aí a gente pode usar a nossa imaginação aqui pra pensar no que os hackers conseguem criar. Então tem uma porrada de jeito de tentar burlar a segurança e aqui vai ajudar a gente a tentar diminuir qualquer tipo de impacto. Beleza?