Bom, depois do vídeo anterior talvez você esteja se perguntando, tá, eu não tenho uma aplicação rodando com Docker, tenho uma infraestrutura mais tradicional, uma aplicação rodando com Windows, Linux, diretamente ali no sistema operacional, então não tenho uma figura de um log driver para capturar os eventos de logs e enviar para o serviço do Splunk ou outra aplicação de log. O que eu faço? Você pode utilizar o Logback, lembrando que é uma biblioteca muito versátil, e essa biblioteca pode fazer o envio de logs diretamente para o serviço de logs, ou seja, no modelo push desses eventos, todo evento de log.info, log.error que você registrar, esses eventos são enviados diretamente para o serviço de aplicação, eventualmente talvez utilizando ali o mecanismo de buffering para não enviar direto, então esse é possível configurar. O primeiro passo que a gente vai fazer aqui é, além das bibliotecas que a gente já instalou, O primeiro passo que a gente vai fazer aqui é além das bibliotecas que a gente já instalou, é configurar também o Splunk Library Java Login do pacote aqui do Splunk. Vamos copiar essa dependência, vamos no PON e seguindo a ordem aqui vou colocar depois o LogBack, depois o LogStashEncoder, vou incluir a biblioteca aqui. Independente da ordem, né? Aqui é mais por uma questão de organização mesmo. Bom, fizemos a configuração da dependência do Splunk Library Java Login, só que tem um pequeno problema. Essa biblioteca não está disponível, não sei dizer o porquê, no repositório do Maven. É uma biblioteca que está disponível no Art Factory do Splunk e por isso a gente vai incluir um repositório customizado aqui adicional no nosso .xml. Às vezes é interessante configurar um arquivo settings.xml e referenciar na instalação do Maven, mas para perseguir um caminho um pouco menos exaustivo, apenas para demonstração, vou copiar como está aqui e vou incluir depois de build, vou incluir essa configuração de repositor. Então depois disso se você, se ao configurar a biblioteca do Java, do Splunk Library Java Login e ela não conseguir baixar, basta configurar o repositório customizado do Splunk, e obviamente estou configurando também o do Maven, porque já que estou customizando essa configuração, é importante referenciar os dois. O próximo passo aqui é configurar o logback.xml. Nessa configuração a gente inclui um appender, referenciando aqui o HTTP Event Collector Logback Appender, que diz respeito à biblioteca que nós importamos. Esse appender utiliza o Logstash para a formatação, do formato JSON, vamos enviar em formato JSON. E essa configuração recebe parâmetros similares à configuração do Logdriver. Aqui nós informamos a URL com o host e a porta, o token e alguns parâmetros adicionais, como o formato, por exemplo. O índice aqui também. Vamos incluir essa configuração, vamos começar pelos imports, vamos só confirmar se eles estão referenciados aqui no logback. Aqui no logback. Então, não estavam referenciados, nós incluímos agora. Bom, não estavam referenciados, nós incluímos agora. Próximo passo, vamos incluir agora o Appender. Copiar o trecho do Appender aqui. Para manter a organização, vamos incluir no final. Aqui, depois desse último Appender. O nome está como splunk http e aí nós vamos já já adicionar essas configurações e por fim aqui seguindo a configuração precisamos incluir um appender-half lá embaixo aqui em root level info, vou inclusive manter os dois quando eu rodar a aplicação via console eu vou enxergar os eventos de login como plain, splunk plain mas vamos utilizar outro appender que vai enviar para o serviço do splunk vamos voltar aqui nas configurações e vamos lá fazer o mesmo procedimento que fizemos no vídeo anterior, que é incluir um novo índice, vamos incluir um novo collector para diferenciar das configurações que fizemos anteriormente. Primeiro passo, vamos em indexes aqui já tem um índice configurado como logstoreapp vou colocar o mesmo nome com uma adição de vou manter um nome similar, mas dessa vez eu vou colocar aqui no nome do índice sem docker, para a gente lembrar. Não é um nome ideal, mas apenas para demonstração, então, quero que fique evidente que agora os eventos estão partindo da aplicação que não está rodando com o docker, vou deixar como default o restante das configurações e vamos em settings novamente, data inputs e vamos incluir um novo HTTP event collector vamos cadastrar um novo, em add new vamos incluir um novo e para facilitar vou manter o mesmo nome do índice. Próximo passo vamos vincular ao índice default, logStoreApps sem docker, review e submit. Pronto, vou voltar aqui para eu conseguir pegar todas as informações em data input novamente HTTP event collector, eu já vou copiar aqui o nome do índice, de novo é facultativa essa informação, não é uma informação importante porque eu estou vinculando o índice default, mas eu vou informar aqui para fim de demonstração. Vou copiar agora o token, vou colocar ele aqui. O host é localhost. Lembrando que eu estou rodando o Splunk localmente via docker, pelo menos apenas o Splunk está rodando com docker. Vou manter o source type como logback, message format json e o reset das configurações como estão aqui. Pronto, com isso feito vamos inicializar a aplicação. Bom, com a aplicação rodando, já começou a gerar alguns logs aqui de inicialização, vamos acessar o Splunk agora e fazer a busca pelo nome do índice e nós já começamos a receber alguns eventos de logs então os eventos de logs vieram aqui nesse campo de message e fora tenho severidade, por exemplo, que seria o level. Esses dados podem ser customizados, mas achei melhor deixar como default, padrão. Aqui eu tenho os dados, por exemplo, a mensagem com os campos específicos aqui, o conteúdo que eu estou adicionando como parâmetro. Enfim, os dados estão chegando aqui normalmente. Vamos fazer uma requisição. Vamos começar fazendo uma solicitação de uma order. Consultando todas as orders. Consultando uma order, consultando todas as orders, consultando uma order válida, uma order inválida e vamos fazer uma busca aqui. Vieram já algumas informações, por exemplo, aqui eu tenho o logLevelError, esse mesmo level, como comentei, também ele aparece aqui como SeverityError, mas é uma questão do formato realmente do evento. E observe que eu tenho também as informações adicionais que lembrando nos vídeos anteriores são usados do MDC por exemplo o nome da aplicação a versão o host que é que eu estou passando na requisição se olhar aqui embaixo também tem o trace id esses eventos estão sendo passados também. Então, é possível fazer filtros específicos. Vamos fazer um filtro aqui em cima desses eventos. Então, aqui vou colocar spath, porque os dados estão vindo com o formato JSON. Eu vou quebrar a linha para ficar mais visualmente elegante. Eu começo informando search, pipe search, o nome do campo na raiz, no caso message, ponto, trace id, e igual o valor. Lembrando que você pode fazer busca aproximada também. Então, se você não quisesse digitar todos ou colocar todos os dados, você pode incluir o asterisco. Então, aqui é uma forma de você implementar a configuração do do Appender para fazer envio dos logs da aplicação para o Splunk, para uma aplicação que eventualmente roda no ambiente mais tradicional, mais limitado até, sem os benefícios de uma infraestrutura como um Docker, você tem um ambiente mais tradicional e quer se beneficiar de uma plataforma, de um serviço de login mais sofisticado. Então a implementação super funciona e você consegue implementar isso.