En esta página se describe cómo usar los indicadores de nivel de servicio (SLIs) de Config Sync.
Para recibir notificaciones cuando Config Sync no funcione correctamente, configura reglas de alertas de Prometheus basadas en estos SLIs. Cada SLI incluye un ejemplo de cómo crear una regla de alerta. Para obtener más información sobre cómo usar Prometheus con Config Sync, consulta el artículo Monitorizar Config Sync con métricas.
Pods de Config Sync con un número de contenedores incorrecto
Si el número de contenedores de un pod de Config Sync es inferior al esperado, es posible que Config Sync no se esté ejecutando. Puedes configurar una alerta para detectar este problema e inspeccionar el pod de Config Sync para averiguar por qué faltan algunos contenedores. Cuando configures las alertas, te recomendamos que establezcas un intervalo de tiempo de al menos cinco minutos para evitar alertas innecesarias. Por ejemplo, durante una actualización, el recuento de contenedores de un pod puede ser inferior al objetivo.
Si no sabes cuántos contenedores se esperan, consulta Implementaciones, pods y contenedores de Config Sync.
Ejemplos de reglas de alertas de Prometheus
En esta sección se incluyen ejemplos que te avisan cuando hay pods con un número de contenedores incorrecto.
Para recibir una notificación cuando el número de contenedores de un pod de reconciliador raíz sea inferior al esperado, crea la siguiente regla de alerta:
alert: RootReconcilerPodMissingContainer expr: count by (cluster_name, pod_name) (kubernetes_io:container_uptime{namespace_name="config-management-system", pod_name=~"root-reconciler-.*"}) < 4 # Setting the for field to 5m to avoid unnecessary alerts. for: 5m
Para recibir una notificación cuando el número de contenedores de un reconciliador de espacio de nombres Pod sea inferior al esperado, crea la siguiente regla de alerta:
alert: NamespaceReconcilerPodMissingContainer expr: count by (cluster_name, pod_name) (kubernetes_io:container_uptime{namespace_name="config-management-system", pod_name=~"ns-reconciler-.*"}) < 4 for: 5m
Para recibir una notificación cuando el número de contenedores de un pod reconciler-manager sea inferior al esperado, crea la siguiente regla de alerta:
alert: ReconcilerManagerPodMissingContainer expr: count by (cluster_name, pod_name) (kubernetes_io:container_uptime{namespace_name="config-management-system", pod_name=~"reconciler-manager-.*"}) < 2 for: 5m
Contenedores de Config Sync en mal estado
Si el recuento de reinicios de un contenedor de Config Sync alcanza un umbral determinado, significa que algo va mal. Por ejemplo, un contenedor de reconciliador raíz que no tenga suficientes recursos de memoria se reiniciará con el error OOMKilled
hasta que tenga suficiente memoria.
Ejemplo de regla de alerta de Prometheus
Para recibir una notificación cuando un contenedor de Config Sync se haya reiniciado más de tres veces, crea la siguiente regla de alerta:
alert: TooManyContainerRestarts
expr: kubernetes_io:container_restart_count{namespace_name=~"config-management-system|config-management-monitoring|resource-group-system"} > 3
Config Sync tiene errores persistentes
Si Config Sync detecta errores persistentes, significa que algo no funciona correctamente. Cuando Config Sync detecta errores, sigue intentando sincronizar las configuraciones del origen con un clúster hasta que se complete la sincronización. Sin embargo, algunos errores no se pueden corregir volviendo a intentarlo y requieren tu intervención.
Ejemplo de regla de alerta de Prometheus
Para recibir una notificación cuando un reconciliador de raíz o de espacio de nombres detecte errores persistentes durante dos horas, crea la siguiente regla de alerta:
alert: PersistentConfigSyncErrors
expr: sum by (cluster, configsync_sync_kind, configsync_sync_name, configsync_sync_namespace, errorclass) (config_sync_reconciler_errors) > 0
for: 2h
En este ejemplo:
- La etiqueta
configsync_sync_kind
puede tener los siguientes valores:RootSync
oRepoSync
. - La etiqueta
configsync_sync_name
indica el nombre de un objeto RootSync o RepoSync. - La etiqueta
configsync_sync_namespace
indica el espacio de nombres de un objeto RootSync o RepoSync. La etiqueta
errorclass
puede tener tres valores:1xxx
,2xxx
y9xxx
. Cada etiqueta corresponde a un tipo de error diferente:1xxx
errores: errores de configuración que puedes corregir2xxx
errores: errores del lado del servidor que puede que no puedas corregir9xxx
errores: errores internos que no puedes corregir
Config Sync se queda bloqueado en la fase de sincronización
No se puede interrumpir un intento de sincronización en Config Sync. Si las configuraciones del origen son demasiado grandes o complejas (por ejemplo, si el origen contiene un gran número de recursos de Config Connector), puede tardar más de una hora en sincronizarse con el clúster. Sin embargo, si han transcurrido dos horas desde la última sincronización correcta, puede que haya algún problema.
Para comprobar si el intento de sincronización actual sigue en curso, consulta el estado de RootSync o RepoSync. Si la sincronización actual sigue en curso, puedes dividir tu fuente de información veraz para que cada fuente se pueda sincronizar más rápido o aumentar el umbral de alerta de dos horas a un periodo más largo. Si no hay ningún intento de sincronización en curso, el reconciliador de Config Sync no funciona, ya que debería seguir intentándolo hasta que sincronice las configuraciones del origen con el clúster correctamente. Si esto ocurre, deriva el caso al equipo de asistencia de Google Cloud .
Ejemplo de regla de alerta de Prometheus
Para recibir una notificación cuando la última sincronización correcta de un reconciliador de raíz o de espacio de nombres se haya producido hace más de dos horas, crea una regla de alerta:
alert: OldLastSyncTimestamp
# The status label indicates whether the last sync succeeded or not.
# Possible values: success, error.
expr: time() - topk by (cluster, configsync_sync_kind, configsync_sync_name, configsync_sync_namespace) (1, config_sync_last_sync_timestamp{status="success"}) > 7200
Config Sync experimenta regresiones en el rendimiento
Es posible que Config Sync tenga regresiones de rendimiento después de actualizarse. Las regresiones de rendimiento pueden producirse de las siguientes formas:
- Aumento del tiempo de sobrecarga de conciliación de un objeto RootSync o RepoSync
- Aumento del tiempo de sobrecarga de conciliación de un objeto ResourceGroup
- Aumento del tiempo de sobrecarga de la sincronización de configuraciones de origen a un clúster
El tiempo adicional necesario para reconciliar un objeto RootSync o RepoSync
La reconciler-manager
Deployment reconcilia los objetos RootSync y RepoSync.
Puedes usar el percentil 90 del tiempo de sobrecarga de conciliación de un objeto RootSync o RepoSync para detectar regresiones de rendimiento.
Ejemplos de reglas de alertas de Prometheus
En esta sección se incluyen ejemplos de reglas de alertas de Prometheus que te avisan cuando
la reconciler-manager
Deployment tiene regresiones de rendimiento.
En los siguientes ejemplos se te envía una notificación cuando el percentil 90 del tiempo de sobrecarga de reconciliación de un objeto RootSync o RepoSync durante las últimas 5 horas supera los 0,1 segundos durante 10 minutos. Puedes crear reglas de alerta que monitoricen todos los clústeres o un solo clúster.
Crea la siguiente regla para monitorizar todos los clústeres:
alert: HighLatencyReconcileRootSyncAndRepoSyncOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1 for: 10m
Crea la siguiente regla para monitorizar un solo clúster:
alert: HighLatencyReconcileRootSyncAndRepoSyncClusterLevel expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_reconcile_duration_seconds_bucket[5h]))) > 0.1 for: 10m
El tiempo adicional necesario para reconciliar un objeto ResourceGroup
La resource-group-controller-manager
implementación reconcilia los objetos ResourceGroup. Puedes usar el percentil 90 de la sobrecarga de tiempo de reconciliación de un ResourceGroup para detectar regresiones de rendimiento.
Ejemplos de reglas de alertas de Prometheus
Esta sección incluye reglas de alertas de Prometheus que te avisan cuando la resource-group-controller-manager
implementación tiene regresiones de rendimiento.
En los siguientes ejemplos, se te envía una notificación cuando el percentil 90 de la sobrecarga de tiempo de conciliación de un objeto ResourceGroup durante las últimas 5 horas supera los 5 segundos durante 10 minutos. Puedes crear reglas de alerta que monitoricen todos los clústeres o un solo clúster.
Crea la siguiente regla para monitorizar todos los clústeres:
alert: HighLatencyReconcileResourceGroupOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5 for: 10m
Crea la siguiente regla para monitorizar un solo clúster:
alert: HighLatencyReconcileResourceGroupClusterLevel expr: histogram_quantile(0.9, sum by (cluster, le) (rate(config_sync_rg_reconcile_duration_seconds_bucket[5h]))) > 5 for: 10m
El tiempo adicional que supone sincronizar las configuraciones de la fuente con un clúster.
Un reconciliador de raíz o de espacio de nombres sincroniza las configuraciones de la fuente de información veraz con un clúster. Puedes usar el percentil 90 del tiempo de sobrecarga de la sincronización de configuraciones de la fuente a un clúster para detectar regresiones de rendimiento.
Ejemplos de reglas de alertas de Prometheus
Esta sección incluye reglas de alertas de Prometheus que te avisan cuando la implementación del reconciliador de espacio de nombres o raíz tiene regresiones de rendimiento.
En los siguientes ejemplos se te envía una notificación cuando el percentil 90 del tiempo de latencia de la sincronización de configuraciones en todos los clústeres durante las últimas cinco horas supera una hora durante cinco minutos.Puedes crear reglas de alertas que monitoricen todos los clústeres o un solo clúster.
Crea la siguiente regla para monitorizar todos los clústeres:
alert: HighApplyDurationOverall expr: histogram_quantile(0.9, sum by (le) (rate(config_sync_apply_duration_seconds_bucket[5h]))) > 3600 for: 5m
Crea la siguiente regla para monitorizar un solo clúster:
alert: HighApplyDurationRootSyncRepoSyncLevel expr: histogram_quantile(0.9, sum by (cluster, configsync_sync_kind,configsync_sync_name, configsync_sync_namespace, le) (rate(config_sync_apply_duration_seconds_bucket[5h]))) > 3600 for: 5m