Consultar e visualizar alertas abertos

Nesta página, fornecemos instruções detalhadas sobre como consultar e visualizar alertas abertos usando o console do GDC e a ferramenta curl para o endpoint do Cortex, a fim de entender os problemas e resolvê-los.

Depois de criar regras de alerta com base em registros e métricas de ambientes de appliance isolados do Google Distributed Cloud (GDC), você pode começar a monitorar alertas abertos do seu projeto. É possível visualizar e filtrar alertas que os eventos do sistema acionam no console do GDC ou acessar diretamente do Cortex usando a ferramenta curl para scripts flexíveis e automação.

É possível acessar os alertas abertos de uma das duas maneiras a seguir:

  • Console do GDC: visualize dados de alertas em painéis integrados com informações como o número de alertas para uma fonte de dados específica, o nível de gravidade, a duração, o status, a mensagem e os rótulos. O console do GDC oferece uma interface fácil de usar para filtrar e analisar alertas dos componentes do sistema.
  • Endpoint do Cortex Alertmanager: 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 os alertas do Alertmanager do seu projeto e fornece um endpoint HTTP para acesso programático. Com esse acesso, é possível exportar dados, automatizar tarefas, configurar cron jobs e criar integrações personalizadas.

Antes de começar

Para ter as permissões necessárias para consultar e visualizar alertas, peça ao administrador do IAM do projeto para conceder a você uma das funções associadas do Alertmanager do Project Cortex no namespace do projeto. Dependendo do nível de acesso e das permissões necessárias, você pode receber papéis de editor ou leitor para esse recurso em um projeto.

Para receber as permissões necessárias para exportar registros, peça ao administrador do IAM do projeto para conceder a você a função de leitor do Grafana do projeto (project-grafana-viewer). Esse processo de controle de acesso baseado em função permite acessar visualizações de dados com segurança. Para mais informações sobre esses papéis, consulte Preparar permissões do IAM.

Endpoint do Grafana

Para operador de aplicativo (AO, na sigla em inglês):

Abra o seguinte URL para acessar o endpoint 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.

A UI do projeto contém painéis padrão, como o Alertas – Visão geral, com informações sobre alertas. Ao consultar alertas na UI, você pode recuperar visualmente informações de alerta do seu projeto e ter uma visão integrada dos recursos para reconhecimento e resolução rápida de problemas.

Para administradores da plataforma (PA, na sigla em inglês):

Abra o seguinte URL para acessar o endpoint do seu projeto platform-obs:

https://GDC_URL/platform-obs/grafana

Substitua GDC_URL pelo URL da sua organização no GDC.

A interface do usuário (UI) da instância de monitoramento do sistema contém painéis padrão, como o Alertas – Visão geral, com informações sobre alertas para observabilidade de dados. Ao consultar alertas na UI, você pode recuperar visualmente informações de alerta do seu projeto e ter uma visão integrada dos recursos para reconhecimento e resolução rápida de problemas.

O painel "Alertas – Visão geral" mostra informações sobre o número de alertas de uma fonte de dados específica e um gráfico de linhas do histórico de alertas, mostrando o número de alertas abertos por hora para a fonte de dados.

Figura 1. O painel Alertas – Visão geral na interface do Grafana.

Ver e filtrar alertas abertos

Selecione um dos seguintes métodos para consultar e filtrar alertas abertos do namespace do projeto:

Console

Para ver os alertas abertos em um projeto no console do GDC:

  1. Faça login no console do GDC.
  2. No console do GDC, selecione seu projeto.
  3. No menu de navegação, selecione Operações > Alertas.
  4. Selecione a guia Alertas.
  5. Confira a lista de alertas.
  6. Na seção Alertas abertos, clique em Filtrar para mostrar apenas os alertas abertos. Também é possível filtrar alertas por outros nomes ou valores de propriedades.
  7. Clique no nome de um alerta para ver os detalhes.

Endpoint do Cortex

Nesta seção, descrevemos como acessar alertas usando o endpoint do Alertmanager do 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/alertmanager/

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/alertmanager/.

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 sua 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 especificação padrão da API Alertmanager (https://prometheus.io/docs/prometheus/latest/querying/api/#alertmanagers) para consultar alertas.

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

      curl https://GDC_URL/PROJECT_NAME/cortex/alertmanager/api/v1/alertmanagers \
      -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.

Alertmanager

O Alertmanager permite monitorar notificações de alerta de aplicativos clientes. É possível inspecionar e silenciar alertas usando o Alertmanager, além de filtrar ou agrupar alertas:

Ignorar alertas de registros de auditoria de rejeição do Loki no cluster de administrador raiz

Figura 2. Opção de menu para consultar registros de auditoria do Alertmanager.

Políticas de alertas predefinidas

A tabela a seguir lista as regras de alerta pré-instaladas no Prometheus:

Nome Descrição
KubeAPIDown (crítico) A KubeAPI desapareceu da descoberta de destino do Prometheus por 15 minutos.
KubeClientErrors (aviso) Proporção de erros do cliente do servidor da API Kubernetes > 0,01 por 15 minutos.
KubeClientErrors (crítico) Proporção de erros do cliente do servidor da API Kubernetes > 0,1 por 15 minutos.
KubePodCrashLooping (aviso) O pod está em um estado de loop de falha há mais de 15 minutos.
KubePodNotReady (aviso) O pod está em estado não pronto há mais de 15 minutos.
KubePersistentVolumeFillingUp (crítico) Bytes livres de um PersistentVolume solicitado < 0,03.
KubePersistentVolumeFillingUp (aviso) Bytes livres de um PersistentVolume solicitado < 0,15.
KubePersistentVolumeErrors (crítico) O volume permanente está na fase "Com falha" ou "Pendente" por cinco minutos.
KubeNodeNotReady (aviso) O nó está inativo há mais de 15 minutos.
KubeNodeCPUUsageHigh (crítico) O uso da CPU do nó é > 80%.
KubeNodeMemoryUsageHigh (crítico) O uso da memória do nó é > 80%.
NodeFilesystemSpaceFillingUp (aviso) O uso do sistema de arquivos de nós é > 60%.
NodeFilesystemSpaceFillingUp (crítico) O uso do sistema de arquivos do nó é > 85%.
CertManagerCertExpirySoon (aviso) O certificado expira em 21 dias.
CertManagerCertNotReady (crítico) Um certificado não está pronto para exibir tráfego após 10 minutos.
CertManagerHittingRateLimits (crítico) Foi alcançado um limite de taxa para a criação e renovação de certificados por cinco minutos.
DeploymentNotReady (crítico). Uma implantação no cluster de administrador da organização está em estado não pronto há mais de 15 minutos.

Amostra de alertmanagerConfigurationConfigmaps

A sintaxe das configurações em ConfigMaps listada em alertmanagerConfigurationConfigmaps precisa seguir https://prometheus.io/docs/alerting/latest/configuration/

apiVersion: observability.gdc.goog/v1alpha1
kind: ObservabilityPipeline
metadata:
  # Choose namespace that matches the project's namespace
  namespace: kube-system
  name: observability-config
# Configure Alertmanager
 alerting:
  # Storage size for alerting data within organization
  # Permission: PA
  localStorageSize: 1Gi

  # Permission: PA & AO
  # alertmanager config must be under the key "alertmanager.yml" in the configMap
  alertmanagerConfig: <configmap-for-alertmanager-config>

  # Permission: PA
  volumes:
    - <volume referenced in volumeMounts>

  # Permission: PA
  volumeMounts:
    - <volumeMount referenced in alertmanagerConfig>

Exemplo de configuração de regra

# Configures either an alert or a target record for precomputation
apiVersion: monitoring.gdc.goog/v1alpha1
kind: MonitoringRule
metadata:
  # Choose namespace that contains the metrics that rules are based on
  # Note: alert/record will be produced in the same namespace
  namespace: g-fleetns-a
  name: alerting-config
spec:
  # Rule evaluation interval
  interval: <duration>

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules
  recordRules:
    # Define which timeseries to write to (must be a valid metric name)
  - record: <string>

    # Define PromQL expression to evaluate for this rule
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>

  # Configure alert rules
  alertRules:
    # Define alert name 
  - alert: <string>

    # Define PromQL expression to evaluate for this rule
    # https://prometheus.io/docs/prometheus/latest/configuration/alerting_rules/
    expr: <string>

    # Define when an active alert moves from pending to firing
    # Optional, Default: 0s
    for: <duration>

    # Define labels to add or overwrite
    # Required, Map of {key, value} pairs
    # Required labels: 
    #     severity: [error, critical, warning, info]
    #     code: 
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: <enum: [error, critical, warning, info]>
      code: 
      resource: <Short name of the related operable component>
      <labelname>: <tmpl_string>

    # Define annotations to add
    # Optional, Map of {key, value} pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <labelname>: <tmpl_string>
# Configures either an alert or a target record for precomputation
apiVersion: logging.gdc.goog/v1alpha1
kind: LoggingRule
metadata:
  # Choose namespace that contains the logs that rules are based on
  # Note: alert/record will be produced in the same namespace
  namespace: g-fleetns-a
  name: alerting-config
spec:
  # Choose which log source to base alerts on (Operational/Audit/Security Logs)
  # Optional, Default: Operational
  source: <string>

  # Rule evaluation interval
  interval: <duration>

  # Configure limit for number of alerts (0: no limit)
  # Optional, Default: 0 (no limit)
  limit: <int>

  # Configure record rules
  recordRules:
    # Define which timeseries to write to (must be a valid metric name)
  - record: <string>

    # Define LogQL expression to evaluate for this rule
    # https://grafana.com/docs/loki/latest/rules/
    expr: <string>

    # Define labels to add or overwrite
    # Optional, Map of {key, value} pairs
    labels:
      <labelname>: <labelvalue>

  # Configure alert rules
  alertRules:
    # Define alert name
  - alert: <string>

    # Define LogQL expression to evaluate for this rule
    expr: <string>

    # Define when an active alert moves from pending to firing
    # Optional, Default: 0s
    for: <duration>

    # Define labels to add or overwrite
    # Required, Map of {key, value} pairs
    # Required labels: 
    #     severity: [error, critical, warning, info]
    #     code: 
    #     resource: component/service/hardware related to alert
    #     additional labels are optional
    labels:
      severity: <enum: [error, critical, warning, info]>
      code:
      resource: <Short name of the related operable component>
      <labelname>: <tmpl_string>

    # Define annotations to add
    # Optional, Map of {key, value} pairs
    # Recommended annotations:
    #     message: value of Message field in UI
    #     expression: value of Rule field in UI
    #     runbookurl: URL for link in Actions to take field in UI
    annotations:
      <labelname>: <tmpl_string>

Consultar alertas da API HTTP

A plataforma de observabilidade expõe um endpoint de API HTTP para consultar e ler métricas, alertas e outros dados de série temporal do seu projeto para monitoramento do sistema.

Consulte alertas diretamente da API HTTP de observabilidade para configurar tarefas automatizadas, adaptar respostas e criar integrações de acordo com seu caso de uso. Por exemplo, insira a saída em outro comando, exporte detalhes para formatos de arquivo de texto ou configure um cron job do Linux. É possível chamar a API HTTP de observabilidade na interface de linha de comando (CLI) ou em um navegador da Web e receber o resultado no formato JSON.

Esta seção explica como chamar o endpoint de API HTTP de observabilidade da CLI usando a especificação da APIpara consultar alertas.

Consulte alertas diretamente da API HTTP de observabilidade para configurar tarefas automatizadas, adaptar respostas e criar integrações de acordo com seu caso de uso. Por exemplo, insira a saída em outro comando, exporte detalhes para formatos de arquivo de texto ou configure um cron job do Linux. É possível chamar a API HTTP de observabilidade na interface de linha de comando (CLI) ou em um navegador da Web e receber o resultado no formato JSON.

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

Antes de começar

Para receber as permissões necessárias para acessar o endpoint de API HTTP de observabilidade, peça ao administrador do IAM do projeto para conceder a você a função de leitor do Alertmanager do Project Cortex (project-cortex-alertmanager-viewer) no namespace do projeto.

O administrador do IAM do projeto pode conceder acesso criando uma vinculação de função:

a. Administrador raiz do operador de infraestrutura (IO) - Project Cortex Alertmanager Viewer:

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
io-cortex-alertmanager-viewer-binding -n infra-obs 
--user=fop-infrastructure-operator@example.com 
--role=project-cortex-alertmanager-viewer

b. Administrador da plataforma (PA) Administrador raiz: Project Cortex Alertmanager Viewer

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding
pa-cortex-alertmanager-viewer-binding -n platform-obs 
--user=fop-platform-admin@example.com 
--role=project-cortex-alertmanager-viewer

c. Administrador raiz do operador de aplicativos (AO) - Leitor do Alertmanager do Project Cortex: Projeto: $AO_PROJECT Nome de usuário do AO: $AO_USER

kubectl --kubeconfig $HOME/root-admin-kubeconfig create rolebinding 
project-cortex-alertmanager-viewer-binding -n $AO_PROJECT 
--user=$AO_USER 
--role=project-cortex-alertmanager-viewer

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

Verificar a vinculação de papéis

kubectl --kubeconfig $HOME/org-1-admin-kubeconfig get rolebinding -n platform-obs

Para informações sobre como definir vinculações de função no console do GDC, consulte Conceder acesso a recursos.

Endpoint do Cortex

O URL a seguir é o endpoint do Cortex para acessar alertas:

https://GDC_URL/PROJECT_NAME/cortex/alertmanager/

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 alertas:

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

    curl https://console.org-1.zone1.google.gdch.test/alice/cortex/alertmanager/api/v1/alertmanagers
    

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