Esse projeto demonstra como fazer a observabilidade de uma aplicação Node utilizando as seguintes tecnologias:
- Grafana Loki - Para logs distribuídos
- Grafana Tempo - Para tracing distribuído
- Grafana - Para visualização da stack
- Opentelemetry - Para instrumentação da aplicação
Há várias opções de tecnologias para fazer a observabilidade de nossas aplicações, mas nem todas são simples e baratas de manter. Stacks como ELK são excelentes alternativas para escolher, porém são tecnologias caras e que consomem muitos recursos computacionais.
E além de ter várias opções para essa escolha, como podemos fazer para correlacionar nossos logs e métricas? Precisamos ir de uma plataforma à outra para poder fazer o troubleshooting.
Por isso essa stack foi escolhida!
Com o Grafana Loki e Grafana Tempo é possível correlacionar os logs e traces dentro do Grafana e, com isso, maximizando a produtividade no momento de análise de logs/traces. Além de ser ferramentas simples de serem utilizadas, leves e baratas, prontas para ambientes produtivos de alto escalonamento.
A aplicação em NodeJs utiliza as libs do Opentelemetry para instrumentar todos os traces, enviando para o Grafana Tempo.
Os logs são enviados diretamente para o Grafana Loki.
O grafana se conecta com as bases de dados do Loki e do Tempo para consumir os dados e criar as visualizações. Todos os logs e traces estão correlacionados, sendo assim podemos transitar entre a visualização dos logs e dos traces.
docker compose up -d
A aplicação NodeJs inicializará na porta 5000
Acesse a seguinte rota: http://localhost:5000/hello