Consultar e visualizar métricas

Depois de coletar métricas das cargas de trabalho implantadas no appliance isolado do Google Distributed Cloud (GDC), é possível começar a analisá-las. Para analisar métricas, visualize e filtre-as em painéis informativos do Grafana ou acesse-as diretamente do Cortex usando a ferramenta curl para automação e criação de scripts flexíveis.

É possível acessar as métricas usando um dos dois métodos a seguir:

  • Dashboards do Grafana: analise tendências e identifique anomalias com visualizações intuitivas de métricas importantes, como utilização da CPU, consumo de armazenamento e atividade de rede. O Grafana oferece uma interface fácil de usar para filtrar e analisar os dados de carga de trabalho em painéis.
  • Endpoint do Cortex: para casos de uso mais avançados, consulte diretamente a instância do Cortex do seu projeto usando a ferramenta curl em uma linha de comando. O Cortex armazena as métricas do Prometheus do seu projeto e fornece um endpoint HTTP para acesso programático. Com esse acesso, é possível exportar dados, automatizar tarefas e criar integrações personalizadas.

Antes de começar

Para receber as permissões necessárias para consultar e visualizar métricas nos painéis do Grafana, peça ao administrador do IAM da organização ou do projeto para conceder a você um dos papéis predefinidos de Leitor do Grafana da organização ou do projeto. Dependendo do nível de acesso e das permissões necessárias, você pode receber papéis do Grafana em uma organização ou um projeto.

Como alternativa, para receber as permissões necessárias para consultar métricas do endpoint do Cortex, peça ao administrador do IAM do projeto para conceder a você o papel de leitor do Prometheus do Cortex do projeto no namespace do projeto.

Para mais informações sobre esses papéis, consulte Preparar permissões do IAM.

A tabela a seguir resume os requisitos do Role para o PA and AO persona.

Persona Objeto Cluster Papel Namespace Grupo/Usuário Configuração
PA grafana org-admin project-grafana-viewer platform-obs Grupo 1
PA cortex org-admin project-cortex-prometheus-viewer platform-obs Grupo 2
PA grafana org-admin project-grafana-viewer platform-obs Usuário 3
PA cortex org-admin project-cortex-prometheus-viewer platform-obs Usuário 4
AO grafana org-admin project-grafana-viewer PROJECT_NAMESPACE Grupo 1
AO cortex org-admin project-cortex-prometheus-viewer PROJECT_NAMESPACE Grupo 2
AO grafana org-admin project-grafana-viewer PROJECT_NAMESPACE Usuário 3
AO cortex org-admin project-cortex-prometheus-viewer PROJECT_NAMESPACE Usuário 4

Substitua as seguintes variáveis conforme necessário:

Variável Descrição
KUBECONFIG Você vai precisar do kubeconfig do cluster específico que contém o NAMESPACE em que esse RoleBinding será aplicado.
RULE_NAME O nome exclusivo do recurso RoleBinding no namespace. Por exemplo, io-root-cortex-prometheus-viewer.
NAMESPACE O namespace do Kubernetes em que esse RoleBinding será criado e aplicado. Procure a coluna Namespace na tabela anterior.
EMAIL_ADDRESS O identificador do usuário que está recebendo o papel. Geralmente, é um endereço de e-mail. Por exemplo, platform-administrator@example.com
ROLE O nome do Role que contém as permissões que você quer conceder ao usuário. Procure os papéis disponíveis na tabela anterior
GROUP_NAME O nome da Group a que o usuário de PA/AO pertence. Por exemplo, pa-group.
ZONE Nome da zona

Configuração 1

Essa configuração concede permissões a um grupo de usuários para acessar o Grafana do PA/AO no cluster org. Depois de configurar, consulte a seção painéis do Grafana deste documento para ver as métricas no Grafana.

  • Comando kubectl

    Este é o formato genérico do comando:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --group=`GROUP_NAME` --role=project-grafana-viewer
    

    Exemplo:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-grafana-viewers-binding --role=project-grafana-viewer --group=my-team --namespace=platform-obs
    
  • Arquivo YAML

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: Group
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-grafana-viewer
      apiGroup: rbac.authorization.k8s.io
    

Configuração 2

Essa configuração concede permissões a um grupo de usuários para acessar programaticamente as métricas de PA/AO no cluster org. Depois de configurar, consulte a seção endpoint do Cortex deste documento para consultar as métricas de forma programática.

  • Comando kubectl

    Este é o formato genérico do comando:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --group=`GROUP_NAME` --role=project-cortex-prometheus-viewer
    

    Exemplo:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-prometheus-viewer-binding --role=project-cortex-prometheus-viewer --group=my-team --namespace=platform-obs
    
  • Arquivo YAML

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: Group
      name: GROUP_NAME
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-cortex-prometheus-viewer
      apiGroup: rbac.authorization.k8s.io
    

Configuração 3

Essa configuração concede permissões a um usuário para acessar o Grafana do PA/AO no cluster org. Depois de configurar, consulte a seção painéis do Grafana deste documento para ver as métricas no Grafana.

  • Comando kubectl

    Este é o formato genérico do comando:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --user=`EMAIL_ADDRESS` --role=project-grafana-viewer
    

    Exemplo:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-grafana-viewers-binding --role=project-grafana-viewer --user=my-email@example.com --namespace=platform-obs
    
  • Arquivo YAML

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: User
      name: EMAIL_ADDRESS
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-grafana-viewer
      apiGroup: rbac.authorization.k8s.io
    

Configuração 4

Essa configuração concede permissões a um usuário para acessar programaticamente as métricas de PA/AO no cluster org. Depois de configurar, consulte a seção endpoint do Cortex deste documento para consultar as métricas de forma programática.

  • Comando kubectl

    Este é o formato genérico do comando:

    kubectl --kubeconfig `KUBECONFIG` create rolebinding `RULE_NAME` -n `NAMESPACE` --user=`EMAIL_ADDRESS` --role=project-cortex-prometheus-viewer
    

    Exemplo:

    kubectl --kubeconfig <path-to-kubeconfig> create rolebinding project-cortex-prometheus-viewer-binding --role=project-cortex-prometheus-viewer --user=my-email@example.com --namespace=platform-obs
    
  • Arquivo YAML

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: RULE_NAME
      namespace: NAMESPACE
    subjects:
    - kind: User
      name: EMAIL_ADDRESS
      apiGroup: rbac.authorization.k8s.io
    roleRef:
      kind: Role
      name: project-cortex-prometheus-viewer
      apiGroup: rbac.authorization.k8s.io
    

Para mais informações sobre esses papéis, consulte Preparar permissões do IAM.

Extrair e filtrar suas métricas

Selecione um dos seguintes métodos para criar consultas, visualizar tendências e filtrar métricas das cargas de trabalho do projeto:

Painéis do Grafana

Nesta seção, descrevemos como acessar suas métricas usando painéis do Grafana.

Identificar o endpoint do Grafana

O URL a seguir é o endpoint da instância do Grafana do seu projeto:

  https://GDC_URL/PROJECT_NAMESPACE/grafana

Substitua:

  • GDC_URL: o URL da sua organização no GDC.
  • PROJECT_NAMESPACE: o namespace do projeto.

    Por exemplo, o endpoint do Grafana para o projeto platform-obs na organização org-1 é https://org-1/platform-obs/grafana.

Ver métricas na interface do usuário do Grafana

Recupere métricas na interface do usuário do Grafana:

  1. No console do GDC, selecione seu projeto.
  2. No menu de navegação, selecione Operações > Monitoramento.
  3. Clique em Ver tudo no Grafana.

    Uma nova página abre seu endpoint do Grafana e mostra a interface do usuário.

  4. Na interface do usuário,clique em Análise Análise no menu de navegação para abrir a página Análise.

  5. No menu da barra Explorar, selecione uma fonte de dados para extrair métricas, de acordo com o tipo de universo:

    • Universos de zona única: selecione prometheus para mostrar as métricas da única zona do seu universo.
  6. Insira uma consulta para pesquisar métricas usando expressões da PromQL (linguagem de consulta do Prometheus). Você pode fazer isso de duas maneiras:

    • Selecione uma métrica e um rótulo para sua consulta nos menus Métrica e Filtros de rótulo. Clique em Adicionar Adicionar para incluir mais rótulos na consulta. Em seguida, clique em Executar consulta.
    • Digite sua consulta diretamente no campo de texto Métricas e pressione Shift+Enter para executar a consulta.

    A página mostra as métricas que correspondem à sua consulta.

    A opção &quot;prometheus&quot; é selecionada na página &quot;Analisar&quot; para receber métricas.

    Figura 1. Opção de menu para consultar métricas na interface do usuário do Grafana.

    Na figura 1, a opção prometheus mostra a interface que permite criar consultas do Grafana para recuperar métricas.

    Para exemplos de valores de rótulos que podem ser usados para consultar métricas, consulte Exemplos de consultas e rótulos.

Endpoint do Cortex

Nesta seção, descrevemos como acessar suas métricas usando o Cortex.

Identificar seu endpoint do Cortex

O URL a seguir é o endpoint da instância do Cortex do seu projeto:

  https://GDC_URL/PROJECT_NAMESPACE/cortex/prometheus/

Substitua:

  • GDC_URL: o URL da organização no GDC.
  • PROJECT_NAMESPACE: o namespace do projeto.

    Por exemplo, o endpoint do Cortex para o projeto platform-obs na organização org-1 é https://org-1/platform-obs/cortex/prometheus/.

Autenticar a solicitação curl

  1. Faça o download e instale a CLI gdcloud.
  2. Defina a propriedade core/organization_console_url do gdcloud:

    gdcloud config set core/organization_console_url
    https://GDC_URL
    
  3. Faça login com o provedor de identidade configurado:

    gdcloud auth login
    
  4. Use seu nome de usuário e senha para autenticar e fazer login.

    Quando o login for concluído, use o cabeçalho de autorização na solicitação cURL com o comando gdcloud auth print-identity-token. Para mais informações, consulte gdcloud auth.

Chamar o endpoint do Cortex

Siga estas etapas para acessar o endpoint do Cortex usando a ferramenta curl:

  1. Autentique a solicitação curl.
  2. Use curl para chamar o endpoint do Cortex e estenda o URL usando a API HTTP padrão do Prometheus (https://prometheus.io/docs/prometheus/latest/querying/api/) para consultar métricas.

    Veja a seguir um exemplo de solicitação curl:

    curl https://GDC_URL/PROJECT_NAME/cortex/prometheus/api/v1/query?query=my_metric{cluster="my-cluster"}&time=2015-07-01T20:10:51.781Z \
    -H "Authorization: Bearer $(gdcloud auth print-identity-token \
    --audiences=https://GDC_URL)"
    

    Você vai receber a saída após o comando. A resposta da API está no formato JSON.

Exemplos de consultas e rótulos

É possível consultar métricas usando o nome delas e pares de chave-valor para rótulos. Uma consulta em PromQL tem a seguinte sintaxe:

metric_name{label_one="value", label_two="value"}

Com os rótulos, é possível diferenciar as características de uma métrica. Dessa forma, os autores de contêineres fazem com que as cargas de trabalho gerem métricas e adicionem tags para filtrar essas métricas.

Por exemplo, é possível ter uma métrica api_http_requests_total para contar o número de solicitações HTTP recebidas. Em seguida, adicione um rótulo request_method a essa métrica, que usa um valor POST, GET ou PUT. Assim, você cria três fluxos de métricas para cada tipo de solicitação que pode receber. Nesse caso, para encontrar o número de solicitações HTTP GET, execute a seguinte consulta:

api_http_requests_total{request_method="GET"}

Consulte https://prometheus.io/docs/practices/naming/ para mais informações sobre métricas e rótulos.

A seguir, veja alguns dos rótulos padrão que o recurso personalizado MonitoringTarget adiciona. É possível usar estes rótulos padrão para consultar métricas:

  • _gdch_service: o nome abreviado do serviço.
  • cluster: o nome do cluster.
  • container_name: o nome do contêiner em um pod.
  • namespace_name: o namespace do projeto.
  • pod_name: o prefixo do nome do pod.

A tabela a seguir descreve os rótulos que o Prometheus adiciona automaticamente:

Rótulos padrão
Rótulo da métrica Descrição
job O nome interno do job de extração usado para coletar a métrica. Os jobs criados pelo recurso personalizado MonitoringTarget têm um nome com o seguinte padrão:

obs-system/OBS_SHADOW_PROJECT_NAME/MONITORINGTARGET_NAME.MONITORINGTARGET_NAMESPACE/I/J

I e J são números exclusivos determinados internamente para evitar conflitos de nomes.
instance O $IP:$PORT do serviço descartado. Se um recurso de carga de trabalho tiver várias réplicas, use esse campo para diferenciá-las.

Os exemplos de código a seguir mostram o uso de pares de chave-valor para rótulos e consultas de diferentes métricas:

  • Confira todos os fluxos de métricas das operações processadas no seu projeto:

    processed_ops_total
    
  • Veja as operações processadas coletadas em um cluster do Kubernetes:

    processed_ops_total{cluster="CLUSTER_NAME"}
    
  • Confira o uso da CPU coletado em um cluster do Kubernetes:

    cpu_usage{cluster="CLUSTER_NAME"}
    

Use a ferramenta de redefinição de rótulos de métricas para adicionar rótulos não expostos inicialmente pelos contêineres descartados e renomear as métricas produzidas. É necessário configurar o recurso personalizado MonitoringTarget para adicionar rótulos às métricas coletadas. Especifique esses rótulos no campo metricsRelabelings do recurso personalizado. Para mais informações, consulte Métricas de rótulo.

Consultar métricas da API Cortex

O Cortex é o armazenamento de longo prazo para métricas do Prometheus no GDC. A plataforma de observabilidade expõe um endpoint de API HTTP do Cortex para consultar e ler métricas, alertas e outros dados de série temporal do Prometheus no seu projeto.

Consulte métricas diretamente da API HTTP para ler e exportar métricas e outros dados de série temporal para ferramentas externas, configurar tarefas automatizadas, adaptar respostas e criar integrações de acordo com seu caso de uso de monitoramento do sistema. Por exemplo, insira a saída em outro comando, exporte detalhes para formatos de arquivo de texto ou configure um cron job do Linux. Você pode chamar a API na interface de linha de comando (CLI) ou em um navegador da Web e usar expressões da linguagem de consulta como parâmetros de endpoint para receber o resultado em formato JSON.

Esta seção explica como chamar o endpoint de API Cortex na CLI usando a especificação da API Prometheus para consultar métricas de observabilidade de dados.

Antes de começar

Você precisa receber autorização para consultar métricas na CLI. Para receber as permissões necessárias para acessar o endpoint de API Cortex, peça ao administrador do IAM do projeto para conceder a você a função de leitor do Prometheus do Project Cortex (project-cortex-prometheus-viewer).

Crie as seguintes vinculações de função usando os comandos kubectl para o Prometheus do Cortex para cada persona:

  1. Administrador raiz do operador de infraestrutura (IO) - Project Cortex Prometheus Viewer:

    kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
    io-cortex-prometheus-viewer-binding -n infra-obs 
    --user=fop-infrastructure-operator@example.com 
    --role=project-cortex-prometheus-viewer
    
  2. Administrador da plataforma (PA) Administrador raiz: Project Cortex Prometheus Viewer

    kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
    pa-cortex-prometheus-viewer-binding -n platform-obs 
    --user=fop-platform-admin@example.com --role=project-cortex-prometheus-viewer
    
  3. Administrador raiz do operador de aplicativos (AO, na sigla em inglês) - Project Cortex Prometheus Viewer :

    kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
    project-cortex-prometheus-viewer-binding -n PROJECT_NAME 
    --user=USER_NAME --role=project-cortex-prometheus-viewer
    

    Substitua:

    • PROJECT_NAME: o nome do projeto.
    • USER_NAME: o nome da conta do usuário que precisa da vinculação de papel.

Depois que a vinculação de função for criada, você poderá acessar a API Prometheus com seu nome de usuário de login.

Endpoint de API HTTP

O URL a seguir é o endpoint de API HTTP para acessar métricas no projeto platform-obs:

https://GDC_URL/PROJECT_NAME/cortex/prometheus/

Substitua:

  • GDC_URL: o URL da sua organização no GDC.
  • PROJECT_NAME: o nome do projeto.

Chamar o endpoint de API

Siga estas etapas para acessar o endpoint de API Cortex na CLI e consultar métricas:

  1. Verifique se você atende aos pré-requisitos.
  2. Abra a CLI.
  3. Use a ferramenta curl para chamar o endpoint do Cortex e estenda o URL usando o padrão https://prometheus.io/docs/prometheus/latest/querying/api/ para consultar métricas. Exemplo:

    curl https://console.org-1.zone1.google.gdch.test/alice/cortex/prometheus/api/v1/query?query=my_metric{cluster="org-1-system"}&time=2015-07-01T20:10:51.781Z
    

Você vai receber a saída na CLI após o comando. O formato de resposta da API é JSON.