Criar regras de alerta

Nesta página, descrevemos o processo de criação de regras de alerta com base em registros e métricas de ambientes isolados do Google Distributed Cloud (GDC) para facilitar o monitoramento proativo e a resposta mais rápida a incidentes.

Com o GDC, é possível definir regras de alerta com base nas métricas ou nos registros do projeto. Essas regras acionam alertas automaticamente quando condições específicas são atendidas. Estes são os tipos de regras de alerta que você pode definir:

  • Regras baseadas em métricas: acionam alertas com base em dados numéricos coletados dos seus aplicativos ou infraestrutura. Por exemplo, você pode criar uma regra para acionar um alerta se o uso da CPU exceder 80%. Crie regras com base em métricas usando o console do GDC ou uma definição de recurso personalizado MonitoringRule.
  • Regras com base em registros: acionam alertas com base na análise de dados de registros. Com eles, você pode identificar e responder a eventos ou padrões específicos nos seus registros, como mensagens de erro ou atividades incomuns. Crie regras com base em registros usando o console do GDC ou uma definição de recurso personalizado LoggingRule.

As regras com base em métricas e em registros dependem de uma expressão de linguagem de consulta para definir a condição que aciona um alerta. Essa expressão filtra e analisa os dados recebidos, avaliando se os critérios definidos são atendidos.

Na primeira vez que uma condição é atendida, o alerta passa para o estado pendente. Se as condições forem verdadeiras durante o período definido, o alerta vai para o estado aberto. Nesse momento, o sistema envia o alerta.

Para fornecer mais contexto e facilitar o gerenciamento eficiente de alertas, você pode adicionar rótulos e anotações às suas regras de alerta:

  • Rótulos: pares de chave-valor que categorizam e identificam alertas. Use rótulos para informações como:

    • Nível de gravidade (erro, crítico, aviso)
    • Código do alerta
    • Nome do recurso
  • Anotações: forneça mais informações 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 runbooks ou guias de solução de problemas

Antes de começar

Para receber as permissões necessárias para gerenciar regras baseadas em métricas, peça ao administrador do IAM da organização ou do projeto para conceder a você uma das funções de recurso MonitoringRule associadas.

Por outro lado, para receber as permissões necessárias para gerenciar regras baseadas em registros, peça ao administrador do IAM da organização ou do projeto para conceder a você uma das funções associadas ao recurso LoggingRule.

Dependendo do nível de acesso e das permissões necessárias, você pode receber papéis de criador, editor ou leitor para esses recursos em uma organização ou um projeto. Para mais informações, consulte Preparar permissões do IAM.

Definir regras de alerta

É possível definir regras de alerta no namespace do projeto usando o console do GDC (preferencial) ou as APIs de monitoramento e geração de registros para aplicar recursos personalizados.

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

Console

Crie regras de alerta em grupos de regras no console do GDC:

  1. No console do GDC, selecione um projeto.
  2. No menu de navegação, selecione Operações > Alertas.
  3. Clique na guia 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 com base em métricas.
    • Selecione Registros para regras de alerta baseadas em registros.
  6. Configure o grupo de regras de alerta:

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

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

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

    • Um nome para a regra de alerta.
    • Uma expressão para a regra de alerta. Use LogQL para regras com base em registros e PromQL para regras com base em métricas.

    • A duração em segundos antes de um alerta passar 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 solução de problemas.

    • Uma mensagem ou descrição de alerta.

    • Opcional: adicione Rótulos e Anotações como pares de chave-valor.

  9. Clique em Salvar para criar a regra.

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

O grupo de regras aparece na lista Grupo de regras de alerta. É possível agrupar mais regras de alerta nesse grupo.

API

Crie regras de alerta nas APIs de monitoramento ou de geração de registros:

  1. Defina um recurso personalizado MonitoringRule (regras com base em métricas) ou LoggingRule (regras com base em registros) em um arquivo YAML.

    A especificação completa de recursos mostra um exemplo de regras baseadas em métricas e em registros.

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

    Campo Descrição
    namespace O namespace do projeto.
    name O nome da configuração da regra de alerta.
    source A origem do registro da regra de alerta. As opções válidas são operational e audit. Aplicável apenas a recursos do LoggingRule.
    interval A duração do intervalo de avaliação da regra em segundos.
    limit Opcional. O número máximo de alertas. Defina 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 com base em registros ou uma expressão PromQL para regras com base em métricas. A expressão precisa ser avaliada como um valor verdadeiro ou falso para determinar se o alerta passa para um estado pendente.
    alertRules.for Opcional. A duração em segundos antes de um alerta passar de pendente para aberto. O padrão é de 0 segundos (acionamento imediato).
    alertRules.labels Pares de chave-valor para categorizar e identificar o alerta. Ele exige os seguintes rótulos: severity, code e resource.
    alertRules.annotations Opcional. Metadados não identificadores para o alerta como pares de chave-valor.
  3. Salve o arquivo YAML.

  4. Aplique a configuração de recursos ao servidor da API Management no mesmo namespace das regras de alerta com base em métricas ou registros:

    kubectl --kubeconfig KUBECONFIG_PATH apply -f ALERT_RULE_NAME.yaml
    

    Substitua:

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

Especificação completa de recursos

Esta seção contém os modelos YAML que podem ser usados para criar regras de alerta baseadas em métricas e em registros aplicando recursos personalizados. Se você criar alertas no console do GDC, pule esta seção.

Defina regras de alerta nos seguintes recursos personalizados:

  • MonitoringRule: regras baseadas em métricas.
  • LoggingRule: regras com base em registros.

MonitoringRule

O arquivo YAML a seguir 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:

  • PROJECT_NAMESPACE: o namespace do projeto.
  • MONITORING_RULE_NAME: o nome do arquivo de definição de MonitoringRule.

LoggingRule

O arquivo YAML a seguir 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:

  • PROJECT_NAMESPACE: o namespace do projeto.
  • LOGGING_RULE_NAME: o nome do arquivo de definição LoggingRule.