Registrando no Graylog com Spring Boot
1. Introdução
Graylog é um serviço de agregação de log. Simplificando, ele é capaz de coletar milhões de mensagens de log de várias fontes e exibi-las em uma única interface.
Além disso, também fornece vários outros recursos, como alertas em tempo real, painéis com gráficos e tabelas e muito mais.
Neste tutorial, veremos como configurar um servidor Graylog e enviar mensagens de log para ele a partir de um aplicativo Spring Boot.
2. Configurando o Graylog
Existem várias maneiras de instalar e executar o Graylog. Neste tutorial, discutiremos as duas maneiras mais rápidas: Docker e Amazon Web Services.
2.1. Docker
Os seguintes comandos farão download de todas as imagens necessárias do Docker e iniciarão um contêiner para cada serviço:
$ docker run --name mongo -d mongo:3
$ docker run --name elasticsearch -p 9200:9200 -p 9300:9300 \
-e ES_JAVA_OPTS="-Xms2g -Xmx4g" \
-e "discovery.type=single-node" -e "xpack.security.enabled=false" \
-e "bootstrap.memory_lock=true" --ulimit memlock=-1:-1 \
-d docker.elastic.co/elasticsearch/elasticsearch:5.6.11
$ docker run --name graylog --link mongo --link elasticsearch \
-p 9000:9000 -p 12201:12201 -p 514:514 -p 5555:5555 \
-e GRAYLOG_WEB_ENDPOINT_URI="http://127.0.0.1:9000/api" \
-d graylog/graylog:2.4.6-1
O painel Graylog agora está disponível usando a URLhttp://localhost:9000/ e o nome de usuário e senha padrão sãoadmin.
Embora a configuração do Docker seja a mais simples, ela exige uma quantidade substancial de memória. Também não funciona no Docker para Mac, portanto, pode não ser adequado para todas as plataformas.
2.2. Amazon Web Services
A próxima opção mais fácil para configurar o Graylog para teste é o Amazon Web Services. Graylog provides an official AMI that includes all the required dependencies, embora exija alguma configuração adicional após a instalação.
Podemos implementar rapidamente uma instância EC2 com o Graylog AMI clicando emheree selecionando uma região. Graylog recommends using an instance with at least 4GB memory.
Após o início da instância, precisamos fazer o SSH no host e fazer algumas alterações. Os seguintes comandos irão configurar o serviço Graylog para nós:
$ sudo graylog-ctl enforce-ssl
$ sudo graylog-ctl set-external-ip https://:443/api/
$ sudo graylog-ctl reconfigure
Também precisamos atualizar o grupo de segurança criado com a instância do EC2 para permitir o tráfego de rede em portas específicas. O gráfico abaixo mostra as portas e protocolos que precisam ser ativados:
O painel Graylog agora está disponível usando a URLhttps://<EC2 PUBLIC IP>/ e o nome de usuário e senha padrão sãoadmin.
2.3. Outras instalações do Graylog
Além do Docker e do AWS, também háGraylog packages para vários sistemas operacionais. With this approach, we also have to set up an ElasticSearch and MongoDB service.
Por esse motivo, o Docker e a AWS são muito mais fáceis de configurar, especialmente para fins de desenvolvimento e teste.
3. Enviando mensagens de log
Com o Graylog em funcionamento, agora devemos configurar nosso aplicativo Spring Boot para enviar mensagens de log para o servidor Graylog.
Qualquer estrutura de log Java pode suportar o envio de mensagens para um servidor Graylog usando o protocolo GELF.
3.1. Log4J
No momento, a única estrutura de registro suportada oficialmente é o Log4J. Graylog fornece um appender, que está disponível emMaven central.
Podemos ativá-lo adicionando a seguinte dependência Maven a qualquer arquivopom.xml:
org.graylog2
gelfj
1.1.16
Também devemos excluir o módulo iniciador de registro em qualquer lugar em que usarmos um módulo iniciador do Spring Boot:
org.springframework.boot
spring-boot-starter-web
org.springframework.boot
spring-boot-starter-logging
Agora podemos definir um novo anexador em nosso arquivolog4j.xml:
Isso configurará todas as mensagens de log com nível INFO ou superior para ir para o aplicativo Graylog, que por sua vez envia a mensagem para o servidor Graylog.
3.2. Outras estruturas de log
OGraylog marketplace tem bibliotecas adicionais que suportam uma variedade de outras estruturas de registro, como Logback, Log4J2 e mais. Just beware that these libraries are not maintained by Graylog. Alguns deles são abandonados e outros têm pouca ou nenhuma documentação.
Deve-se ter cuidado ao confiar nessas bibliotecas de terceiros.
3.3. Graylog Collector Sidecar
Outra opção para coleta de log é oGraylog Collector Sidecar. O sidecar é um processo que é executado ao longo de um coletor de arquivos, enviando o conteúdo do arquivo de log para um servidor Graylog.
O Sidecar é uma ótima opção para aplicativos em que a alteração dos arquivos de configuração de registro não é possível. E porque ele lê arquivos de log diretamente do disco,it can also be used to integrate log messages from any platform and programming language.
4. Vendo mensagens no Graylog
5. Conclusão
Graylog é apenas um dos muitos serviços de agregação de logs. Ele pode pesquisar rapidamente milhões de mensagens de log, visualizar dados de log em tempo real e enviar alertas quando determinadas condições forem verdadeiras.
A integração do Graylog a um aplicativo Spring Boot requer apenas algumas linhas de configuração e sem nenhum novo código.
Amostras de código, como sempre, podem serfound on GitHub.