Um dos maiores desafios se você utiliza uma arquitetura baseada em microservices ou até mesmo com vários monoliths, é de integrar e monitorar logs de diferentes aplicações e a capacidade de pesquisar esses dados de forma simples, rápida e de baixo custo.
Neste tutorial, mostrarei como você pode começar a praticar a observabilidade das aplicações .NET centralizando os logs com o Elastic Stack utilizando o Docker.
Este artigo faz parte da série:
- Centralizando logs com Elastic Stack e .NET – Parte 1 (Docker)
- Centralizando logs com Elastic Stack e .NET – Parte 2 (Serilog)
- Centralizando logs com Elastic Stack e .NET – Parte 3 (Elasticsearch)
- Centralizando logs com Elastic Stack e .NET – Parte 4 (Kibana)
- Centralizando logs com Elastic Stack e .NET – Parte 5 (Elastic APM) – em produção
Elastic Stack
Nesta primeira parte, o foco será na configuração e utilização das seguintes ferramentas do Elastic:
- Elasticsearch: Mecanismo de pesquisa RESTful distribuído responsável pelo armazenamento de documentos (JSON) com Especialidade em busca Full-text.
- Kibana: Interface web para pesquisa, criação e visualização de gráficos/dashboards (Canvas) e configuração de alertas.
- Elastic APM: Sistema de monitoramento de desempenho de aplicações. Ele permite monitorar softwares em tempo real, coletando informações detalhadas de desempenho sobre o tempo de resposta das solicitações, consultas de banco de dados, solicitações HTTP e muito mais.
Pré-requisitos
Docker Compose
O primeiro passo é configurar o docker compose da solução com as imagens do Elasticsearch, Kibana e Elastic APM.
É necessário criar um arquivo chamado docker-compose.yml e um arquivo com o nome .env
, os dois devem ficar na mesma pasta. No arquivo .env
encontram-se as variáveis que serão utilizadas no docker compose:
Em seguida, configure o docker-compose.yml com o código abaixo. Algumas partes deste código são exemplos que a própria Elastic fornece na documentação.
Testando
Certifique-se de que o Docker tenha pelo menos 4GB de memória. No Docker Desktop, você configura esse valor no menu Settings e no item de menu Resources.
Para testar, execute o comando abaixo para iniciar as imagens no docker:
Em seguida, verifique se o Elasticsearch, Kibana e Elastic APM estão no ar:
- Elasticsearch: http://localhost:9200
- Kibana: http://localhost:5601
- Elastic APM: http://localhost:8200
Insira o usuário (elastic) e senha (pass@123) do Elasticsearch configurados no arquivo .env:
A seguinte tela deve ser apresentada em caso de sucesso:
Em seguida, abra o link do Kibana e insira o usuário (elastic) e senha (pass@123) do Elasticsearch configurados no arquivo .env. A seguinte tela deve ser apresentada em caso de sucesso:
E por fim, abra o link do Elastic APM. A seguinte tela deve ser apresentada em caso de sucesso:
Finalizando
Neste artigo, aprendemos como configurar e utilizar as imagens do Elastic Stack no Docker. Essa é a maneira mais fácil de iniciar a coleta de logs das aplicações. Para produção, normalmente hospedamos nossos dados em um provedor dedicado, como o elastic.io, o que nos poupa o esforço de gerenciar os servidores, segurança e atualizações das ferramentas.
Os detalhes completo desta série você encontra no meu GitHub: https://github.com/hgmauri/sample-observability
[…] Centralizando logs com Elastic Stack e .NET – Parte 1 (Docker) […]
[…] Centralizando logs com Elastic Stack e .NET – Parte 1 (Docker) […]
[…] Centralizando logs com Elastic Stack e .NET – Parte 1 (Docker) […]
[…] Quando se trata de monitorar aplicações .NET, o Elastic APM surge como uma solução poderosa. Aproveitando os recursos do Elastic Stack, incluindo Elasticsearch, Kibana e Beats, o Elastic APM fornece aos desenvolvedores e equipes de operações visibilidade em tempo real do funcionamento interno de suas aplicações .NET. (Para entender mais sobre o Elasticsearch eu indico esta série de artigos) […]