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.
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:
- Faça login no console do GDC.
- No console do GDC, selecione seu projeto.
- No menu de navegação, selecione Operações > Alertas.
- Selecione a guia Alertas.
- Confira a lista de alertas.
- 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.
- 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çãoorg-1
éhttps://org-1/platform-obs/cortex/alertmanager/
.
Autenticar a solicitação curl
- Faça o download e instale a CLI gdcloud.
Defina a propriedade
core/organization_console_url
do gdcloud:gdcloud config set core/organization_console_url https://GDC_URL
Faça login com o provedor de identidade configurado:
gdcloud auth login
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
:
- Autentique a solicitação
curl
. 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:
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:
- Verifique se você atende aos pré-requisitos.
- Abra a CLI.
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.