Marcio Cunha

Como exportar métricas do Prometheus para JSON no terminal

Aprenda a técnica objetiva para extrair dados de monitoramento diretamente da API do Prometheus utilizando curl e jq para auditorias rápidas.

Marcio Cunha•4 min
Também disponível em:EnglishEspañol
Resumo
  • A API HTTP do Prometheus expõe pontos finais estruturados que dispensam navegadores pesados para diagnósticos rápidos.
  • O comando curl resgata o payload bruto de monitoramento de forma automatizada direto pela linha de comando.
  • A ferramenta jq processa filtros complexos e formata a resposta crua em uma árvore JSON legível.
  • Auditorias pontuais evitam a necessidade de abrir painéis lentos em momentos de alta criticidade operacional.
  • Consultas bem direcionadas ao Instant Query reduzem o consumo de rede e isolam a métrica exata de um sistema.

Por que extrair métricas do Prometheus pelo terminal

O Prometheus é uma ferramenta popular de monitoramento que armazena dados de uso de sistemas, como o consumo de processador e memória de servidores. Em momentos de lentidão ou falhas graves, abrir interfaces gráficas complexas pode ser demorado e ineficiente. Conhecer caminhos alternativos ajuda na resolução de problemas, especialmente quando precisamos cruzar dados de infraestrutura com outras ferramentas, como fazemos ao converter logs do Nginx em JSON pelo terminal para análises unificadas.

Na prática, isso significa que podemos consultar o estado exato de qualquer aplicação em frações de segundo usando apenas ferramentas nativas de linha de comando. Essa abordagem direta evita gargalos operacionais e garante que o engenheiro tenha acesso imediato aos números brutos, sem dependência de dashboards que possam estar indisponíveis justamente quando o sistema cai.

Entendendo a API HTTP do Prometheus

Por trás de toda interface visual do Prometheus existe uma API HTTP robusta, um canal de comunicação que permite que outros softwares conversem com o banco de dados de métricas. Sempre que um painel é atualizado, ele envia requisições para essa mesma API. Compreender esse funcionamento abre portas para automações e checagens manuais extremamente ágeis durante auditorias de infraestrutura.

Existem dois tipos principais de consultas que podemos fazer via API: a consulta instantânea (Instant Query), que retorna o valor atual de uma métrica em um dado milissegundo, e a consulta por intervalo (Range Query), que traz um histórico ao longo do tempo. Para auditorias rápidas e verificação de status atual, a consulta instantânea é a escolha ideal por ser mais leve e direta ao ponto.

Fazendo a primeira requisição com o comando curl

O comando curl é um utilitário universal presente em quase todos os sistemas operacionais modernos, usado para transferir dados através de endereços web. Ele serve como nossa ponte inicial para buscar o conteúdo gerado pelo servidor de monitoramento. Se você já precisou investigar um container com erro CrashLoopBackOff que precisa de depuração no Linux, sabe que o terminal é o melhor lugar para respostas rápidas.

Para buscar uma métrica específica, apontamos o curl para a porta padrão do Prometheus, geralmente a 9090. Veja como estruturar o comando básico no seu terminal:

curl -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=up'

Esse comando realiza uma busca pelo indicador up, que nos diz se os serviços monitorados estão respondendo ou fora do ar. O parâmetro --data-urlencode garante que caracteres especiais na nossa busca não quebrem a requisição ao serem enviados pela rede.

Formatando a saída bruta com a ferramenta jq

O retorno padrão da API do Prometheus vem em formato JSON, mas em um bloco único e densamente compactado que dificulta a leitura humana direta. É aqui que entra o utilitário jq, um processador de arquivos estruturados que atua como um canivete suíço para fatiar e colorir dados diretamente na tela preta do terminal.

Combinando o curl com o jq, transformamos uma resposta ilegível em uma estrutura organizada e colorida. Veja o exemplo prático de como aplicar essa combinação no seu dia a dia de administração de sistemas:

curl -sG 'http://localhost:9090/api/v1/query' --data-urlencode 'query=up' | jq '.'

O caractere de barra vertical, conhecido como pipe, pega o resultado gerado pelo comando anterior e o entrega imediatamente para o processamento do jq. O ponto entre aspas simples instrui a ferramenta a exibir todo o conteúdo aplicando indentação e destaque visual por cores.

Podemos ir além e extrair apenas a parte útil da resposta, ignorando metadados desnecessários que poluem a tela durante uma auditoria urgente. O filtro do jq permite navegar pelas chaves do documento JSON de maneira cirúrgica:

curl -sG 'http://localhost:9090/api/v1/query' --data-urlencode 'query=node_memory_Active_bytes' | jq '.data.result[] | {metric: .metric.instance, value: .value[1]}

Esse comando mais refinado isola o endereço da máquina monitorada e o valor exato da memória ativa, descartando informações repetitivas e entregando um relatório limpo para o operador.

Automatizando auditorias rápidas de infraestrutura

Quando precisamos auditar dezenas de servidores, criar pequenos scripts de linha de comando economiza horas de trabalho repetitivo. Podemos salvar os dados extraídos em arquivos locais ou passá-los por filtros adicionais para identificar quais nós da rede estão estourando o limite de uso de recursos.

Essa flexibilidade transforma o terminal em um painel de controle pessoal e customizável, perfeitamente adaptado ao fluxo de trabalho de cada engenheiro. Em vez de navegar por menus extensos, um único comando salvo no histórico resolve a checagem de saúde do ambiente.

Considerações finais

A extração direta de métricas do Prometheus utilizando comandos simples do sistema representa uma habilidade valiosa para qualquer profissional de tecnologia. Dominar o uso combinado de requisições web e processadores de texto estruturado garante autonomia total diante de falhas complexas de infraestrutura. Com essa abordagem enxuta, diagnósticos que antes exigiam ferramentas pesadas passam a ser resolvidos instantaneamente na tela do terminal.