Configuração do Prometheus

DockerBeginner
Pratique Agora

Introdução

Prometheus é um poderoso kit de ferramentas de monitoramento e alerta de código aberto. Seu comportamento é controlado por um arquivo de configuração, geralmente chamado prometheus.yml. Este arquivo define tudo, desde a frequência de coleta de métricas, quais alvos coletar e como lidar com regras de alerta.

Este laboratório é uma continuação do laboratório "Instalação do Prometheus", onde você aprendeu a instalar e executar o Prometheus usando Docker. Agora que você sabe como colocar o Prometheus em funcionamento, este laboratório ensinará os fundamentos da configuração do Prometheus. Você começará inspecionando um contêiner Prometheus em execução com uma configuração padrão. Em seguida, criará seu próprio arquivo prometheus.yml personalizado, iniciará um novo contêiner usando este arquivo e aprenderá a recarregar a configuração sem reiniciar o serviço.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 96%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Verificar se o Contêiner Prometheus Está em Execução

Nesta etapa, verificaremos se o contêiner Prometheus inicial, que foi iniciado pelo script de configuração, está em execução. Este contêiner utiliza a configuração padrão integrada.

Vamos listar todos os contêineres Docker em execução para ver nosso contêiner prometheus-default.

docker ps

Você deverá ver uma saída semelhante a esta, mostrando que um contêiner com o nome prometheus-default está ativo e em execução. A coluna PORTS indica que a porta 9090 no host está mapeada para a porta 9090 no contêiner.

CONTAINER ID   IMAGE                       COMMAND                  CREATED          STATUS          PORTS                                       NAMES
a1b2c3d4e5f6   prom/prometheus     "/bin/prometheus --c…"   15 seconds ago   Up 14 seconds   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   prometheus-default

Isso confirma que nossa instância inicial do Prometheus está ativa. Na próxima etapa, você acessará a interface web do Prometheus para ver a configuração padrão em ação.

Acessar a Interface Web do Prometheus em localhost:9090

Nesta etapa, você acessará a interface web do Prometheus, que agora está em execução e exposta na porta 9090. O ambiente LabEx fornece uma maneira conveniente de acessar serviços web em execução dentro da máquina virtual.

Clique no botão + (Nova Aba) localizado na parte superior da interface do laboratório.

Selecione a opção Web Service e insira 9090 como a porta.

Isso abrirá uma nova aba no navegador conectada aos serviços em execução em seu ambiente de laboratório.

Como mapeamos a porta 9090, a UI do Prometheus estará disponível. Você deverá ver o Prometheus Expression Browser, que é a página principal. Esta interface permite que você escreva e execute consultas PromQL para explorar métricas.

Página inicial do Prometheus Expression Browser

A presença desta página confirma que seu contêiner Prometheus está em execução corretamente e é acessível.

Criar Arquivo prometheus.yml com Configuração Básica de Scrape

Nesta etapa, você criará um arquivo de configuração personalizado do Prometheus chamado prometheus.yml. Este arquivo instruirá o Prometheus sobre o que monitorar.

Agora que você acessou a interface web do Prometheus e confirmou que ela está funcionando, vamos criar um arquivo de configuração personalizado que você pode usar para configurar o Prometheus de acordo com suas necessidades.

Usaremos o editor de texto nano para criar o arquivo no diretório ~/project.

nano prometheus.yml

Agora, copie e cole a seguinte configuração YAML no editor nano. Esta configuração instrui o Prometheus a coletar métricas de si mesmo a cada 5 segundos.

global:
  scrape_interval: 5s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

Vamos detalhar esta configuração:

  • global: Esta seção define parâmetros que são válidos para todas as outras seções de configuração.
  • scrape_interval: Define o tempo padrão entre as coletas (scrapes) para 5 segundos.
  • scrape_configs: Esta seção define o conjunto de alvos e parâmetros para a coleta.
  • job_name: Este é o nome atribuído ao job, que será anexado como um rótulo (label) a qualquer série temporal coletada deste alvo.
  • static_configs: Especifica uma lista de alvos a serem monitorados.
  • targets: Lista os endpoints a serem coletados. Neste caso, é o próprio servidor Prometheus.

Após colar o conteúdo, salve o arquivo e saia do nano pressionando Ctrl+X, depois Y e, finalmente, Enter.

Executar Container do Prometheus com Configuração Montada

Agora que temos nosso arquivo prometheus.yml personalizado, precisamos executar um novo contêiner Prometheus que o utilize. Primeiro, vamos parar e remover o contêiner antigo.

docker stop prometheus-default
docker rm prometheus-default

Em seguida, lançaremos um novo contêiner chamado prometheus-custom. Usaremos o flag -v para montar nosso arquivo local prometheus.yml dentro do contêiner no local esperado /etc/prometheus/prometheus.yml. Também adicionaremos o flag --web.enable-lifecycle para habilitar a API de hot-reloading, que usaremos na próxima etapa.

docker run -d \
  --name prometheus-custom \
  -p 9090:9090 \
  -v ~/project/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --web.enable-lifecycle

Vamos revisar os novos flags:

  • -v ~/project/prometheus.yml:/etc/prometheus/prometheus.yml: Esta é a montagem de volume. Ela mapeia o arquivo prometheus.yml do diretório ~/project da sua máquina host para o caminho /etc/prometheus/prometheus.yml dentro do contêiner. O Prometheus lerá este arquivo na inicialização.
  • --web.enable-lifecycle: Este flag de linha de comando habilita a API HTTP para recarregar a configuração, que pode ser acessada através do endpoint /-/reload.

Você pode verificar se o novo contêiner está em execução:

docker ps

Você deverá ver o contêiner prometheus-custom na lista.

Recarregar Configuração do Prometheus via API

Uma das funcionalidades poderosas do Prometheus é a capacidade de recarregar sua configuração sem uma reinicialização completa, o que evita quaisquer lacunas na coleta de métricas. Isso é possível porque habilitamos a API de ciclo de vida com o flag --web.enable-lifecycle.

Primeiro, vamos modificar nosso arquivo de configuração. Alteraremos o scrape_interval de 5s para 15s.

Abra o arquivo com nano:

nano prometheus.yml

Altere a linha scrape_interval para 15s:

global:
  scrape_interval: 15s ## Alterado de 5s

scrape_configs:
  - job_name: "prometheus"
    static_configs:
      - targets: ["localhost:9090"]

Salve o arquivo e saia do nano (Ctrl+X, Y, Enter).

Agora, em vez de reiniciar o contêiner, enviaremos uma requisição POST para o endpoint /-/reload usando curl. Isso instrui a instância do Prometheus em execução a recarregar sua configuração do arquivo montado.

curl -X POST http://localhost:9090/-/reload

Se a recarga for bem-sucedida, você não verá nenhuma saída. Este sucesso silencioso significa que o Prometheus aplicou a nova configuração.

Verificar Métricas Coletadas na Página de Alvos (Targets)

Nesta etapa final, verificaremos se nossa configuração personalizada está ativa, consultando a interface web do Prometheus.

O ambiente LabEx fornece uma aba "Web Terminal" ou um mecanismo similar para acessar os serviços web em execução dentro da VM. Abra a UI do Prometheus navegando para http://localhost:9090 no navegador fornecido pela interface do laboratório.

Assim que a UI carregar, clique no menu Status na barra de navegação superior e, em seguida, selecione Targets.

Na página Targets, você verá os alvos de coleta definidos em seu arquivo prometheus.yml. Você deverá ver um alvo sob o job prometheus.

  • Endpoint: http://localhost:9090/metrics
  • State: O estado deve ser UP com um fundo verde.
  • Last Scrape / Scrape Duration: Estas colunas mostram quando a última coleta ocorreu e quanto tempo levou. Você pode observar que o tempo entre as coletas é agora de aproximadamente 15 segundos, refletindo a alteração que recarregamos na etapa anterior.
Prometheus Targets Page

Isso confirma que o Prometheus carregou com sucesso nosso arquivo de configuração personalizado, está coletando o alvo especificado e aplicou a recarga da configuração.

Resumo

Parabéns! Você concluiu com sucesso este laboratório sobre configuração do Prometheus.

Neste laboratório, você aprendeu a:

  • Criar um arquivo de configuração prometheus.yml personalizado.
  • Utilizar montagens de volume do Docker (-v) para fornecer uma configuração personalizada a um contêiner Prometheus.
  • Habilitar a API de ciclo de vida do Prometheus para permitir recarga a quente (hot-reloading).
  • Recarregar a configuração do Prometheus em tempo real usando um simples comando curl.
  • Verificar a configuração ativa consultando a página Targets na interface web do Prometheus.

Estas são habilidades fundamentais para gerenciar e operar o Prometheus em qualquer ambiente.