Consultar e visualizar alertas abertos

Depois de criar regras de alerta no projeto de appliance isolado do Google Distributed Cloud (GDC), é possível consultar e visualizar alertas em painéis na interface do usuário (UI) da instância de monitoramento do sistema do projeto ou consultar alertas na API HTTP de observabilidade do GDC.

Consultar e visualizar alertas em painéis

É possível conferir os alertas nos painéis da instância do Grafana do projeto platform-obs, também chamada de instância de monitoramento do sistema. instância de monitoramento do sistema do projeto platform-obs.

A instância de monitoramento do sistema inclui métricas, registros e alertas no nível do projeto para realizar processos de monitoramento, como monitoramento de rede e de servidor.

Antes de começar

Antes de consultar e visualizar alertas nos painéis, você precisa ter acesso à instância de monitoramento do sistema. Para mais informações, consulte Acessar painéis.

Para fazer login e visualizar alertas, peça ao administrador de IAM do projeto para conceder a você o papel 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.

Endpoint da instância de monitoramento do sistema

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.

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.