Crie regras de alerta

Esta página descreve o processo de criação de regras de alerta com base em registos e métricas de ambientes isolados do Google Distributed Cloud (GDC) para facilitar a monitorização proativa e a resposta a incidentes mais rápida.

O GDC permite-lhe definir regras de alerta com base nas métricas ou nos registos do seu projeto. Estas regras acionam automaticamente alertas quando são cumpridas condições específicas. Seguem-se os tipos de regras de alerta que pode definir:

  • Regras baseadas em métricas: acione alertas com base em dados numéricos recolhidos das suas aplicações ou infraestrutura. Por exemplo, pode criar uma regra para acionar um alerta se a utilização da CPU exceder 80%. Crie regras baseadas em métricas através da consola do GDC ou de uma definição de recurso personalizado MonitoringRule.
  • Regras baseadas em registos: acionam alertas com base na análise dos dados de registo. Estes alertas permitem-lhe identificar e responder a eventos ou padrões específicos nos seus registos, como mensagens de erro ou atividade invulgar. Crie regras baseadas em registos através da consola do GDC ou de uma LoggingRuledefinição de recurso personalizada.

As regras baseadas em métricas e em registos baseiam-se numa expressão de linguagem de consulta para definir a condição que aciona um alerta. Esta expressão filtra e analisa os dados recebidos, avaliando se os critérios definidos são cumpridos.

Quando uma condição é cumprida pela primeira vez, o alerta passa para o estado pendente. Se as condições forem verdadeiras durante o período que definir, o alerta passa para o estado aberto. Nesse momento, o sistema envia o alerta.

Para fornecer mais contexto e facilitar a gestão eficiente de alertas, pode adicionar etiquetas e anotações às regras de alerta:

  • Etiquetas: pares de chave-valor que categorizam e identificam alertas. Use etiquetas para informações como as seguintes:

    • Nível de gravidade (erro, crítico, aviso)
    • Código do alerta
    • Nome do recurso
  • Anotações: forneça informações adicionais não identificadoras para enriquecer o alerta. As anotações podem incluir as seguintes informações:

    • Mensagens de erro detalhadas
    • Expressões relevantes
    • Links para manuais ou guias de resolução de problemas

Antes de começar

Para receber as autorizações de que precisa para gerir regras baseadas em métricas, peça ao administrador de IAM da organização ou ao administrador de IAM do projeto que lhe conceda uma das MonitoringRulefunções de recursos associadas.

Por outro lado, para obter as autorizações necessárias para gerir regras baseadas em registos, peça ao administrador de IAM da organização ou ao administrador de IAM do projeto que lhe conceda uma das funções de recursos LoggingRule associadas.

Consoante o nível de acesso e as autorizações de que precisa, pode obter as funções de criador, editor ou leitor para estes recursos numa organização ou num projeto. Para mais informações, consulte o artigo Prepare as autorizações de IAM.

Defina regras de alerta

Pode definir regras de alerta no espaço de nomes do projeto através da consola do GDC (preferencial) ou das APIs de monitorização e registo para aplicar recursos personalizados.

Selecione um dos seguintes métodos para definir regras de alerta com base em métricas ou registos:

Consola

Crie regras de alerta em grupos de regras a partir da consola do GDC:

  1. Na consola do GDC, selecione um projeto.
  2. No menu de navegação, selecione Operações > Alertas.
  3. Clique no separador Política de alertas.
  4. Clique em Criar grupo de regras.
  5. Escolha o tipo de regra de alerta:

    • Selecione Métricas para regras de alerta baseadas em métricas.
    • Selecione Registos para regras de alerta baseadas em registos.
  6. Configure o grupo de regras de alerta:

    • No campo Nome do grupo de regras de alerta, introduza um nome para o grupo de regras.
    • No campo Intervalo de avaliação de regras, introduza o número de segundos para cada intervalo.
    • No campo Limite, introduza o número máximo de alertas.

  7. Na secção Regras de alerta, clique em Adicionar regra.

  8. Na janela Criar regra de alerta, introduza os seguintes detalhes:

    • Um nome para a regra de alerta.
    • Uma expressão para a regra de alerta (Use LogQL para regras baseadas em registos e PromQL para regras baseadas em métricas).

    • A duração em segundos antes de um alerta transitar de pendente para aberto.

    • O nível de gravidade, como Erro ou Aviso.

    • Um nome curto para identificar o recurso relacionado.

    • Um código de alerta para identificar o alerta.

    • Um URL de runbook ou informações de resolução de problemas.

    • Uma mensagem ou uma descrição de alerta.

    • Opcional: adicione etiquetas e anotações como pares de chave-valor.

  9. Clique em Guardar para criar a regra.

  10. Clique em Criar para criar o grupo de regras.

O grupo de regras é apresentado na lista Grupo de regras de alertas. Pode agrupar mais regras de alerta neste grupo de regras.

API

Crie regras de alerta a partir das APIs de monitorização ou registo:

  1. Defina um recurso personalizado MonitoringRule (regras baseadas em métricas) ou LoggingRule (regras baseadas em registos) num ficheiro YAML.

    A especificação completa do recurso mostra um exemplo de regras baseadas em métricas e regras baseadas em registos.

  2. Substitua os seguintes valores no ficheiro YAML de acordo com as suas necessidades:

    Campo Descrição
    namespace O espaço de nomes do projeto.
    name O nome da configuração da regra de alerta.
    source A origem do registo da regra de alerta. As opções válidas são operational e audit. Aplicável apenas a recursos LoggingRule.
    interval A duração do intervalo de avaliação da regra em segundos.
    limit Opcional. O número máximo de alertas. Definido como 0 para alertas ilimitados.
    alertRules As definições para criar regras de alerta.
    alertRules.alert O nome do alerta.
    alertRules.expr Uma expressão LogQL para regras baseadas em registos ou uma expressão PromQL para regras baseadas em métricas. A expressão tem de ser avaliada como um valor verdadeiro ou falso para determinar se o alerta transita para um estado pendente.
    alertRules.for Opcional. A duração em segundos antes de um alerta transitar de pendente para aberto. A predefinição é 0 segundos (acionamento imediato).
    alertRules.labels Pares de chave-valor para categorizar e identificar o alerta. Requer as seguintes etiquetas: severity, code e resource.
    alertRules.annotations Opcional. Metadados não identificadores para o alerta como pares de chave-valor.
  3. Guarde o ficheiro YAML.

  4. Aplique a configuração de recursos ao servidor da API Management no mesmo espaço de nomes que as regras de alerta baseadas em métricas ou registos:

    kubectl --kubeconfig KUBECONFIG_PATH apply -f ALERT_RULE_NAME.yaml
    

    Substitua o seguinte:

    • KUBECONFIG_PATH: o caminho para o ficheiro kubeconfig do servidor da API Management.
    • ALERT_RULE_NAME: o nome do ficheiro de definição MonitoringRule ou LoggingRule.

Especificação completa de recursos

Esta secção contém os modelos YAML que pode usar para criar regras de alerta baseadas em métricas e baseadas em registos aplicando recursos personalizados. Se criar alertas a partir da consola do GDC, pode ignorar esta secção.

Defina regras de alerta nos seguintes recursos personalizados:

  • MonitoringRule: regras baseadas em métricas.
  • LoggingRule: regras baseadas em registos.

MonitoringRule

O ficheiro YAML seguinte mostra um modelo para o recurso personalizado MonitoringRule. Para mais informações, consulte a documentação de referência da API.

# Configures either an alert or a target record for precomputation.
apiVersion: monitoring.gdc.goog/v1
kind: MonitoringRule
metadata:
  # Choose a namespace that matches the project namespace.
  # The alert or record is produced in the same namespace.
  namespace: PROJECT_NAMESPACE
  name: MONITORING_RULE_NAME
spec:
  # Rule evaluation interval.
  interval: 60s

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure metric-based alert rules.
  alertRules:
    # Define an alert name.
  - alert: my-metric-based-alert

    # Define the PromQL expression to evaluate for this rule.
    expr: rate({service_name="bob-service"} [1m])

    # The duration in seconds before an alert transitions from pending to open.
    # Optional.
    # Default value: '0s'
    for: 0s

    # Define labels to add or overwrite.
    # Map of key-value pairs.
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to the alert
    # Additional labels are optional.
    labels:
      severity: error
      code: 202
      resource: AIS
      another-label: another-value

    # Define annotations to add.
    # Map of key-value pairs.
    # Optional.
    # Recommended annotations:
    #     message: value of the Message field in the user interface.
    #     expression: value of the Rule field in the user interface.
    #     runbookurl: URL of the Actions to take field in the user interface.
    annotations:
      message: my-alert-message

Substitua o seguinte:

  • PROJECT_NAMESPACE: o espaço de nomes do seu projeto.
  • MONITORING_RULE_NAME: o nome do ficheiro de definição MonitoringRule.

LoggingRule

O ficheiro YAML seguinte mostra um modelo para o recurso personalizado LoggingRule. Para mais informações, consulte a documentação de referência da API.

# Configures either an alert or a target record for precomputation.
apiVersion: logging.gdc.goog/v1
kind: LoggingRule
metadata:
  # Choose a namespace that matches the project namespace.
  # The alert or record is produced in the same namespace.
  namespace: PROJECT_NAMESPACE
  name: LOGGING_RULE_NAME
spec:
  # Choose the log source to base alerts on (operational or audit logs).
  # Optional.
  # Valid options: 'operational' and 'audit'
  # Default value: 'operational'
  source: operational

  # Rule evaluation interval.
  interval: 60s

  # Configure the limit for the number of alerts.
  # A value of '0' means no limit.
  # Optional.
  # Default value: '0'
  limit: 0

  # Configure log-based alert rules.
  alertRules:
    # Define an alert name.
  - alert: my-log-based-alert

    # Define the LogQL expression to evaluate for this rule.
    expr: rate({service_name="bob-service"} [1m])

    # The duration in seconds before an alert transitions from pending to open.
    # Optional.
    # Default value: '0s'
    for: 0s

    # Define labels to add or overwrite.
    # Map of key-value pairs.
    # Required labels:
    #     severity: [error, critical, warning, info]
    #     code:
    #     resource: component/service/hardware related to the alert
    # Additional labels are optional.
    labels:
      severity: warning
      code: 202
      resource: AIS
      another-label: another-value

    # Define annotations to add.
    # Map of key-value pairs.
    # Optional.
    # Recommended annotations:
    #     message: value of the Message field in the user interface.
    #     expression: value of the Rule field in the user interface.
    #     runbookurl: URL of the Actions to take field in the user interface.
    annotations:
      message: my-alert-message

Substitua o seguinte:

  • PROJECT_NAMESPACE: o espaço de nomes do seu projeto.
  • LOGGING_RULE_NAME: o nome do LoggingRule ficheiro de definição.