Introdução
Bem-vindo a este laboratório prático sobre os conceitos básicos do PromQL. Prometheus é um poderoso kit de ferramentas de monitoramento e alerta de código aberto, e sua linguagem de consulta, PromQL, está no centro de seu poder. O PromQL permite selecionar e agregar dados de séries temporais em tempo real.
Neste laboratório, você trabalhará com um ambiente pré-configurado consistindo em um servidor Prometheus que está coletando ativamente métricas de um Node Exporter. Seu objetivo é aprender a sintaxe fundamental do PromQL para consultar esses dados, começando com seleções de métricas simples e progredindo para consultas mais avançadas usando funções e filtros.
Compreender o Ambiente Fornecido
Nesta etapa, você se familiarizará com o ambiente do laboratório. O processo de configuração já iniciou dois contêineres Docker para você. Você não precisa realizar nenhuma configuração.
Os dois contêineres são:
node-exporter: O propósito deste contêiner é expor uma ampla variedade de métricas relacionadas a hardware e kernel da máquina host em que está sendo executado.prometheus: Este é o próprio servidor Prometheus. Ele está configurado para "escanear" (coletar) as métricas donode-exportere armazená-las em seu banco de dados de séries temporais.
Você pode verificar se ambos os contêineres estão em execução executando o comando docker ps no terminal.
docker ps
Você deverá ver uma saída semelhante à seguinte, listando ambos os contêineres prometheus e node-exporter com o status "Up".
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
486db39ca176 prom/prometheus "/bin/prometheus --c…" 9 seconds ago Up 8 seconds 0.0.0.0:9090->9090/tcp, :::9090->9090/tcp prometheus
3f02110c8fde prom/node-exporter "/bin/node_exporter" 11 seconds ago Up 8 seconds 0.0.0.0:9100->9100/tcp, :::9100->9100/tcp node-exporter
Isso confirma que sua pilha de monitoramento está pronta. Na próxima etapa, você acessará a interface do usuário do Prometheus para começar a consultar essas métricas.
Acessar o Expression Browser na UI do Prometheus
Nesta etapa, você acessará a interface web do Prometheus e localizará o Navegador de Expressões (Expression Browser), que é a ferramenta principal para executar consultas PromQL.
O servidor web do contêiner Prometheus é executado na porta 9090, e o ambiente do laboratório o torna automaticamente acessível para você.
- Clique no botão
+na interface do LabEx e escolha Web Service. - Insira
9090para a porta e abra a nova aba que aparecer.
Esta ação abre a UI do Prometheus em uma aba separada dentro do seu ambiente de laboratório. Por padrão, você deverá acessar a página Graph. Nesta página, você verá um campo de texto rotulado como Expression. Este é o Navegador de Expressões, onde você inserirá e executará todas as suas consultas PromQL para este laboratório.

Agora que você sabe onde executar as consultas, está pronto para escrever a sua primeira.
Executar Consulta Básica como node_cpu_seconds_total
Nesta etapa, você executará sua primeira consulta PromQL básica para selecionar uma métrica. A consulta mais simples em PromQL é apenas o nome de uma métrica. Isso selecionará todas as séries temporais que possuem esse nome de métrica.
Navegue até o Navegador de Expressões na UI do Prometheus que você abriu na etapa anterior.
- No campo de entrada Expression, digite o seguinte nome de métrica:
node_cpu_seconds_total
- Clique no botão Execute.
Após executar, observe os resultados na visualização Table abaixo do gráfico. Você verá uma lista de séries temporais.
node_cpu_seconds_total{cpu="0", instance="node-exporter:9100", job="node", mode="idle"} 3456.78
node_cpu_seconds_total{cpu="0", instance="node-exporter:9100", job="node", mode="iowait"} 12.34
node_cpu_seconds_total{cpu="0", instance="node-exporter:9100", job="node", mode="system"} 56.78
...
Vamos detalhar este resultado:
node_cpu_seconds_total: Este é o nome da métrica. Ele representa umcounter(contador) que rastreia o número total de segundos que a CPU passou em vários modos.{cpu="0", mode="idle", ...}: Estes são os rótulos (labels). Rótulos são pares chave-valor que identificam unicamente uma série temporal. Aqui, você pode ver diferentes séries para cada núcleo de CPU (cpu="0") e cada modo (mode="idle",mode="system", etc.).3456.78: Este é o valor mais recente registrado para essa série temporal específica. Como é um contador, esse valor só aumentará com o tempo.
Nota: Se você não vir o valor mais recente, clique na caixa de diálogo do Labby no canto direito da página e feche-a temporariamente.
Você consultou com sucesso o Prometheus para todas as séries temporais de uma métrica específica.
Aplicar Função rate e Filtros de Label
Nesta etapa, você refinará sua consulta usando filtros de rótulos e a função rate() para obter dados mais significativos. O valor bruto de um contador geralmente não é útil; geralmente estamos mais interessados em sua taxa de variação.
Primeiro, vamos filtrar os resultados para ver apenas o tempo de CPU gasto no modo idle. Você pode fazer isso adicionando um seletor de rótulo entre chaves {} à sua consulta.
- Insira a seguinte consulta no Navegador de Expressões e execute-a:
node_cpu_seconds_total{mode="idle"}
Esta consulta agora retorna apenas as séries temporais onde o rótulo mode é exatamente idle.
Em seguida, vamos calcular a taxa de variação por segundo para este contador. Para isso, usamos a função rate(). A função rate() precisa saber em qual período de tempo calcular a taxa. Especificamos isso com um seletor de vetor de intervalo (range vector selector), como [5m] para os últimos 5 minutos.
- Agora, modifique sua consulta para envolvê-la na função
rate()e adicione um seletor de intervalo de 5 minutos. Execute a consulta final:
rate(node_cpu_seconds_total{mode="idle"}[5m])
Vamos detalhar esta consulta avançada:
node_cpu_seconds_total{mode="idle"}: Este é o seletor de vetor instantâneo (instant vector selector) que filtra nossa métrica e rótulo desejados.[5m]: Este é o seletor de intervalo (range selector), que informa ao Prometheus para obter todos os pontos de dados dos últimos 5 minutos para as séries temporais selecionadas.rate(...): Esta é a função que pega o intervalo de 5 minutos de dados e calcula a taxa média por segundo na qual o contador aumentou.
O resultado não é mais um valor de contador grande, mas um valor tipicamente entre 0 e 1 (para um único núcleo de CPU). Um valor de 0.95 significaria que, nos últimos 5 minutos, a CPU esteve, em média, 95% ociosa. Esta é uma informação muito mais útil para monitoramento.
Resumo
Parabéns por completar este laboratório sobre os fundamentos do PromQL! Você consultou com sucesso uma instância Prometheus ativa e transformou dados brutos em informações significativas.
Neste laboratório, você aprendeu a:
- Navegar na UI do Prometheus até o Navegador de Expressões.
- Executar consultas básicas para selecionar todas as séries temporais de uma métrica.
- Entender a estrutura de uma série temporal, incluindo seu nome de métrica e conjunto único de rótulos.
- Filtrar séries temporais usando seletores de rótulos (
{...}). - Calcular a taxa de variação de um contador usando a função
rate()e um seletor de vetor de intervalo ([5m]).
Estes são os blocos de construção fundamentais para trabalhar com o Prometheus. A partir daqui, você pode explorar as muitas outras funções e operadores que o PromQL oferece para construir dashboards de monitoramento e alertas poderosos e perspicazes.



