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 incorrecto de contenedores
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, el recuento de contenedores de un Pod puede disminuir 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 incorrecto de contenedores.
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 alertas:
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 espacio de nombres sea inferior al recuento esperado, crea la siguiente regla de alertas:
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 alertas:
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 con estado no saludable
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á 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 Sincronizador de configuración se reinicie 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
El Sincronizador de configuración encuentra errores persistentes
Si el Sincronizador de configuración encuentra errores persistentes, significa que hay un problema. Cuando el Sincronizador de configuración encuentra errores, reintenta sincronizar los archivos de configuración de la fuente a un clúster hasta que lo logra. Sin embargo, algunos errores no se pueden corregir con la repetición de la acción y requieren tu intervención.
Ejemplo de regla de alerta de Prometheus
Para recibir una notificación cuando un reconciliador de raíz o 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
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
errors: errores de configuración que puedes corregir2xxx
errors: errores del servidor que es posible que no puedas corregir9xxx
errors: errores internos que no puedes corregir
El Sincronizador de configuración se bloquea en la etapa de sincronización
Un intento de sincronización en el Sincronizador de configuración no se puede interrumpir. Si las configuraciones de la fuente son demasiado grandes o complejas (por ejemplo, tu fuente contiene una gran cantidad de recursos de Config Connector), puede tardar más de una hora en terminar de sincronizar estas configuraciones con el clúster. Sin embargo, si transcurrieron dos horas desde la última sincronización correcta, es posible que haya un problema.
Para verificar si el intento de sincronización actual aún está en curso, verifica 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 bien 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 está dañado, ya que se supone que debe 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 a la Asistencia de Google 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 fue 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 la actualización. Las regresiones de rendimiento pueden ocurrir de las siguientes maneras:
- Un aumento de la sobrecarga de tiempo de conciliación de un objeto RootSync o RepoSync
- Un aumento de la sobrecarga de tiempo para conciliar un objeto ResourceGroup
- Un aumento de la sobrecarga de tiempo de sincronización de los archivos de configuración de la fuente a un clúster
La sobrecarga de tiempo de conciliar un objeto RootSync o RepoSync
La implementación de reconciler-manager
concilia los objetos RootSync y RepoSync.
Puedes usar el percentil noventa de la sobrecarga de tiempo 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 notifican cuando
la implementación 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 uno solo.
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 implementación de resource-group-controller-manager
concilia los objetos de ResourceGroup. Puedes usar el percentil noventa de la sobrecarga de tiempo de conciliació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 notifican cuando la
implementación 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 es superior a 5 segundos durante 10 minutos. Puedes crear reglas de alertas que supervisen todos los clústeres o uno solo.
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
La sobrecarga de tiempo de sincronizar la configuración de la fuente a un clúster
Un conciliador raíz o de espacio de nombres sincroniza la configuración de la fuente de información con un clúster. Puedes usar el percentil noventa de la sobrecarga de tiempo de sincronización de parámetros de configuración 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 notifican cuando la implementación del reconciliador de nombres raíz o de 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