Usa los SLI del Sincronizador de configuración

En esta página, se describe cómo usar los indicadores de nivel de servicio (SLI) del Sincronizador de configuración.

Para recibir notificaciones cuando el Sincronizador de configuración no funcione según lo previsto, configura las reglas de alertas de Prometheus según estos SLIs. Cada SLI incluye un ejemplo de cómo crear una regla de alerta. Para obtener más información sobre el uso de Prometheus con el Sincronizador de configuración, consulta Supervisa el Sincronizador de configuración con métricas.

Pods del Sincronizador de configuración con un recuento de contenedores incorrecto

Si el recuento de contenedores de un Pod del Sincronizador de configuración es menor de lo esperado, es posible que este último no se esté ejecutando. Puedes configurar una alerta para detectar este problema y, luego, inspeccionar el Pod del Sincronizador de configuración para averiguar por qué faltan algunos contenedores. Cuando configures las alertas, te recomendamos que establezcas el intervalo de tiempo en al menos cinco minutos para evitar alertas innecesarias. Por ejemplo, durante la actualización, la cantidad de contenedores de un Pod puede descender por debajo del objetivo.

Si no conoces el recuento de contenedores esperado, consulta Implementaciones, pods y contenedores del Sincronizador de configuración.

Ejemplos de reglas de alertas de Prometheus

En esta sección, se incluyen ejemplos que te notifican cuando hay Pods con un recuento de contenedores incorrecto.

  • Para recibir una notificación cuando el recuento de contenedores de un Pod de reconciliador raíz sea inferior al recuento 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 recuento de contenedores de un Pod de reconciliador de espacios de nombres sea inferior al recuento 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 recuento de contenedores de un Pod de reconciler-manager sea inferior al recuento 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 del Sincronizador de configuración en mal estado

Si el recuento de reinicios de un contenedor del Sincronizador de configuración alcanza un umbral determinado, significa que hay un problema. Por ejemplo, un contenedor de conciliador raíz que no tiene suficientes recursos de memoria se reiniciaría con el error OOMKilled hasta que obtenga suficiente memoria.

Ejemplo de regla de alerta de Prometheus

Para recibir una notificación cuando un contenedor de Sincronizador de configuración se reinicie más de tres veces, crea la siguiente regla de alertas:

alert: TooManyContainerRestarts
expr: kubernetes_io:container_restart_count{namespace_name=~"config-management-system|config-management-monitoring|resource-group-system"} > 3

El Sincronizador de configuración presenta errores persistentes

Si el Sincronizador de configuración encuentra errores persistentes, significa que hay un problema. Cuando el Sincronizador de configuración encuentra errores, sigue reintentando sincronizar los archivos de configuración desde la fuente a un clúster hasta que se realiza la sincronización correctamente. 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 raíz o de espacio de nombres encuentre errores persistentes durante dos horas, crea la siguiente regla de alertas:

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 o RepoSync.
  • 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 y 9xxx. Cada etiqueta corresponde a un tipo de error diferente:

    • Errores 1xxx: errores de configuración que puedes corregir
    • Errores 2xxx: errores del servidor que es posible que no puedas corregir
    • Errores 9xxx: errores internos que no puedes corregir

El Sincronizador de configuración se detuvo en la etapa de sincronización

Un intento de sincronización en Sincronizador de configuración no se puede interrumpir. Si las configuraciones de la fuente son demasiado grandes o complejas (por ejemplo, si tu fuente contiene una gran cantidad de recursos de Config Connector), puede tardar más de una hora en finalizar la sincronización de estas configuraciones con el clúster. Sin embargo, si pasaron dos horas desde la última sincronización exitosa, es posible que haya un problema.

Para verificar si el intento de sincronización actual sigue en curso, consulta el estado de RootSync o RepoSync. Si el intento de sincronización actual aún está en curso, puedes dividir tu fuente de información para que cada fuente de información se pueda sincronizar más rápido o aumentar el umbral de alerta de dos horas a un período más largo. Si no hay ningún intento de sincronización en curso, el conciliador del Sincronizador de configuración no funciona, ya que debería seguir reintentando hasta que sincronice los archivos de configuración de la fuente con el clúster de forma correcta. Si esto sucede, deriva el caso al equipo de asistencia deGoogle Cloud .

Ejemplo de regla de alerta de Prometheus

Para recibir una notificación cuando la última sincronización correcta de un conciliador raíz o de espacio de nombres haya ocurrido 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

El Sincronizador de configuración experimenta regresiones de rendimiento

Es posible que el Sincronizador de configuración tenga regresiones de rendimiento después de actualizarse. Las regresiones de rendimiento pueden ocurrir de las siguientes maneras:

  • Un aumento en la sobrecarga de tiempo de la conciliación de un objeto RootSync o RepoSync
  • Aumento de la sobrecarga de tiempo de la conciliación de un objeto ResourceGroup
  • Aumento de la sobrecarga de tiempo de la sincronización de la configuración desde la fuente a un clúster

La sobrecarga de tiempo de conciliar un objeto RootSync o RepoSync

La reconciler-manager Deployment reconcilia los objetos RootSync y RepoSync. Puedes usar el percentil noventa de la sobrecarga de tiempo de la reconciliació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 notifican cuando la Deployment de reconciler-manager tiene regresiones de rendimiento.

En los siguientes ejemplos, se te envía una notificación cuando el percentil noventa de la sobrecarga de tiempo de conciliación de un objeto RootSync o RepoSync durante las últimas 5 horas supera los 0.1 segundos durante 10 minutos. Puedes crear reglas de alertas que supervisen todos los clústeres o un solo clúster.

  • Crea la siguiente regla para supervisar 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 supervisar 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
    

La sobrecarga de tiempo de conciliar un objeto ResourceGroup

La Deployment de resource-group-controller-manager reconcilia objetos de ResourceGroup. Puedes usar el percentil noventa del tiempo de sobrecarga de la conciliación de un ResourceGroup para detectar regresiones de rendimiento.

Ejemplos de reglas de alertas de Prometheus

En esta sección, se incluyen reglas de alertas de Prometheus que te notifican cuando la Deployment de resource-group-controller-manager tiene regresiones de rendimiento.

En los siguientes ejemplos, se te envía una notificación cuando el percentil noventa 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 alertas que supervisen todos los clústeres o un solo clúster.

  • Crea la siguiente regla para supervisar 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 supervisar 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
    

Sobrecarga de tiempo de la sincronización de la configuración desde la fuente a un clúster

Un reconciliador raíz o de espacio de nombres sincroniza las configuraciones desde la fuente de información a un clúster. Puedes usar el percentil noventa del tiempo de sobrecarga de la sincronización de la configuración desde la fuente a un clúster para detectar regresiones de rendimiento.

Ejemplos de reglas de alertas de Prometheus

En esta sección, se incluyen reglas de alertas de Prometheus que te notifican cuando la Deployment del reconciliador raíz o del espacio de nombres tiene regresiones de rendimiento.

En los siguientes ejemplos, se te envía una notificación cuando el percentil noventa de la sobrecarga de tiempo de sincronización de parámetros de configuración en todos los clústeres durante las últimas cinco horas supera una hora durante cinco minutos. Puedes crear reglas de alertas que supervisen todos los clústeres o un solo clúster.

  • Crea la siguiente regla para supervisar 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 supervisar 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