Usando PromQL

Use o Prometheus Query Language (PromQL) para selecionar e agregar dados de métrica da série temporal no Prometheus.

Para mais informações sobrePromQL, Veja o documentação de código aberto.

Criando uma consulta PromQL

Crie uma consulta PromQL para uma métrica em um painel existente.

  1. De Painel de monitoramento, clique Abrir painel para sua instância de serviço.
  2. Em Painéis, selecione o painel que contém as métricas que você deseja consultar.
  3. Para uma área no painel, clique no ícone Editar.
  4. Selecione o tipo de consulta PromQL.
  5. No formulário de consultas, insira dados de Exibição, como o nome da consulta e no nome da série temporal.
  6. Digite sua Consulta PromQL, como avg(avg_over_time(host_cpu_used_percent[$__interval])) by(kubernetes_cluster_name). Especifique os campos a seguir em sua consulta:
    • Métrica: especifique a métrica que você deseja consultar, como host_cpu_used_percent. Nota: Os valores gerados na tabela são as métricas mais recentes.
    • Intervalo de tempo: Especifique um intervalo de tempo, como 5m. Para usar o intervalo de tempo selecionado na IU, especifique $__range. Para usar o intervalo de tempo que é baseado no intervalo selecionado na IU, especifique $__interval. As variáveis $__range e $__interval nessa consulta são atualizadas automaticamente conforme o intervalo de tempo é alterado na IU. Para obter mais informações, consulte Aplicando escopos de painel em consultas PromQL.
    • Segmentação: Escolha um valor para segmentar os dados agredados PromQL, como kubernetes_cluster_name.
  7. Clique em Executar consulta.
  8. Refine os resultados configurando algumas Opções adicionais, como as unidades nas quais os dados são retornados e como os dados serão exibidos.

Aplicando escopos de painel

Para definir o escopo de um painel criado a partir de uma consulta PromQL, deve-se usar uma variável de escopo na consulta.

Existem duas variáveis predefinidas para escopos baseados em tempo que você pode especificar na consulta. Essas variáveis serão atualizadas automaticamente conforme o intervalo de tempo indicado é alterado na IU.

  • $__range: Representa o intervalo de tempo que é selecionado na IU do painel. Por exemplo, você poderá usar essa variável para calcular uma média para o intervalo de tempo selecionado.
  • $__interval: Representa o intervalo que é baseado no intervalo de tempo que foi selecionado na IU do painel. Por exemplo, você poderá usar essa variável para adaptar o intervalo de tempo para diferentes operações, como a taxa ou média ao longo do tempo.

Por exemplo, se você usar a consulta a seguir para retornar a porcentagem de uso da CPU para todos os hosts:

avg_over_time(host_cpu_used_percent[$__interval])

Essa consulta usa a variável $__interval, que define o escopo dos dados para o intervalo de tempo dinâmico com base no intervalo de tempo selecionado na IU do painel.

É possível também especificar suas próprias variáveis na consulta para definir o escopo da saída. Por exemplo, para ampliar o escopo da consulta anterior para um rótulo específico, como hostname, você deve primeiro definir uma variável de escopo no nível do painel. Então, é possível especificar essa variável na consulta:

avg_over_time(host_cpu_used_percent{host_name=$hostname}[$__interval])

Usando rótulos

Quando você executa consultas PromQL, os dados são retornados com um conjunto mínimo de rótulos. Para incluir mais rótulos, como um nome de cluster, use uma operação de correspondência de vetor.

O Prometheus retorna métricas de informações que têm um valor de 1 com vários rótulos. Juntar os rótulos de uma métrica de informações com uma métrica de não informações pode fornecer insights úteis, como o valor de uma métrica em um aplicativo. É possível usar uma operação de correspondência de vetores, que é similar a uma junção de SQL, para incluir os rótulos de informações em seus dados de métrica.

Exemplo: Filtrando uma métrica de aplicativo por cluster

Neste exemplo, uma métrica que é retornada pelo aplicativo é filtrada pelo cluster. O PromQL agrega um valor dessa métrica para um cluster ao ter apenas um cluster selecionado no escopo.

sum (myapp_metric * on (container_id) kube_pod_container_info{cluster=$cluster})

Essa consulta:

  • Filtra a métrica de informações kube_pod_container_info para somente um cluster específico ($cluster, que é definido como uma variável de painel) baseado no rótulo do cluster e para uma série tempotal específica.
  • Corresponde à métrica de não informação myapp_metric para a métrica de informações kube_pod_container_info quando o rótulo container_id tiver o mesmo valor. Os valores são multiplicados, mas como a métrica de informações possui um valor de 1, o resultado segue inalterado. O rótulo do cluster foi incluído aos dados resultantes
  • Agrega o valor da série temporal myapp_metric usando a função sum e retorna o resultado.

Exemplo: Filtrando o uso médio da CPU por conta e região

Neste exemplo, o uso médio da CPU (percent) é calculado para uma IBM Cloud conta ou região específica.

avg by(region,account_id) (host_cpu_used_percent * on (host_mac) group_left(region,account_id) sysdig_cloud_provider_info{account_id=~$account, region=~$region})

Essa consulta:

  • Filtra a métrica de informações sysdig_cloud_provider_info apenas para uma região específica ($region) e conta ($account) que são definidas como variáveis de painel, baseadas na region e no rótulo account_id.
  • Corresponde à métrica de não informação host_cpu_used_percent para a métrica de informações sysdig_cloud_provider_info quando o rótulo host_mac tiver o mesmo valor. Os valores são multiplicados, mas como a métrica de informações possui um valor de 1, o resultado segue inalterado. Os rótulos de região e conta são incluídos nos dados resultantes.
  • Calcula a média das novas métricas por conta e região.

Aamostra cURL para extrair a métrica mais recente

Para obter o valor mais recente de uma métrica, especifique somente o nome da métrica. O valor mais recente que foi gerado em menos de cinco minutos atrás foi retornado.

Por exemplo, para obter o valor mais recente de host_cpu_used_percent:

curl <SYSDIG_REST_API_ENDPOINT>/prometheus/api/v1/query?query=sysdig_host_cpu_used_percent -H "Authorization: $AUTH_TOKEN" -H "IBMInstanceID: $GUID" -H "SysdigTeamID: $TEAM_ID" -H "content-type: application/json"

em que

  • <SYSDIG_REST_API_ENDPOINT>indica o terminal de destino pela chamada de API de REST. Para obter mais informações, consulte Monitorando terminais da API de REST. Por exemplo, o terminal público para uma instância que está disponível em us-south é o seguinte: https://us-south.monitoring.cloud.ibm.com/api

  • É possível transmitir vários cabeçalhos usando -H.

    Authorization e IBMInstanceID são cabeçalhos que são necessários para autenticação.

    SysdigTeamID é opcional. Ao especificar esse cabeçalho, é possível limitar a solicitação aos dados e aos recursos disponíveis para a equipe especificada.

    Para obter um AUTH_TOKEN e o GUID, consulte Cabeçalhos para tokens do IAM.

Todos os painéis suportam a API PromQL completa. Para obter mais informações sobre o que é possível comPromQL, Veja o Prometheus documentação.