Ferramenta de Monitoramento - Prometheus

Prometheus

Prometheus é um framework de monitoramento e alerta de código aberto. Diferentemente de soluções como Zabbix, ele oferece maior flexibilidade e módulos menos acoplados — é possível configurar seletivamente componentes como alerta e proxy. Tanto o servidor quanto os clientes do Prometheus são fornecidos prontos para uso, sem necessidade de instalação adicional. Os principais módulos do ecossistema incluem: Prometheus Server, Exporters, Pushgateway, PromQL, Alertmanager e interfaces gráficas.

Fluxo de trabalho dos componentes

  • O Prometheus Server coleta métricas periodicamente de Jobs ou Exporters configurados.
  • Ou recebe métricas enviadas pelo Pushgateway.
  • Ou coleta métricas de outros servidores Prometheus.
  • O servidor armazena as métricas localmente, executa regras de alerta (alert.rules) e pode gerar novas séries temporais ou enviar alertas ao Alertmanager.
  • O Alertmanager processa os alertas recebidos conforme as regras do arquivo de configuração e dispara notificações.
  • As métricas são visualizadas em interfaces gráficas.

Características dos componentes do Prometheus

1. Modelo de dados multidimensional
   - Armazena dados de séries temporais.
   - Cada série é diferenciada pelo nome da métrica e pares chave/valor (labels).
   - Todas as métricas podem ter tags multidimensionais arbitrárias.
   - Flexibilidade: não exige formato com ponto separador.
   - Suporte a agregação, corte e fatia.
   - Tipo float64; labels suportam caracteres Unicode.

2. Linguagem de consulta poderosa e flexível (PromQL)
   - Permite consultar e agregar séries temporais em tempo real.
   - Em uma única consulta, é possível multiplicar, somar, concatenar ou calcular percentis de múltiplas métricas.
   - Suporte a correspondência exata e por expressão regular em labels:
     - `=`: seleciona label com string exata.
     - `!=`: seleciona label com string diferente.
     - `=~`: seleciona label cujo valor corresponde à regex.
     - `!~`: seleciona label cujo valor não corresponde à regex.

3. Fácil gerenciamento
   - O Prometheus Server é um binário único que funciona localmente, sem dependência de armazenamento distribuído.

4. Alta eficiência
   - Cada amostra ocupa em média 3,5 bytes.
   - Um único servidor pode processar milhões de métricas.
   - Utiliza modelo pull para coleta, facilitando testes locais e evitando que servidores problemáticos enviem métricas corrompidas.
   - É possível usar Pushgateway para enviar dados ao servidor, além de descoberta de serviço ou configuração estática de targets.
   - Várias interfaces gráficas e boa escalabilidade.
   - Observação: pode haver perda de dados, portanto não é adequado para cenários que exigem 100% de precisão. Excelente para séries temporais e arquiteturas de microsserviços.

Grafana

Grafana é uma ferramenta de análise e visualização de métricas multiplataforma, de código aberto. Permite consultar e visualizar dados coletados, além de configurar notificações baseadas em regras de alerta. Principais características:

  • Diversidade de visualização: gráficos rápidos e flexíveis no cliente; painéis com plugins para diversos tipos de visualização (heatmap, linhas, barras etc.).
  • Fontes de dados: suporte a Prometheus, Elasticsearch e outras.
  • Notificações de alerta: definição visual de regras de alerta com cálculo contínuo e envio de notificações via múltiplos canais.
  • Exibição mista: diferentes fontes de dados no mesmo gráfico, com especificação por consulta e até fontes customizadas.
  • Anotações: enriquecimento de gráficos com eventos de várias fontes; ao passar o mouse sobre um evento, são exibidos metadados completos.
  • Filtros: criação dinâmica de pares chave/valor que se aplicam automaticamente a todas as consultas da fonte de dados.

Exporter

Exporter é o termo genérico para componentes de coleta de dados do Prometheus. Eles coletam métricas de hosts alvo e as convertem para o formato aceito pelo Prometheus. A equipe oficial do Prometheus desenvolve e mantém diversos Exporters: Node, Nginx, Redis, MQ, mysqld, memcached, consul, entre outros.

Node Exporter

Diferentemente de agentes tradicionais, o Node Exporter não envia dados para um servidor central; ele aguarda que o servidor Prometheus faça a coleta (pull).

  • Endereço padrão de coleta: http://host_ip:9100/metrics (onde host_ip é o IP da máquina onde o Node Exporter está implantado).
  • Coleta métricas do nível de sistema operacional: loadavg, filesystem, meminfo e outras informações básicas de monitoramento.
  • Em clusters Kubernetes, é implantado em cada nó para coletar métricas do host e dos contêineres.

Instalação do Prometheus

Download

Implantação com binário (Linux)

Ambiente: CentOS Linux release 7.8.2003 (Core)
Prometheus: prometheus-2.42.0.linux-amd64.tar.gz

Preparação

# Criar usuário prometheus
[root@200 ~]# useradd prometheus && echo "prometheus:prometheus"|chpasswd && chage -M 99999 prometheus

# Desabilitar firewall (opcional para teste)
[root@200 prometheus]# systemctl stop firewalld.service
[root@200 prometheus]# systemctl disable firewalld.service

Verificar e extrair o pacote

[prometheus@200 ~]$ sha256sum prometheus-2.42.0.linux-amd64.tar.gz
422dab055ed9c7bcaff52b718705f9192c6fac0de6b7e78dd278e70ee2663dcc

[prometheus@200 ~]$ tar -zxf prometheus-2.42.0.linux-amd64.tar.gz
[prometheus@200 ~]$ cd prometheus-2.42.0.linux-amd64/
[prometheus@200 prometheus-2.42.0.linux-amd64]$ ls -l
total 223908
drwxr-xr-x 2 prometheus prometheus        38 Feb  1 16:23 console_libraries
drwxr-xr-x 2 prometheus prometheus       173 Feb  1 16:23 consoles
-rw-r--r-- 1 prometheus prometheus     11357 Feb  1 16:23 LICENSE
-rw-r--r-- 1 prometheus prometheus      3773 Feb  1 16:23 NOTICE
-rwxr-xr-x 1 prometheus prometheus 118789213 Feb  1 15:56 prometheus
-rw-r--r-- 1 prometheus prometheus       934 Feb  1 16:23 prometheus.yml
-rwxr-xr-x 1 prometheus prometheus 110468077 Feb  1 15:58 promtool

Iniciar o Prometheus

[prometheus@200 prometheus-2.42.0.linux-amd64]$ nohup ./prometheus > nohup-prometheus.log 2>&1 &
[1] 3335

[prometheus@200 prometheus-2.42.0.linux-amd64]$ cat nohup-prometheus.log
nohup: ignoring input
ts=2023-02-02T16:44:46.602Z caller=main.go:512 level=info msg="No time or size retention was set so using the default time retention" duration=15d
ts=2023-02-02T16:44:46.602Z caller=main.go:556 level=info msg="Starting Prometheus Server" mode=server version="(version=2.42.0, branch=HEAD, revision=225c61122d88b01d1f0eaaee0e05b6f3e0567ac0)"
...
ts=2023-02-02T16:44:46.607Z caller=web.go:561 level=info component=web msg="Start listening for connections" address=0.0.0.0:9090
ts=2023-02-02T16:44:46.610Z caller=main.go:993 level=info msg="Starting TSDB ..."
...
ts=2023-02-02T16:44:46.768Z caller=main.go:978 level=info msg="Server is ready to receive web requests."

Após iniciar, acesse: http://192.168.56.200:9090/ (substitua pelo IP real).

Informações relevantes sobre configuração

  • Arquivo principal: prometheus.yml – seções: global, alerting, rule_files, scrape_configs.
  • Uso da interface web nativa.
  • Linguagem PromQL.
  • Interface Grafana, obtenção e importação de dashboards.
  • Descoberta automática de targets (file_sd_configs, service discovery).
  • Recarregamento da configuração: parâmetro --web.enable-lifecycle e configuração file_sd_configs.
  • Alertmanager: instalação, inicialização, arquivo de configuração, endereço de acesso, regras de alerta.
  • Exporters comuns: node_exporter, mysqld_exporter, redis_exporter, etc.

Portas padrão

9093   Alertmanager
9090   Prometheus
3000   Grafana

9100   node_exporter
9121   redis_exporter
...

Tags: Prometheus Grafana Node Exporter alertmanager PromQL

Publicado em 6-21 22:52