𝗖𝗲𝗻𝘁𝗿𝗮𝗹𝗶𝘇𝗲𝗱 𝗟𝗼𝗴𝗴𝗶𝗻𝗴 𝗪𝗶𝘁𝗵 𝗚𝗿𝗮𝗳𝗮𝗻𝗮 𝗔𝗹𝗹𝗼𝘆 𝗮𝗻𝗱 𝗟𝗼𝗸𝗶
Encontrar logs costumava significar fazer SSH em servidores específicos e executar o grep.
Durante um incidente, muitas vezes você não sabe qual máquina contém o erro. Você acaba pulando entre hosts e tentando comparar timestamps visualmente. Esse processo falha quando você precisa de velocidade.
Eu migrei para o log centralizado. Agora, cada linha de log de cada servidor reside em um único lugar. Eu utilizo o Grafana Alloy em cada host para enviar os logs para o Loki.
Por que esta stack?
- O ELK é pesado. O Elasticsearch exige muita manutenção e hardware.
- O Loki indexa labels em vez de texto completo. Isso o torna mais barato e fácil de operar.
- Ferramentas SaaS tornam-se caras rapidamente conforme sua frota cresce.
- O Alloy é o novo agente padrão da Grafana. Ele é eficiente e confiável.
A Configuração
O Alloy lê arquivos em cada host. Ele adiciona labels como host, environment e service. Em seguida, ele os envia para o Loki. Eu também construí um bot para o Slack. Ele faz chamadas à API do Loki para que a equipe possa extrair logs sem sair do canal de chat.
Desafios do mundo real que enfrentei:
- Permissões: O Alloy roda como seu próprio usuário. Se os logs da sua aplicação forem restritos, o Alloy falhará silenciosamente. Você deve adicionar o usuário alloy aos grupos da sua aplicação.
- Frotas de SOs mistos: Você terá máquinas Debian, Ubuntu e RHEL. Você deve usar os gerenciadores de pacotes corretos para cada uma.
- Agentes legados: Antigos shippers de logs podem causar o envio duplicado. Você deve encontrá-los e removê-los durante a implementação.
- Logs multilinha: Stack traces de Java abrangem várias linhas. Sem um regex multilinha, um único erro se torna quarenta entradas separadas e inúteis.
A Regra de Ouro dos Labels
Não coloque dados de alta cardinalidade em labels. Nunca use IDs de requisição ou IDs de usuário como labels. Isso quebrará seu índice. Use labels para coisas como nome do serviço ou ambiente. Use filtros para todo o resto.
O Resultado
O log centralizado transforma logs em métricas. Você pode criar alertas baseados em taxas de erro em vez de esperar que um humano perceba um problema. Quando um incidente ocorre, a resposta está a apenas um comando no Slack.
Comunidade de aprendizado opcional: https://t.me/GyaanSetuAi
