mobicareofficial
Published in

mobicareofficial

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.

Exemplo de métricas do node exporter

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!

Faça parte do nosso time. 😉

--

--

Se você gosta de inovar, trabalhar com tecnologia de ponta e está sempre buscando conhecimento, somos um match perfeito! Vem trabalhar com a gente 😉 bit.ly/mobicarreiras

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store