Criar regras de alerta

Esta página descreve 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 a incidentes.

O GDC permite definir regras de alerta com base nas métricas ou registros do projeto. Essas regras acionam alertas automaticamente quando condições específicas são atendidas. A seguir, estão os tipos de regras de alerta que podem ser definidos:

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

As regras baseadas em métricas e 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 de duração definido, o alerta será movido para o estado aberto. Nesse momento, o sistema envia o alerta.

Para fornecer mais contexto e facilitar o gerenciamento eficiente de alertas, é possível adicionar rótulos e anotações às regras de alerta:

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

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

Antes de começar

Para gerenciar regras baseadas em métricas ou registros, você precisa ter as permissões necessárias.

### Solicitar papéis da organização do IAM para regras baseadas em métricas

Entre em contato com o administrador do IAM da organização para solicitar os seguintes papéis:

  • Criador de PA de MonitoringRule (monitoringrule-pa-creator): cria recursos personalizados MonitoringRule.
  • Editor de PA de MonitoringRule (monitoringrule-pa-editor): edita ou modifica recursos personalizados MonitoringRule.
  • Leitor de PA de MonitoringRule (monitoringrule-pa-viewer): visualiza recursos personalizados MonitoringRule.

    Solicitar papéis do projeto do IAM para regras baseadas em métricas

Entre em contato com o administrador do IAM do projeto para solicitar os seguintes papéis:

  • Editor de MonitoringRule (monitoringrule-editor): edita ou modifica recursos personalizados MonitoringRule no namespace do projeto.
  • Leitor de MonitoringRule (monitoringrule-viewer): visualiza recursos personalizados MonitoringRule no namespace do projeto.

Solicitar papéis da organização do IAM para regras baseadas em registros

Entre em contato com o administrador do IAM da organização para solicitar os seguintes papéis:

  • Criador de PA de LoggingRule (loggingrule-pa-creator): cria recursos personalizados LoggingRule.
  • Editor de PA de LoggingRule (loggingrule-pa-editor): edita ou modifica recursos personalizados LoggingRule.
  • Leitor de PA de LoggingRule (loggingrule-pa-viewer): visualiza recursos personalizados LoggingRule.

Solicitar papéis do projeto do IAM para regras baseadas em registros

Entre em contato com o administrador do IAM do projeto para solicitar os seguintes papéis:

  • Editor de LoggingRule (loggingrule-editor): edita ou modifica recursos personalizados LoggingRule no namespace do projeto.
  • Leitor de LoggingRule (loggingrule-viewer): visualiza recursos personalizados LoggingRule no namespace do projeto.

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 registro para aplicar recursos personalizados.

Selecione um dos métodos a seguir 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 baseadas 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 de regras, insira o número de segundos para 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 baseadas em registros e PromQL para regras baseadas em métricas).

    • A duração em segundos antes que um alerta faça a transição de pendente para aberto.

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

    • Um nome abreviado 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 registro:

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

    A especificação completa do recurso mostra um exemplo de regras baseadas em métricas e 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 para a 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 de regras 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 baseadas em registros ou uma expressão PromQL para regras baseadas em métricas. A expressão precisa ser avaliada como um valor verdadeiro ou falso para determinar se o alerta faz a transição para um estado pendente.
    alertRules.for Opcional. A duração em segundos antes que um alerta faça a transição de pendente para aberto. O padrão é 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 baseadas 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 MonitoringRule ou LoggingRule.

Especificação completa do recurso

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

Defina regras de alerta nos seguintes recursos personalizados:

  • MonitoringRule: regras baseadas em métricas.
  • LoggingRule: regras baseadas 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 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.