Crea políticas de alertas

En esta página, se muestra cómo crear políticas de alertas basadas en métricas para clústeres de Google Distributed Cloud. Proporcionamos varias muestras descargables que te ayudarán a configurar las políticas de alertas para situaciones comunes. Para obtener más información sobre las políticas de alertas basadas en métricas, consulta Crea políticas de alertas de límite de métrica en la documentación de Google Cloud Observability.

Antes de comenzar

Debes contar con los siguientes permisos para crear políticas de alertas:

  • monitoring.alertPolicies.create
  • monitoring.alertPolicies.delete
  • monitoring.alertPolicies.update

Tienes estos permisos si tienes alguna de las siguientes funciones:

  • monitoring.alertPolicyEditor
  • monitoring.editor
  • Editor de proyecto
  • Propietario del proyecto

Si deseas crear políticas de alertas basadas en registros mediante Google Cloud CLI, también debes tener el rol serviceusage.serviceUsageConsumer. Si deseas obtener instrucciones para configurar políticas de alertas basadas en registros, consulta Configura alertas basadas en registros en la documentación de Google Cloud Observability.

Para verificar tus roles, ve a la página de IAM en la consola de Google Cloud.

Crea una política de ejemplo: servidor de la API no disponible

En este ejercicio, crearás una política de alertas para los servidores de la API de Kubernetes de los clústeres de administrador. Con esta política implementada, puedes configurarla para recibir notificaciones siempre que el servidor de API de un clúster no esté disponible.

  1. Descarga el archivo de configuración de la política: apiserver-unavailable.json.

  2. Crea la política:

    gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
    

    Reemplaza POLICY_CONFIG por la ruta de acceso del archivo de configuración que acabas de descargar.

  3. Visualiza tus políticas de alertas:

    Console

    1. En la consola de Google Cloud, ve a la página Supervisión.

      Ir a Monitoring

    2. A la izquierda, selecciona Alertas.

    3. En Políticas, puedes ver una lista de tus políticas de alertas.

      En la lista, selecciona Servidor de la API del clúster de Anthos no disponible (crítico) para ver detalles sobre tu política nueva. En Condiciones, puedes ver una descripción de la política. Por ejemplo:

      Policy violates when ANY condition is met
      Anthos cluster API server uptime is absent for 5m
      

    gcloud

    gcloud alpha monitoring policies list
    

    El resultado muestra información detallada sobre la política. Por ejemplo:

    combiner: OR
    conditions:
    - conditionAbsent:
        aggregations:
        - alignmentPeriod: 60s
          crossSeriesReducer: REDUCE_MEAN
          groupByFields:
          - resource.label.project_id
          - resource.label.location
          - resource.label.cluster_name
          - resource.label.namespace_name
          - resource.label.container_name
          - resource.label.pod_name
          perSeriesAligner: ALIGN_MAX
        duration: 300s
        filter: resource.type = "k8s_container" AND metric.type = "kubernetes.io/anthos/container/uptime"
          AND resource.label."container_name"=monitoring.regex.full_match("kube-apiserver")
        trigger:
          count: 1
      displayName: Anthos cluster API server uptime is absent for 5m
      name: projects/…/alertPolicies/…/conditions/…
    displayName: Anthos cluster API server unavailable (critical)
    enabled: true
    mutationRecord:
      mutateTime: …
      mutatedBy: …
    name: projects/…/alertPolicies/…
    

Crea políticas de alertas adicionales

En esta sección, se proporcionan descripciones y archivos de configuración para un conjunto de políticas de alertas recomendadas.

Para crear una política, sigue los mismos pasos que usaste en el ejercicio anterior:

  1. Para descargar el archivo de configuración, haz clic en el vínculo en la columna de la derecha.

  2. De manera opcional, ajusta las condiciones para que se adapten mejor a tus necesidades específicas, por ejemplo, puedes agregar filtros adicionales para un subconjunto de clústeres o ajustar los valores de umbral para equilibrar el ruido y la importancia.

  3. Para crear la política, ejecuta gcloud alpha monitoring policies create.

Puedes descargar y, luego, instalar todas las muestras de políticas de alertas que se describen en este documento con la siguiente secuencia de comandos:

# 1. Create a directory named alert_samples:

mkdir alert_samples && cd alert_samples
declare -a alerts=("apiserver-unavailable.json" "controller-manager-unavailable.json" "scheduler-unavailable.json" \
  "pod-crash-looping.json" "pod-not-ready-1h.json" "container-cpu-usage-high-reaching-limit.json" \
  "container-memory-usage-high-reaching-limit.json" "persistent-volume-usage-high.json" "node-cpu-usage-high.json" \
  "node-disk-usage-high.json" "node-memory-usage-high.json" "node-not-ready-1h.json" "apiserver-error-ratio-high.json" \
  "etcd-leader-changes-or-proposal-failures-frequent.json" "etcd-server-not-in-quorum.yaml" "etcd-storage-usage-high.json")

# 2. Download all alert samples into the alert_samples/ directory:

for x in "${alerts[@]}"
do
  wget https://cloud.google.com/kubernetes-engine/distributed-cloud/bare-metal/docs/samples/${x}
done

# 3. (optional) Uncomment and provide your project ID to set the default project
# for gcloud commands:

# gcloud config set project <PROJECT_ID>

# 4. Create alert policies for each of the downloaded samples:

for x in "${alerts[@]}"
do
  gcloud alpha monitoring policies create --policy-from-file=${x}
done

Disponibilidad de los componentes del plano de control

Nombre de la alerta Descripción Definición de la política de alertas en Cloud Monitoring
Servidor de la API no disponible (crítico) La métrica de tiempo de actividad del servidor de la API no está disponible apiserver-unavailable.json
Programador no disponible (crítico) La métrica de tiempo de actividad del programador no está disponible scheduler-unavailable.json
Administrador del controlador no disponible (crítico) La métrica de tiempo de actividad del administrador del controlador no está disponible controller-manager-unavailable.json

Sistema de Kubernetes

Nombre de la alerta Descripción Definición de la política de alertas en Cloud Monitoring
Bucle de falla del Pod (advertencia) El Pod se sigue reiniciando y puede estar en un estado de bucle de fallas pod-crash-looping.json
El Pod no está listo durante más de una hora (crítico) El pod ha pasado más de una hora en estado no listo pod-not-ready-1h.json
El uso de CPU del contenedor supera el 80% (advertencia) El uso de CPU de los contenedores supera el 80% del límite container-cpu-usage-high-reaching-limit.json
El uso de memoria del contenedor supera el 85% (advertencia) El uso de memoria de los contenedores supera el 85% del límite container-memory-usage-high-reaching-limit.json
Uso alto del volumen persistente (crítico) El volumen persistente reclamado tiene menos del 3% de espacio libre. persistent-volume-usage-high.json
El uso de CPU del nodo supera el 80% (advertencia) El uso de CPU del nodo supera el 80% del total asignable durante 5 m node-cpu-usage-high.json
El uso del disco del nodo supera el 85% (advertencia) Menos del 15% es libre por punto de activación de disco durante 10 minutos node-disk-usage-high.json
El uso de memoria del nodo supera el 80% (advertencia) El uso de memoria del nodo supera el 80% del total asignable durante 5 m node-memory-usage-high.json
El nodo no está listo durante más de una hora (crítico) El nodo ha pasado más de una hora en estado no listo node-not-ready-1h.json

Rendimiento de Kubernetes

Nombre de la alerta Descripción Definición de la política de alertas en Cloud Monitoring
La tasa de error del servidor de la API supera el 20% (crítico) El servidor de la API genera errores 5xx o 429 en más del 20% de todas las solicitudes por verbo durante 15 m apiserver-error-ratio-high.json
El cambio del líder de ETCD o la falla de la propuesta son demasiado frecuentes (advertencia) Los cambios en el líder etcd o las fallas de la propuesta ocurren con demasiada frecuencia etcd-leader-changes-or-proposal-failures-frequent.json
El servidor ETCD no está en quórum (crítico) No hay propuestas de servidor etcd confirmadas durante 5 min, por lo que podrían haber perdido quórum. etcd-server-not-in-quorum.yaml
El almacenamiento de ETCD supera el límite del 90% (advertencia) El uso de almacenamiento de etcd supera el 90% del límite etcd-storage-usage-high.json

Políticas de alertas con PromQL

Las consultas en las políticas de alertas también se pueden expresar en PromQL en lugar de MQL. Por ejemplo, la versión de PromQL de la política API server error ratio exceeds 20 percent (critical) está disponible para descargar: apiserver-error-ratio-high-promql.json.

Si deseas obtener más información, consulta la documentación sobre cómo usar el servicio administrado para Prometheus para Google Distributed Cloud y las políticas de alertas con PromQL para Documentación de Cloud Monitoring

Recibe notificaciones

Después de crear una política de alertas, puedes definir uno o más canales de notificación para la política. Hay varios tipos de canales de notificación. Por ejemplo, puedes recibir notificaciones por correo electrónico, un canal de Slack o una app para dispositivos móviles. Puedes elegir los canales que se adapten a tus necesidades.

Para obtener instrucciones sobre cómo configurar canales de notificación, consulta Administra canales de notificaciones.