En esta página se muestra cómo crear políticas de alertas basadas en métricas para clústeres de Google Distributed Cloud. Hemos proporcionado varias muestras descargables para ayudarte a configurar políticas de alertas en situaciones habituales. Para obtener más información sobre las políticas de alertas basadas en métricas, consulta el artículo Crear políticas de alertas de umbral de métricas de la documentación de Google Cloud Observability.
Antes de empezar
Para crear políticas de alertas, debes tener los siguientes permisos:
monitoring.alertPolicies.create
monitoring.alertPolicies.delete
monitoring.alertPolicies.update
Tiene estos permisos si tiene alguno de los siguientes roles:
monitoring.alertPolicyEditor
monitoring.editor
- Editor del proyecto
- Propietario del proyecto
Si quieres crear políticas de alertas basadas en registros con la CLI de Google Cloud, también debes tener el rol serviceusage.serviceUsageConsumer
. Para obtener instrucciones sobre cómo configurar políticas de alertas basadas en registros, consulta Configurar alertas basadas en registros en la documentación de Google Cloud Observability.
Para consultar tus roles, ve a la página IAM en la consola de Google Cloud Google Cloud.
Crear una política de ejemplo: servidor de 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. Con esta política, puedes recibir una notificación cuando el servidor de la API de un clúster no esté disponible.
Descarga el archivo de configuración de la política: apiserver-unavailable.json
Crea la política:
gcloud alpha monitoring policies create --policy-from-file=POLICY_CONFIG
Sustituye POLICY_CONFIG por la ruta del archivo de configuración que acabas de descargar.
Para ver tus políticas de alertas, haz lo siguiente:
Consola
En la Google Cloud consola, ve a la página Monitorización.
A la izquierda, selecciona Alertas.
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 los detalles de tu nueva política. 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/…
Crear políticas de alertas adicionales
En esta sección se proporcionan descripciones y archivos de configuración de un conjunto de políticas de alertas recomendadas.
Para crear una política, sigue los mismos pasos que en el ejercicio anterior:
Para descargar el archivo de configuración, haz clic en el enlace de la columna de la derecha.
Si quiere, puede ajustar las condiciones para que se adapten mejor a sus necesidades específicas. Por ejemplo, puede añadir filtros adicionales para un subconjunto de clústeres o ajustar los valores de umbral para encontrar el equilibrio entre el ruido y la criticidad.
Para crear la política, ejecuta
gcloud alpha monitoring policies create
.
Puedes descargar e instalar todas las muestras de políticas de alertas descritas 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 políticas 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 |
Scheduler no disponible (crítico) | La métrica de tiempo de actividad del programador no está disponible | scheduler-unavailable.json |
Controller Manager no disponible (crítico) | La métrica de tiempo de actividad de Controller Manager no está disponible | controller-manager-unavailable.json |
Sistema de Kubernetes
Nombre de la alerta | Descripción | Definición de políticas de alertas en Cloud Monitoring |
---|---|---|
El pod se reinicia continuamente (advertencia) | El pod se reinicia continuamente y puede que esté en un bucle de fallos | pod-crash-looping.json |
El pod no está listo durante más de una hora (crítico) | El pod está en un estado no preparado durante más de una hora | pod-not-ready-1h.json |
El uso de la CPU del contenedor supera el 80 % (advertencia) | El uso de CPU del contenedor supera el 80% del límite | container-cpu-usage-high-reaching-limit.json |
El uso de la memoria del contenedor supera el 85 % (advertencia) | El uso de memoria del contenedor supera el 85% del límite | container-memory-usage-high-reaching-limit.json |
Uso elevado de volumen persistente (crítico) | El volumen persistente reclamado tiene menos del 3 % de espacio libre | persistent-volume-usage-high.json |
El uso de CPU de los nodos supera el 80 % (advertencia) | El uso de CPU del nodo supera el 80% del total asignable durante 5 minutos | node-cpu-usage-high.json |
El uso del disco del nodo supera el 85 % (advertencia) | Menos del 15 % de espacio libre por punto de montaje 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 minutos | node-memory-usage-high.json |
El nodo no está listo durante más de una hora (crítico) | El nodo no está listo durante más de una hora | node-not-ready-1h.json |
Rendimiento de Kubernetes
Nombre de la alerta | Descripción | Definición de políticas de alertas en Cloud Monitoring |
---|---|---|
La proporción de errores del servidor de la API supera el 20 % (crítico) | El servidor de la API devuelve errores 5xx o 429 en más del 20% de todas las solicitudes por verbo durante 15 minutos | apiserver-error-ratio-high.json |
Cambio de líder de ETCD o fallo de propuesta demasiado frecuentes (advertencia) | El etcd líder cambia o las propuestas fallan con demasiada frecuencia |
etcd-leader-changes-or-proposal-failures-frequent.json |
El servidor ETCD no tiene quórum (crítico) | No se han confirmado propuestas de servidor etcd durante 5 minutos, por lo que es posible que hayan perdido el quórum. |
etcd-server-not-in-quorum.yaml |
El almacenamiento de etcd supera el límite del 90 % (advertencia) | El uso del almacenamiento de etcd supera el 90% del límite |
etcd-storage-usage-high.json |
Políticas de alertas con PromQL
Las consultas de las políticas de alertas también se pueden expresar en PromQL en lugar de en MQL.
Por ejemplo, la versión PromQL de la política API server error ratio exceeds 20
percent (critical)
se puede descargar: apiserver-error-ratio-high-promql.json.
Para obtener más información, consulta la documentación sobre Uso de Managed Service para Prometheus de Google Distributed Cloud y la documentación sobre Políticas de alertas con PromQL de Cloud Monitoring.
Recibir notificaciones
Después de crear una política de alertas, puedes definir uno o varios canales de notificación para la política. Hay varios tipos de canales de notificaciones. Por ejemplo, puedes recibir notificaciones por correo electrónico, en un canal de Slack o en una aplicación móvil. Puedes elegir los canales que mejor se adapten a tus necesidades.
Para obtener instrucciones sobre cómo configurar los canales de notificación, consulta el artículo Gestionar canales de notificación.