Monitoramento com Prometheus, Grafana, AlertManager e VictoriaMetrics
Autores: Aécio Pires, Alan Santos e Gabriel Monteiro.
Introdução
O monitoramento de aplicações é um grande desafio, portanto, várias ferramentas são utilizadas para fornecer controle de alto nível às equipes envolvidas no controle e análise de dados. Considerando isso e trazendo um pouco da experiência da Sensedia, podemos mencionar os seguintes sistemas que podem auxiliar no monitoramento das aplicações e serviços de uma empresa:
- Prometheus: um sistema de coleta de métricas de aplicações e serviços para armazenamento em um banco de dados de séries temporais. É muito eficiente.
- AlertManager: trabalha de forma integrada com a Prometheus para avaliar regras de alerta e enviar notificações por e-mail, Jira, Slack, e outros sistemas suportados.
- Grafana: uma solução de análise e observabilidade que suporta vários sistemas de coleta de toras e métricas. Quando integrada ao Prometheus, serve para exibir métricas em painéis muito elegantes e úteis para diferentes áreas de uma empresa/organização.
- Prometheus-Operator: software para simplificar e automatizar a instalação e configuração do Prometheus, AlertManager, Grafana e exportadores nos clusters de Kubernetes.
- VictoriaMetrics: uma solução rápida, econômica e escalável de banco de dados e monitoramento de séries temporais. Mas em nosso caso, ela é usada para armazenamento centralizado e de longo prazo das métricas coletadas por diferentes servidores Prometheis (o plural da Prometheus).
Todas estas ferramentas são de código aberto e estão disponíveis no Github.
No tutorial anterior, aprendemos como criar um cluster Kubernetes na AWS usando o Terraform. Você pode criar o cluster e instalar o Prometheus-Operator seguindo o tutorial que está disponível no repositório sensedia/open-tools . Se você não sabe o que é o Prometheus-Operator, recomendo vivamente que assista a esta palestra apresentada por Daniel Requena durante a StayAtHomeConf e/ou veja os links que estão nas referências.
Qual é a vantagem de usar essas ferramentas?
Podemos destacar várias vantagens de usar essas ferramentas para aumentar o controle de dados. Como estamos olhando muito para a Open Finance este ano, podemos falar um pouco sobre como estas ferramentas podem ajudar a trazer controle e governança sobre os processos bancários.
Quando você integra seu software com as APIs do banco, você abre uma gama de possibilidades, mas e quanto ao controle de tudo isso? Como monitorar se os serviços que suportam essas interações estão funcionando corretamente? A resposta a estas perguntas é o monitoramento, que pode ser feito usando o Prometheus, AlertManager, Grafana e outros sistemas.
Ao ter um monitoramento eficaz, você pode:
- Ter mais agilidade na solução de problemas;
- Identificar instabilidades e picos de transação de alto volume;
- Maior controle de dados.
E estes são alguns dos muitos benefícios que o rastreamento de dados pode trazer ao seu negócio.
Como utilizamos estas ferramentas?
Nosso ambiente de produção é multi-nuvem e temos vários clusters Kubernetes distribuídos em AWS e GCP. É lá que executamos as aplicações e serviços utilizados pelos clientes.
Basicamente, em cada cluster Kubernetes, o prometheus-operator é instalado para gerenciar apenas o prometheus e os exportadores necessários para coletar as métricas. Em vez de instalar Grafana e Alertmanager em cada cluster, optamos por instalar estes serviços em um único cluster.
Todas as métricas coletadas pela Prometheis são enviadas à VictoriaMetrics, que centraliza seu armazenamento e consultas. Por padrão, a Prometheus-Operator armazena as métricas localmente por apenas 2 horas. Com a VictoriaMetrics podemos armazenar todas as métricas de toda a Prometheis por um longo período de tempo.
O Grafana é então configurado para conectar-se à VictoriaMetrics para consultar e exibir as métricas. Com relação aos alertas, todos os Prometheis enviam para um AlertManager pool. Assim, podemos garantir a disponibilidade e a centralização das métricas e alertas. Vale mencionar que todos os dados são transmitidos de forma criptografada e o acesso aos dados é feito através de autenticação e a partir de IPs de fonte autorizada.
VictoriaMetrics
Esta ferramenta merece atenção especial, e explicaremos o motivo abaixo.
De janeiro a outubro de 2020, utilizamos o InfluxDB como solução de armazenamento para as métricas de longo prazo da Prometheis. Mas começamos a ter sérios problemas no armazenamento e visualização das métricas diante da crescente demanda por coleta de novas métricas. Isto não significa que o InfluxDB seja uma má solução, pelo contrário, ele nos serviu muito bem por muito tempo, mas após uma extensa pesquisa, ajustes nos arquivos de configuração e um aumento considerável nos recursos de CPU e memória, vimos que executar o InfluxDB sem usar o modo cluster (que é pago) não estava nos servindo bem.
Então, decidimos fazer uma busca por soluções alternativas e entre elas estavam
-Thanos;
Após análise detalhada de cada solução, conversas com amigos e colegas que já utilizavam algumas delas em outros ambientes, além de refletir sobre as necessidades comerciais e o retorno do investimento que cada um acrescentaria, optamos pela VictoriaMetrics.
Os fatores-chave para tomar esta decisão foram:
- A simplicidade de instalação e configuração, após comparação com outras ferramentas;
- Não foi necessário refazer os painéis na Grafana, pois a VictoriaMetrics suporta a PromQL;
- Não foi necessário ter um Prometheus somente de leitura (isto é, usando o API de leitura remota, intermediando a comunicação entre a Grafana e a VictoriaMetrics);
- Pouco uso de recursos de CPU e memória para armazenar e processar um alto volume de métricas. Isto tem sido observado em alguns casos de uso em ambientes de produção de empresas globalmente relevantes. Veja a página: https://github.com/VictoriaMetrics/VictoriaMetrics/wiki/CaseStudies;
- Benchmark com resultados positivos em comparação com outras soluções, feito por uma pessoa que trabalha na Addidas e em um ambiente com um alto volume de métricas.
Fizemos um PoC usando VictoriaMetrics (modo cluster) durante Black Friday (o período do ano em que ocorre o maior volume de geração de métricas de acordo com a demanda e o modelo de negócios de nossos clientes). Durante este período, não tivemos problemas para monitorar a pilha e ela tem permanecido assim desde então. Antes, tínhamos problemas recorrentes de monitoramento da pilha quase todos os dias. Isso não afetou o ambiente de produção do cliente, mas exigiu um bom tempo das equipes operacionais durante a solução de problemas.
Em modo cluster, a VictoriaMetrics consiste nos seguintes componentes:
- vmstorage: armazena métricas em um volume persistente. Em nosso caso, os dados são armazenados em discos EBS;
- vmselect: utilizado para a leitura/conquista de métricas. Ele recebe os pedidos de leitura, interage com o vmstorage para obter acesso a eles e depois envia os dados solicitados.
- vminsert: utilizado para a escrita de métricas. Ele recebe os pedidos de escrita e os passa para o vmstorage para armazenamento;
- vmauth: é um simples proxy de autenticação que redireciona os pedidos de leitura/escrita para vmselect/vminsert. Ele valida o nome de usuário e a senha para os cabeçalhos do Basic Auth, compara-os com as configurações de redirecionamento definidas e atua como um proxy para solicitações HTTP.
Sobre os números
- 28 Prometheis (um para cada agrupamento) enviando métricas para a VictoriaMetrics;
- 2 cápsulas para o componente vmselect
o CPU: 500 milicores no mínimo e 1 CPU no máximo
o Memória: 500 MB mínimo e 3 GB máximo
Volume: 8 GB
- 2 cápsulas para o componente vminsert
o CPU: 500 milicores no mínimo e 1 CPU no máximo
o Memória: 500 MB mínimo e 3 GB máximo
Volume: 8 GB
- 2 cápsulas para os componentes do vmstorage:
o CPU: 500 milicores no mínimo e 1 CPU no máximo
o Memória: 500 MB mínimo e 4 GB máximo
Volume: 1 TB
- 2 cápsulas para o componente vmauth
o CPU: 200 milicores no mínimo e 1 CPU no máximo
o Memória: 128 MB mínimo e 1 GB máximo
- 2 Balanceadores de carga para ALB (Application Load Balancer) tipo vmauth:
o 1 tipo interno para receber as métricas Prometheis que estão no mesmo VPC da VictoriaMetrics;
o 1 tipo voltado para a Internet para receber métricas de outros Prometheis que estão em outros VPCs ou em outro Provedor de Nuvens.
- Série de Tempo Ativo: 2,3 Milhões
- Utilização do espaço em disco: 67 GB (as métricas são giradas a cada 15 dias)
- Taxa de Ingestão: 40,1 K pontos/segundo
- Taxa de solicitações: 134 req/segundo
- Total de Datapoints: 90,3 bilhões (as métricas são giradas a cada 15 dias)
- Utilização da rede:
o 20 Mbps usados apenas para receber métricas de todos os Prometheis.
o 70 Kbps utilizados somente para a verificação de métricas através da Grafana.
Durante as atividades de migração para VictoriaMetrics, também tivemos que desenvolver a Carta do Leme para o componente vmauth. O código para este Helm Chart foi compartilhado no repositório oficial da VictoriaMetrics e também ajudamos a organizar a documentação de outros Helm Charts usando helm-docs. Esta foi uma maneira simples de retribuir e agradecer à comunidade de código aberto.
Se você estiver interessado em fazer um teste com a VictoriaMetrics nos clusters da Kubernetes, recomendamos o uso de Helm Charts que estão disponíveis em: https://github.com/VictoriaMetrics/helm-charts. Para maiores informações, acesse os links que se encontram nas referências.
Há vários painéis disponíveis no site da Grafana para visualizar as métricas internas da VictoriaMetrics, mas recomendamos o uso deste: https://grafana.com/grafana/dashboards/11831.
Considerações finais
Neste tutorial, aprendemos mais sobre um conjunto de ferramentas utilizadas para serviços e aplicações de monitoramento e descobrimos uma solução que pode ser utilizada para o armazenamento centralizado e de longo prazo das métricas coletadas pela Prometheus.
Inicie sua jornada conosco
Estamos prontos para guiar o seu negócio rumo ao futuro, com a solução certa para você se beneficiar do potencial das APIs e integrações modernas.
Conteúdos relacionados
Confira os conteúdos produzidos pela nossa equipe
Sua história de sucesso começa aqui
Conte com nosso apoio para levar as melhores integrações para o seu negócio, com soluções e equipes profissionais que são referência no mercado.