4.1 Instalando o Prometheus
Prometheus é um sistema de monitoramento e alerta poderoso de código aberto, desenvolvido para coletar e armazenar métricas de várias fontes, incluindo containers Docker. Nesta aula, vamos revisar em detalhes o processo de configuração do monitoramento de containers com o Prometheus, incluindo instalação, configuração de coleta de métricas e integração com Docker.
1. Baixando e instalando o Prometheus
Primeiro, faça o download da versão mais recente do Prometheus no site oficial:
wget https://github.com/prometheus/prometheus/releases/download/v2.30.3/prometheus-2.30.3.linux-amd64.tar.gz
Extraia o arquivo:
tar xvfz prometheus-*.tar.gz
cd prometheus-*
Mova os arquivos binários para /usr/local/bin
:
sudo mv prometheus /usr/local/bin/
sudo mv promtool /usr/local/bin/
4.2 Configurando o arquivo de configuração do Prometheus
O Prometheus usa o arquivo de configuração prometheus.yml
pra definir as fontes de métricas e as configurações de coleta de dados. Cria ou edita o arquivo prometheus.yml
:
global:
scrape_interval: 15s # Intervalo de coleta de métricas
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'cadvisor'
static_configs:
- targets: ['localhost:8080']
Esse arquivo de configuração inclui dois trabalhos (job):
prometheus
: pra coletar métricas do próprio Prometheus.cadvisor
: pra coletar métricas do cAdvisor, que será usado pra monitorar os contêineres Docker.
5.3 Executando o Prometheus
Inicie o Prometheus usando o arquivo de configuração criado:
prometheus --config.file=prometheus.yml
O Prometheus estará disponível no endereço http://localhost:9090.
5.4 Instalando e configurando o cAdvisor
cAdvisor
(Container Advisor) é uma ferramenta de monitoramento de contêineres que coleta e fornece métricas para contêineres Docker. Para usá-lo, faça o seguinte:
Inicie o cAdvisor
em um contêiner Docker:
docker run -d \
--name=cadvisor \
--volume=/:/rootfs:ro \
--volume=/var/run:/var/run:ro \
--volume=/sys:/sys:ro \
--volume=/var/lib/docker/:/var/lib/docker:ro \
--publish=8080:8080 \
--privileged \
gcr.io/cadvisor/cadvisor:latest
cAdvisor
estará disponível no endereço http://localhost:8080.
5.5 Atualizando a configuração do Prometheus para o cAdvisor
Certifique-se de que a configuração do Prometheus inclui uma job para o cAdvisor. Um exemplo de configuração foi mostrado anteriormente.
Reinicie o Prometheus para aplicar as mudanças:
prometheus --config.file=prometheus.yml
5.6 Verificando a coleta de métricas
Acesse a interface web do Prometheus no endereço http://localhost:9090 e certifique-se de que o Prometheus está coletando métricas do cAdvisor. Para isso, execute a query no Prometheus:
container_cpu_usage_seconds_total
Você deve ver os dados coletados dos containers Docker.
5.7 Adicionando métricas adicionais
Você pode adicionar métricas adicionais no arquivo de configuração do Prometheus para coletar mais dados sobre seus containers. Exemplo de métricas adicionais:
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
Para isso, será necessário instalar o node_exporter
, que fornece métricas sobre o estado do sistema host.
Baixe e instale o node_exporter
:
wget https://github.com/prometheus/node_exporter/releases/download/v1.2.2/node_exporter-1.2.2.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
sudo mv node_exporter-1.2.2.linux-amd64/node_exporter /usr/local/bin/
Inicie o node_exporter:
node_exporter &
Agora o node_exporter
estará disponível no endereço http://localhost:9100.
5.8 Criando regras de alerta
O Prometheus suporta a criação de regras de alerta para notificar administradores sobre problemas. Adicione regras de alerta no arquivo de configuração prometheus.yml
:
rule_files:
- "alert.rules"
alerting:
alertmanagers:
- static_configs:
- targets:
- "localhost:9093"
Crie o arquivo alert.rules
com um exemplo de regras:
groups:
- name: example
rules:
- alert: HighCPUUsage
expr: container_cpu_usage_seconds_total{job="cadvisor"} > 0.85
for: 1m
labels:
severity: warning
annotations:
summary: "Uso alto de CPU detectado"
description: "O container está usando mais de 85% da CPU por mais de 1 minuto."
GO TO FULL VERSION