Configuração do Node Exporter

DockerBeginner
Pratique Agora

Introdução

Este laboratório expande seu monitoramento para um serviço externo. Você configurará o Node Exporter, um exportador Prometheus para métricas de hardware e sistema operacional. A configuração fornecerá um contêiner Prometheus em execução do laboratório anterior. Você executará um contêiner Node Exporter e o adicionará como um novo alvo em seu prometheus.yml. Ao final deste laboratório, você será capaz de consultar métricas de sistema em nível de host dentro da interface do Prometheus.

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 95%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Baixar Imagem Docker do Node Exporter

Nesta etapa, você baixará a imagem oficial do Docker para o Node Exporter. O Node Exporter é um exportador Prometheus que expõe uma ampla variedade de métricas relacionadas a hardware e kernel da máquina host.

Para começar, baixe a imagem prom/node-exporter do Docker Hub. Abra um terminal e execute o seguinte comando:

docker pull prom/node-exporter

Este comando contata o registro do Docker Hub e baixa a versão mais recente da imagem do Node Exporter para sua máquina local. Você verá uma saída mostrando o progresso do download para cada camada da imagem.

Saída esperada:

Using default tag: latest
latest: Pulling from prom/node-exporter
Digest: sha256:a5579e72377a6053359058893b80f4f47c55d761457d685343b8e797859a159b
Status: Image is up to date for prom/node-exporter
docker.io/prom/node-exporter

Executar Contêiner Node Exporter na Porta 9100

Agora que você tem a imagem, vamos executar o Node Exporter como um contêiner. Exporá suas métricas na porta 9100, que é a porta padrão para o Node Exporter.

Execute o seguinte comando para iniciar o contêiner e colocá-lo na mesma rede Docker que o Prometheus:

docker run -d -p 9100:9100 --name node-exporter --network monitoring prom/node-exporter

Vamos detalhar este comando:

  • -d: Executa o contêiner em modo detached (desanexado), o que significa que ele roda em segundo plano.
  • -p 9100:9100: Mapeia a porta 9100 do host para a porta 9100 do contêiner.
  • --name node-exporter: Atribui um nome memorável ao contêiner para fácil referência.
  • prom/node-exporter: A imagem a ser usada para criar o contêiner.

Você pode verificar se o contêiner está em execução com o comando docker ps:

docker ps

Você deverá ver node-exporter na lista de contêineres em execução. Opcionalmente, confirme a conexão de rede com:

docker inspect node-exporter --format '{{.HostConfig.NetworkMode}}'

A saída deve ser monitoring.

Saída esperada:

CONTAINER ID   IMAGE                  COMMAND                  CREATED          STATUS          PORTS                                       NAMES
...            prom/node-exporter     "/bin/node_exporter"     A few seconds ago   Up a few seconds   0.0.0.0:9100->9100/tcp, :::9100->9100/tcp   node-exporter
...            prom/prometheus        "/bin/prometheus --c…"   About a minute ago   Up about a minute   0.0.0.0:9090->9090/tcp, :::9090->9090/tcp   prometheus

Atualizar prometheus.yml para Adicionar o Alvo Node Exporter

Nesta etapa, você configurará o Prometheus para coletar métricas do contêiner Node Exporter recém-executado. Isso é feito editando o arquivo de configuração prometheus.yml para adicionar um novo job de coleta (scrape job).

Primeiro, abra o arquivo prometheus.yml localizado no diretório do seu projeto usando o editor nano:

nano ~/project/prometheus.yml

Agora, adicione uma nova configuração de job para o Node Exporter sob a seção scrape_configs. Seu arquivo final deve se parecer com isto. Certifique-se de que a indentação esteja correta, pois o YAML é sensível a ela.

global:
  scrape_interval: 15s

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

  - job_name: "node_exporter"
    static_configs:
      - targets: ["node-exporter:9100"]

Veja o que o novo bloco faz:

  • job_name: 'node_exporter': Dá um nome a este job de coleta, que será usado para rotular as métricas coletadas.
  • targets: ['node-exporter:9100']: Informa ao Prometheus onde encontrar o Node Exporter. Usamos o nome do contêiner porque o Docker fornece resolução DNS interna entre contêineres na mesma rede. O nome de host localhost é escopado para cada contêiner, portanto, não pode ser usado para alcançar outros contêineres.

Após editar, salve o arquivo e saia do nano pressionando Ctrl+X, depois Y e, em seguida, Enter.

Reiniciar o Contêiner Prometheus com Configuração Atualizada

Para que o Prometheus carregue a nova configuração, você precisa reiniciar seu contêiner. O volume mount que configuramos anteriormente garante que o contêiner verá o arquivo prometheus.yml atualizado após a reinicialização.

Execute o seguinte comando para reiniciar o contêiner Prometheus:

docker restart prometheus

Este comando para graciosamente e, em seguida, inicia o contêiner chamado prometheus. Após alguns segundos, o Prometheus estará em execução com a nova configuração.

Agora, vamos verificar a alteração na interface do Prometheus.

  1. Na interface do LabEx, clique no botão + (Nova Aba), escolha Web Service e insira 9090 para a porta.
  2. Quando a nova aba abrir, você deverá ver a página inicial do Prometheus Expression Browser.
  3. Clique no menu "Status" na barra de navegação superior e, em seguida, selecione "Targets".
Página de targets do Prometheus mostrando status UP

Você deverá agora ver dois targets listados: prometheus e node_exporter. Ambos devem ter o estado "UP", indicando que o Prometheus está coletando métricas com sucesso tanto de si mesmo quanto do Node Exporter.

Consultar a Métrica node_cpu_seconds_total na Interface do Usuário (UI)

A etapa final é confirmar que o Prometheus está ingerindo com sucesso as métricas do Node Exporter executando uma consulta.

Navegue de volta para a página principal "Graph" na interface do Prometheus clicando no link "Graph" na barra de navegação. No campo de entrada "Expression", digite o seguinte nome de métrica:

node_cpu_seconds_total

Esta métrica representa o tempo total em segundos que a CPU passou em vários modos (por exemplo, ocioso, usuário, sistema).

Interface do Prometheus mostrando os resultados da consulta node_cpu_seconds_total

Clique no botão "Execute". Se a conexão for bem-sucedida, você verá uma tabela de resultados abaixo do gráfico. Cada resultado corresponde a um núcleo de CPU e modo diferentes. Ver esses resultados confirma que todo o seu pipeline de monitoramento está funcionando corretamente, desde a coleta de dados pelo Node Exporter até a ingestão e armazenamento pelo Prometheus.

Você pode alternar entre as visualizações "Table" e "Graph" para visualizar os dados.

Resumo

Parabéns! Você expandiu com sucesso sua configuração de monitoramento adicionando um serviço externo. Neste laboratório, você aprendeu a executar o Prometheus Node Exporter oficial em um contêiner Docker, configurar uma instância do Prometheus para coletar métricas deste novo alvo e verificar a coleta de dados consultando métricas em nível de host. Esta é uma habilidade fundamental para construir uma pilha de observabilidade abrangente, permitindo que você obtenha insights profundos sobre o desempenho e a saúde de seus sistemas.