Conheça o Prometheus: conjunto de ferramentas de monitoramento e alertas para serviços e aplicações

O que é o Prometheus?
Prometheus é um conjunto de ferramentas de monitoramento e alertas para serviços e aplicações. Coleta métricas em um determinado intervalo de tempo, exibe os resultados, e pode adicionar alertas, caso alguma condição seja observada como verdadeira.
Arquitetura do Prometheus retirada da própria documentação:

Principais características
- É um modelo de dados multi-dimensional (time series);
- Possui uma linguagem própria(PromQL) para queries de dados em formato time series;
- Totalmente autônomo, sem dependência de armazenamento externo;
- A coleta das métricas ocorre com um modelo pull e via HTTP;
- A definição dos serviços a serem monitorados pode ser feita através de uma configuração estática ou através de descoberta;
- Possui vários modos de suporte a gráficos e painéis;
- Serve como datasource ao Grafana.
Conceitos
- MÉTRICAS: Objeto que se deseja monitorar.
- http_requests_total
- http_request_duration_seconds - LABELS: Variações de uma métrica.
- http_requests_total{method=”post”, code=”200”
- http_requests_total{method=”get”, code=”200”} - SÉRIE TEMPORAL: Cada conjunto de métricas e labels forma uma série temporal.
- http_requests_total{method=”post”, code=”200”}
- http_requests_total{method=”post”, code=”404”}
- http_requests_total{method=”post”, code=”500”} - SAMPLES: São cada “observação” da série temporal. Contém o timestamp (quando o evento ocorreu) e o valor que foi observado naquele instante de tempo.
- SCRAPES: É o ato de ir até aplicação buscar as métricas.
- URL padrão: http://<aplicação>/metrics
Tipos de métricas
Existem quatro tipos de métricas. São elas:
- COUNTER: Um incrementador. No restart da aplicação pode zerar.
- Exemplo: api_requests_total - GAUGE: Pode aumentar ou diminuir.
- Exemplo: momery_usage_bytes - HISTOGRAM E SUMMARY: Usados para medir a distribuição.
Coletando métricas
Existem diversas libs criadas pela comunidade para usar no código fonte da aplicação para fazer o trabalho da exportação das métricas, como o Micrometer com Spring Boot.
Há casos em que não queremos só coletar métricas de aplicações, mas também serviços onde não conseguimos alterar o código fonte, como um servidor de mysql, por exemplo. Para estes casos, é usado o conceito de exporter, que é uma camada intermediária entre o Prometheus e o que se deseja monitorar. Já existem exporters na internet feitos pela comunidade.
Instalei o Node Exporter, um dos exporters mais famosos, para coletar dados do host. Esses dados ficam expostos em http://localhost:9100/metrics.

Coletando métricas para serviços de curta duração com o Pushgateway

Como o Prometheus usa o modelo pull, precisamos que o serviço fique sempre disponível para fazer o scrapping das métricas, mas para serviços de curta duração como CronJobs, K8s Batch, etc, não é possível usar este modelo para coletá-las. Por isso, as enviamos para o Pushgateway, que é uma ferramenta do Prometheus, para que o ele faça o pull dessas métricas ao Pushgateway e não na aplicação.
Olá! Me chamo Luiz Felipe da Silva, sou desenvolvedor na Mobicare e movido a tecnologia. Estou sempre em busca de aprender e contribuir com novas tecnologias e desafios.
A Mobicare e a Akross combinam os Melhores Talentos, Tecnologias de Ponta, Práticas Agile e DevOps com Capacidades Operacionais avançadas para ajudar Operadoras Telecom e grandes empresas a gerarem novas receitas e a melhorarem a experiência dos seus próprios clientes.
Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito!