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.
- De Painel de monitoramento, clique Abrir painel para sua instância de serviço.
- Em Painéis, selecione o painel que contém as métricas que você deseja consultar.
- Para uma área no painel, clique no ícone Editar.
- Selecione o tipo de consulta PromQL.
- No formulário de consultas, insira dados de Exibição, como o nome da consulta e no nome da série temporal.
- 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$__rangee$__intervalnessa 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.
- Métrica: especifique a métrica que você deseja consultar, como
- Clique em Executar consulta.
- 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_infopara somente um cluster específico ($cluster, que é definido como uma variável de painel) baseado no rótulo doclustere para uma série tempotal específica. - Corresponde à métrica de não informação
myapp_metricpara a métrica de informaçõeskube_pod_container_infoquando o rótulocontainer_idtiver 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_metricusando a funçãosume 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_infoapenas para uma região específica ($region) e conta ($account) que são definidas como variáveis de painel, baseadas naregione no rótuloaccount_id. - Corresponde à métrica de não informação
host_cpu_used_percentpara a métrica de informaçõessysdig_cloud_provider_infoquando o rótulohost_mactiver 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.AuthorizationeIBMInstanceIDsã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_TOKENe oGUID, 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.