Supervisar el Sincronizador de configuración

En la página, se describe cómo puedes supervisar los recursos del Sincronizador de configuración.

Cuando habilitas la función API de RootSync y RepoSync, el Sincronizador de configuración usa OpenCensus para crear y registrar métricas, y OpenTelemetry para exportar sus métricas a Prometheus y a Cloud Monitoring. También puedes usar OpenTelemety para exportar métricas a un sistema de supervisión personalizado. Este proceso te brinda tres formas de supervisar tus recursos:

  1. Cloud Monitoring
  2. Sistema de supervisión personalizado
  3. Prometheus

Si no habilitas las API de RootSync y RepoSync, solo puedes supervisar recursos con Prometheus.

Métricas de OpenTelemetry disponibles

Cuando tienes las API de RootSync y RepoSync habilitadas, el Sincronizador de configuración y el controlador de grupos de recursos recopilan las siguientes métricas y las ponen a disposición de OpenTelemetry. En la columna Etiquetas, se enumeran todas las etiquetas que se aplican a cada métrica. Las métricas con etiquetas representan varias medidas, una para cada combinación de valores de etiqueta.

Métricas del Sincronizador de configuración

Las siguientes métricas están disponibles en las versiones 1.10.1 y posteriores de Anthos Config Management.

Nombre Tipo Etiquetas Descripción
api_duration_seconds Distribución operación, estado La distribución de latencia de las llamadas al servidor de la API
apply_duration_seconds Distribución status Distribución de la latencia de los eventos de sincronización de recursos del aplicador
aplicar_operaciones_total Count operación, estado La cantidad total de operaciones que se realizaron para sincronizar recursos con la fuente de información
declared_resources Último valor conciliador La cantidad de recursos declarados que se analizaron en Git
internal_errors_total Recuento conciliador, fuente La cantidad total de errores internos que activó la Sincronizador de configuración
last_sync_timestamp Último valor conciliador La marca de tiempo de la sincronización más reciente de Git
parser_duration_seconds Distribución conciliador, estado, activador, fuente La distribución de latencia del bucle de análisis y la aplicación de datos
pipeline_error_observed Último valor name, reconciler, component El estado de los recursos personalizados de RootSync y RepoSync Un valor de 1 indica un error.
reconcile_duration_seconds Distribución status Distribución de latencia de los eventos de conciliación manejados por el administrador de conciliación.
reconciler_errors Último valor conciliador, componente La cantidad de errores en los conciliadores RootSync y RepoSync
remediate_duration_seconds Distribución status Distribución de latencia de los eventos de conciliación del remediador
resource_conflicts_total Count conciliador La cantidad total de conflictos de recursos que resultan de una discrepancia entre los recursos almacenados en caché y los recursos del clúster
resource_fights_total Count conciliador La cantidad total de recursos que se sincronizan con demasiada frecuencia. Cualquier resultado mayor que cero indica un problema. Para obtener más información, consulta KNV2005: ResourceFightWarning.
rendering_count_total Count conciliador El recuento de ejecuciones de sincronización que usó la renderización de charts de Helm o Kustomize en los recursos.
skip_rendering_count_total Count conciliador El recuento de ejecuciones de sincronización que no usó la renderización de charts de Helm o Kustomize en los recursos.
resource_override_count_total Count conciliador, contenedor, recurso El recuento de anulaciones de recursos especificadas en el parche de recursos
git_sync_depth_override_count_total Count - El conteo de objetos Root/RepoSync en los que se establece la anulación de spec.override.gitSyncDepth. La profundidad de Git se puede usar para mejorar el rendimiento cuando se sincroniza desde repositorios grandes.
no_ssl_verify_count_total Count - El recuento de objetos Root/RepoSync con la anulación de .spec.git.noSSLVerify configurada.

Métricas del controlador de grupos de recursos

El controlador de grupos de recursos es un componente del Sincronizador de configuración que realiza un seguimiento de los recursos administrados y verifica si cada recurso individual está listo o conciliado. Las siguientes métricas están disponibles en las versiones 1.10 y posteriores de Anthos Config Management.

Nombre Tipo Etiquetas Descripción
reconcile_duration_seconds Distribución stallreason La distribución del tiempo necesario para conciliar una CR de ResourceGroup
resource_group_total Último valor La cantidad actual de la CR de ResourceGroup
resource_count_total Suma La cantidad total de recursos que realizan el seguimiento de todas las CR de ResourceGroup en el clúster
resource_count Último valor resourcegroup La cantidad total de recursos rastreados por un ResourceGroup
ready_resource_count_total Suma La cantidad total de recursos listos en todas las CR de ResourceGroup del clúster
ready_resource_count Último valor resourcegroup La cantidad total de recursos listos en un ResourceGroup
resource_ns_count Último valor resourcegorup La cantidad de espacios de nombres que usan los recursos en un ResourceGroup
cluster_scoped_resource_count Último valor resourcegroup La cantidad de recursos con permisos de clúster en un ResourceGroup
crd_count Último valor resourcegroup La cantidad de CRD en un ResourceGroup
kcc_resource_count_total Suma La cantidad total de recursos de Config Connector en todos los CR de ResourceGroup del clúster
kcc_resource_count Medidor resourcegroup La cantidad total de recursos KCC en un ResourceGroup
pipeline_error_obvserved Último valor name, reconciler, component El estado de los recursos personalizados de RootSync y RepoSync Un valor de 1 indica un error.

Etiquetas de métricas del Sincronizador de configuración

Las etiquetas de métricas se pueden usar para agregar datos de métricas. Se puede seleccionar en la lista desplegable Agrupar por desde Consola de Monitoring.

Etiquetas personalizadas

Las etiquetas personalizadas se enumeran para cada métrica en la columna Etiqueta de las tablas anteriores.

Name Valores Descripción
operation crear, aplicar parche, actualizar, borrar El tipo de operación que se realizó
status correcto, error El estado de ejecución de una operación
reconciler rootsync, repositoriosync El tipo de conciliador
source analizador, diferente, remediador La fuente del error interno
trigger reintento, watchUpdate, managementConflict, resync, reimportación El activador de un evento de conciliación
name El nombre del conciliador El nombre del conciliador
component análisis, fuente, sincronización, renderización, preparación El nombre del componente o la etapa en el que se encuentra la conciliación
container conciliador, git-sync El nombre del contenedor
resource cpu, memoria El tipo de recurso

Etiquetas de recursos

Las métricas de supervisión personalizadas del Sincronizador de configuración usan el tipo de recurso K8s_Pod, que viene con las siguientes etiquetas

Name Descripción
project El ID del proyecto
cluster_name El nombre del clúster
location La ubicación/zona del clúster
namespace_name El nombre del espacio de nombres desde el que se exportan las métricas
pod_name El nombre del Pod desde el que se exportan las métricas

Comprende la métrica pipeline_error_observad

La métrica pipeline_error_observed es una métrica que puede ayudarte a identificar con rapidez los CR de RepoSync o RootSync que no estén sincronizados o contengan recursos que no se concilian con el estado deseado. Esta métrica está disponible en las versiones 1.10 y posteriores de Anthos Config Management.

  • Para una sincronización exitosa de RootSync o RepoSync, las métricas con todos los componentes (rendering, source, sync, readiness) se observan con el valor 0.

    Una captura de pantalla de la métrica pipeline_error_observad con todos los componentes observados con el valor 0

  • Cuando la última confirmación falla en la renderización automatizada, la métrica con el componente rendering se observa con el valor 1.

  • Cuando en la revisión de la confirmación más reciente ocurren errores o la última confirmación contiene una configuración no válida, la métrica con el componente source se observa con el valor 1.

  • Cuando algún recurso no se aplica al clúster, la métrica con el componente sync se observa con el valor 1.

  • Cuando se aplica un recurso, pero no alcanza su estado deseado, la métrica con el componente readiness se observa con el valor 1. Por ejemplo, una implementación se aplica al clúster, pero los Pods correspondientes no se crean con éxito.

Supervisa recursos con Cloud Monitoring

Si el Sincronizador de configuración se ejecuta dentro de un entorno de Google Cloud con una cuenta de servicio predeterminada, el Sincronizador de configuración exporta las métricas a Cloud Monitoring de forma automática.

Si Workload Identity está habilitado, completa los siguientes pasos:

  1. Vincula la ServiceAccount default de Kubernetes en el espacio de nombres config-management-monitoring a una cuenta de servicio de Google con el rol de escritor de métricas:

    gcloud iam service-accounts add-iam-policy-binding \
        --role roles/iam.workloadIdentityUser \
        --member "serviceAccount:PROJECT_ID.svc.id.goog[config-management-monitoring/default]" \
        GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID de tu proyecto
    • GSA_NAME: La cuenta de servicio de Google con el rol de escritor de métricas

    Esta acción requiere el permiso iam.serviceAccounts.setIamPolicy en el proyecto.

  2. Anota la cuenta de servicio de Kubernetes mediante la dirección de correo electrónico de la cuenta de servicio de Google:

    kubectl annotate serviceaccount \
        --namespace config-management-monitoring \
        default \
        iam.gke.io/gcp-service-account=GSA_NAME@PROJECT_ID.iam.gserviceaccount.com
    

Para obtener ejemplos sobre cómo ver estas métricas, consulta la siguiente sección Ejemplos de procedimientos de depuración y el artículo Métricas de OpenCensus en Cloud Monitoring.

Procedimientos de depuración de ejemplo para Cloud Monitoring

En los siguientes ejemplos de Cloud Monitoring, se ilustran algunos patrones para usar métricas de OpenCensus a fin de detectar y diagnosticar problemas relacionados con el Sincronizador de configuración cuando usas las API de RootSync y RepoSync.

Formato de métrica

En Cloud Monitoring, las métricas tienen el siguiente formato: custom.googleapis.com/opencensus/config_sync/METRIC.

Este nombre de métrica tiene los siguientes componentes:

  • custom.googleapis.com: todas las métricas personalizadas tienen este prefijo
  • opencensus: este prefijo se agrega porque el Sincronizador de configuración usa la biblioteca de OpenCensus
  • config_sync/: las métricas que el Sincronizador de configuración exporta a Cloud Monitoring tienen este prefijo
  • METRIC: el nombre de la métrica que deseas consultar

Consulta métricas por conciliador

Los objetos RootSync y RepoSync están equipados con métricas de alto nivel que te brindan estadísticas útiles sobre cómo funciona el Sincronizador de configuración en el clúster. Casi todas las métricas están etiquetadas por el nombre del conciliador. Por lo tanto, puedes ver si se produjeron errores y configurar alertas para ellas en Cloud Monitoring.

Un conciliador es un Pod que se implementa como una implementación. Sincroniza los manifiestos de un repositorio de Git a un clúster. Cuando creas un objeto RootSync, el Sincronizador de configuración crea un conciliador llamado root-reconciler. Cuando creas un objeto RepoSync, el Sincronizador de configuración crea un conciliador llamado ns-reconciler-NAMESPACE, en el que NAMESPACE es el espacio de nombres en el que creaste el objeto RepoSync.

En el siguiente diagrama, se muestra cómo funcionan los Pods de conciliación:

Flujo de conciliación

Por ejemplo, para filtrar por nombre de conciliador cuando usas Cloud Monitoring, completa las siguientes tareas:

  1. En Google Cloud Console, ve a Monitoring.

    Ir a Monitoring

  2. En el panel de navegación de Monitoring, haz clic en el explorador de métricas del Explorador de métricas.

  3. En la lista desplegable Seleccionar una métrica, agrega custom.googleapis.com/opencensus/config_sync/reconciler_errors.

  4. En la lista desplegable Filtro, selecciona reconcilier. Aparecerá un cuadro de campos de filtro.

  5. En el cuadro de campos de filtro, selecciona = en el primer campo y root-reconciler en el segundo.

  6. Haga clic en Apply.

Ahora podrás ver las métricas de tus objetos RootSync.

Para obtener más instrucciones sobre cómo realizar un filtro por un tipo de datos específico, consulta Filtra los datos.

Consulta las operaciones del Sincronizador de configuración por componente y estado

Cuando habilitas las API de RootSync y RepoSync, los conciliadores se encargan de importar y aprovisionar desde un repositorio de Git y sincronizar con un clúster. La métrica reconciler_errors está etiquetada por componente para que puedas ver dónde se produjeron los errores.

Por ejemplo, para filtrar por componente cuando usas Cloud Monitoring, completa las siguientes tareas:

  1. En Google Cloud Console, ve a Monitoring.

    Ir a Monitoring

  2. En el panel de navegación de Monitoring, haz clic en el explorador de métricas del Explorador de métricas.

  3. En la lista desplegable Seleccionar una métrica, agrega custom.googleapis.com/opencensus/config_sync/reconciler_errors.

  4. En la lista desplegable Filtro, selecciona component. Aparecerá un cuadro de campos de filtro.

  5. En el cuadro de campos de filtro, selecciona = en el primer cuadro y source en el segundo.

  6. Haga clic en Apply.

Ahora puedes ver los errores que se produjeron cuando se originaron en un repositorio de Git para tus conciliaciones.

También puedes verificar las métricas de los procesos de origen y sincronización consultando las siguientes métricas y filtrándolas por la etiqueta status:

custom.googleapis.com/opencensus/config_sync/parser_duration_seconds
custom.googleapis.com/opencensus/config_sync/apply_duration_seconds
custom.googleapis.com/opencensus/config_sync/remediate_duration_seconds

Configura un exportador personalizado de OpenTelemetry

Si deseas enviar tus métricas a un sistema de supervisión diferente, puedes modificar la configuración de OpenTelemetry. Para obtener una lista de los sistemas de supervisión compatibles, consulta Exportadores de recopiladores de OpenTelemetry y Exportadores de colector de OpenTelemetry.

Los recursos de supervisión de OpenTelemetry se administran en un espacio de nombres config-management-monitoring independiente. Si deseas configurar un exportador personalizado de OpenTelemetry para usarlo con el Sincronizador de configuración, debes crear un ConfigMap con el nombre otel-collector-custom en ese espacio de nombres config-management-monitoring. El ConfigMap debe contener una clave otel-collector-config.yaml y el valor debe ser el contenido del archivo de la configuración personalizada del recopilador de OpenTelemetry. Para obtener más información sobre las opciones de configuración, consulta la documentación de configuración del recopilador de OpenTelemetry.

El siguiente ConfigMap es un ejemplo de un ConfigMap con un exportador de registros personalizado:

# otel-collector-custom-cm.yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: otel-collector-custom
  namespace: config-management-monitoring
  labels:
    app: opentelemetry
    component: otel-collector
data:
  otel-collector-config.yaml: |
    receivers:
      opencensus:
    exporters:
      logging:
        logLevel: debug
    processors:
      batch:
    extensions:
      health_check:
    service:
      extensions: [health_check]
      pipelines:
        metrics:
          receivers: [opencensus]
          processors: [batch]
          exporters: [logging]

Todas la configuración personalizada debe definir un receptor opencensus y una canalización metrics. Los otros campos son opcionales y configurables, pero te recomendamos incluir un procesador batch y una extensión de verificación de estado, como en el ejemplo.

Después de crear el ConfigMap, usa kubectl para crear el recurso:

kubectl apply -f otel-collector-custom-cm.yaml

La implementación del recopilador de OpenTelemetry toma este ConfigMap y se reinicia de forma automática para aplicar la configuración personalizada.

Supervisa recursos con Prometheus

El Sincronizador de configuración usa Prometheus para recopilar y mostrar métricas relacionadas con sus procesos.

También puedes configurar Cloud Monitoring para extraer métricas personalizadas de Prometheus. Así podrás ver las métricas personalizadas en Prometheus y Monitoring. Para obtener más información, consulta Usa Prometheus.

Recopila las métricas

Todas las métricas de Prometheus están disponibles para recopilarse en el puerto 8675. Antes de que puedas recopilar las métricas, debes configurar tu clúster para Prometheus de una de dos maneras. Realiza una de las siguientes acciones:

  • Sigue la documentación de Prometheus a fin de configurar el clúster para la recopilación, o bien

  • Usa el operador de Prometheus junto con los siguientes manifiestos que recopilan todas las métricas de Anthos Config Management cada 10 segundos.

    1. Crea un directorio temporal para guardar los archivos de manifiesto.

      mkdir acm-monitor
      cd acm-monitor
      
    2. Descarga el manifiesto del operador de Prometheus desde el repositorio de CoreOS mediante el comando de curl:

      curl -o bundle.yaml https://raw.githubusercontent.com/coreos/prometheus-operator/master/bundle.yaml
      

      Este manifiesto está configurado para usar el espacio de nombres default, lo que no se recomienda. En el siguiente paso, debes modificar la configuración para usar un espacio de nombres llamado monitoring en su lugar. Para usar un espacio de nombres diferente, reemplázalo cada vez que veas monitoring en los pasos restantes.

    3. Crea un archivo para actualizar el espacio de nombres de ClusterRoleBinding en el paquete anterior.

      # patch-crb.yaml
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: prometheus-operator
      subjects:
      - kind: ServiceAccount
        name: prometheus-operator
        namespace: monitoring # we are patching from default namespace
      
    4. Crea un archivo kustomization.yaml que aplique el parche y modifique el espacio de nombres para otros recursos en el manifiesto.

      # kustomization.yaml
      resources:
      - bundle.yaml
      
      namespace: monitoring
      
      patchesStrategicMerge:
      - patch-crb.yaml
      
    5. Crea el espacio de nombres monitoring si no existe uno. Puedes usar un nombre diferente para el espacio de nombres, pero, si lo haces, también debes cambiar el valor de namespace en los manifiestos de YAML de los pasos anteriores.

      kubectl create namespace monitoring
      
    6. Aplica el manifiesto de Kustomize mediante los siguientes comandos:

      kubectl apply -k .
      
      until kubectl get customresourcedefinitions servicemonitors.monitoring.coreos.com ; \
      do date; sleep 1; echo ""; done

      El segundo comando se bloquea hasta que las CRD estén disponibles en el clúster.

    7. Crea el manifiesto para los recursos necesarios a fin de configurar un servidor de Prometheus que recopile métricas de Anthos Config Management.

      # acm.yaml
      apiVersion: v1
      kind: ServiceAccount
      metadata:
        name: prometheus-acm
        namespace: monitoring
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRole
      metadata:
        name: prometheus-acm
      rules:
      - apiGroups: [""]
        resources:
        - nodes
        - services
        - endpoints
        - pods
        verbs: ["get", "list", "watch"]
      - apiGroups: [""]
        resources:
        - configmaps
        verbs: ["get"]
      - nonResourceURLs: ["/metrics"]
        verbs: ["get"]
      ---
      apiVersion: rbac.authorization.k8s.io/v1
      kind: ClusterRoleBinding
      metadata:
        name: prometheus-acm
      roleRef:
        apiGroup: rbac.authorization.k8s.io
        kind: ClusterRole
        name: prometheus-acm
      subjects:
      - kind: ServiceAccount
        name: prometheus-acm
        namespace: monitoring
      ---
      apiVersion: monitoring.coreos.com/v1
      kind: Prometheus
      metadata:
        name: acm
        namespace: monitoring
        labels:
          prometheus: acm
      spec:
        replicas: 2
        serviceAccountName: prometheus-acm
        serviceMonitorSelector:
          matchLabels:
            prometheus: config-management
        podMonitorSelector:
          matchLabels:
            prometheus: config-management
        alerting:
          alertmanagers:
          - namespace: default
            name: alertmanager
            port: web
        resources:
          requests:
            memory: 400Mi
      ---
      apiVersion: v1
      kind: Service
      metadata:
        name: prometheus-acm
        namespace: monitoring
        labels:
          prometheus: acm
      spec:
        type: NodePort
        ports:
        - name: web
          nodePort: 31900
          port: 9190
          protocol: TCP
          targetPort: web
        selector:
          app: prometheus
          prometheus: acm
      ---
      apiVersion: monitoring.coreos.com/v1
      kind: ServiceMonitor
      metadata:
        name: acm-service
        namespace: monitoring
        labels:
          prometheus: config-management
      spec:
        selector:
          matchLabels:
            monitored: "true"
        namespaceSelector:
          matchNames:
          # If you are using RootSync and RepoSync APIs, change
          # config-management-system to config-management-monitoring
          - config-management-system
        endpoints:
        - port: metrics
          interval: 10s
      ---
      
    8. Aplica el manifiesto mediante los siguientes comandos:

      kubectl apply -f acm.yaml
      
      until kubectl rollout status statefulset/prometheus-acm -n monitoring; \
      do sleep 1; done
      

      El segundo comando se bloquea hasta que los pods estén en ejecución.

    9. Puedes verificar la instalación si reenvías el puerto web del servidor de Prometheus a tu máquina local.

      kubectl -n monitoring port-forward svc/prometheus-acm 9190
      

      Ahora puedes acceder a la IU web de Prometheus en http://localhost:9190.

    10. Quita el directorio temporal.

      cd ..
      rm -rf acm-monitor
      

Métricas de Prometheus disponibles

El Sincronizador de configuración recopila las siguientes métricas y las pone a disposición de Prometheus. En la columna Etiquetas, se enumeran todas las etiquetas que se aplican a cada métrica. Las métricas sin etiquetas representan una sola medición en el tiempo, mientras que las métricas con etiquetas representan varias mediciones, una para cada combinación de valores de etiquetas.

Si esta tabla deja de estar sincronizada, puedes filtrar las métricas por prefijo en la interfaz de usuario de Prometheus. Todas las métricas comienzan con el prefijo gkeconfig_.

Nombre Tipo Etiquetas Descripción
gkeconfig_importer_cycle_duration_seconds_bucket Histograma status Cantidad de ciclos en los que el importador intentó importar archivos de configuración al clúster (distribuido en depósitos por la duración de cada ciclo)
gkeconfig_importer_cycle_duration_seconds_count Histograma status Cantidad de ciclos en los que el importador intentó importar archivos de configuración al clúster (si se ignora la duración)
gkeconfig_importer_cycle_duration_seconds_sum Histograma status Suma de las duraciones de todos los ciclos en los que el importador intentó importar archivos de configuración al clúster
gkeconfig_importer_namespace_configs Indicador Cantidad de archivos de configuración de espacios de nombres en el estado actual
gkeconfig_monitor_errors Indicador component Cantidad de errores en el repositorio de archivos de configuración agrupados por el componente en el que ocurrieron
gkeconfig_monitor_configs Indicador state Cantidad de archivos de configuración (de clústeres y espacios de nombres) agrupados por su estado de sincronización
gkeconfig_monitor_last_import_timestamp Indicador Marca de tiempo de la importación más reciente
gkeconfig_monitor_last_sync_timestamp Indicador Marca de tiempo de la sincronización más reciente
gkeconfig_monitor_sync_latency_seconds_bucket Histograma Cantidad de mediciones de importación a sincronización que se tomaron (distribuidas en depósitos por latencia entre las dos)
gkeconfig_monitor_sync_latency_seconds_count Histograma Cantidad de mediciones de importación a sincronización que se tomaron (si se ignora la latencia entre las dos)
gkeconfig_monitor_sync_latency_seconds_sum Histograma Suma de las latencias de todas las mediciones de importación a sincronización que se tomaron
gkeconfig_syncer_api_duration_seconds_bucket Histograma operation, type, status Cantidad de llamadas realizadas por el sincronizador al servidor de la API (distribuidas en depósitos por la duración de cada llamada)
gkeconfig_syncer_api_duration_seconds_count Histograma operation, type, status Cantidad de llamadas realizadas por el importador al servidor de la API (si se ignora la duración)
gkeconfig_syncer_api_duration_seconds_sum Histograma operation, type, status Suma de las duraciones de todas las llamadas realizadas por el sincronizador al servidor de la API
gkeconfig_syncer_controller_restarts_total Contador source Cantidad total de reinicios de los controladores de archivos de configuración del clúster y del espacio de nombres
gkeconfig_syncer_operations_total Contador operation, type, status Cantidad total de operaciones que se realizaron para sincronizar recursos con archivos de configuración
gkeconfig_syncer_reconcile_duration_seconds_bucket Histograma type, status Cantidad de eventos de conciliación procesados por el sincronizador (distribuidos en depósitos por la duración)
gkeconfig_syncer_reconcile_duration_seconds_count Histograma type, status Cantidad de eventos de conciliación procesados por el sincronizador (si se ignora la duración)
gkeconfig_syncer_reconcile_duration_seconds_sum Histograma type, status Suma de las duraciones de todos los eventos de conciliación procesados por el sincronizador
gkeconfig_syncer_reconcile_event_timestamps Indicador type Marcas de tiempo en las que se produjeron eventos de conciliación del sincronizador

Procedimientos de depuración de ejemplo para Prometheus

Mediante los siguientes ejemplos, se ilustran algunos patrones para usar métricas de Prometheus, campos de estado de objetos y anotaciones de objetos a fin de detectar y diagnosticar problemas relacionados con el Sincronizador de configuración. En estos ejemplos, se muestra cómo puedes comenzar una supervisión de alto nivel que detecte un problema y, luego, definir mejor tu búsqueda de manera progresiva para desglosar y diagnosticar la causa raíz del problema.

Consulta archivos de configuración por estado

El proceso monitor proporciona métricas de alto nivel que brindan estadísticas útiles generales sobre cómo funciona el Sincronizador de configuración en el clúster. Puedes ver si se produjeron errores y, además, puedes configurar alertas para estos.

gkeconfig_monitor_errors

Consulta métricas por conciliador

Si usas las API de RootSync de Config Sync y RepoSync, puedes supervisar los objetos RootSync y RepoSync. Los objetos RootSync y RepoSync están instrumentados con métricas de alto nivel que te brindan estadísticas útiles sobre cómo funciona el Sincronizador de configuración en el clúster. Casi todas las métricas están etiquetadas por el nombre del conciliador. Por lo tanto, puedes ver si se produjeron errores y configurar alertas para ellas en Prometheus.

Un conciliador es un Pod que sincroniza los manifiestos de un repositorio de Git a un clúster. Cuando creas un objeto RootSync, el Sincronizador de configuración crea un conciliador llamado root-reconciler. Cuando creas un objeto RepoSync, el Sincronizador de configuración crea un conciliador llamado ns-reconciler-NAMESPACE, en el que NAMESPACE es el espacio de nombres en el que creaste tu objeto RepoSync.

En Prometheus, puedes usar los siguientes filtros para los conciliadores:

# Querying Root reconciler
config_sync_reconciler_errors{root_reconciler="root-reconciler"}

# Querying Namespace reconciler for a namespace called retail
config_sync_reconciler_errors{ns_reconciler_retail="ns-reconciler-retail"}

Usa nomos status para mostrar errores

Además de usar las métricas de Prometheus para supervisar el estado del Sincronizador de configuración en tus clústeres, puedes usar el comando nomos status que muestra errores de todos tus clústeres en la línea de comandos.

Consulta operaciones de importación y sincronización por estado

El Sincronizador de configuración usa un proceso de dos pasos para aplicar los archivos de configuración del repositorio a un clúster. La métrica gkeconfig_monitor_errors está etiquetada por componente para que puedas ver dónde se produjeron los errores.

gkeconfig_monitor_errors{component="importer"}
gkeconfig_monitor_errors{component="syncer"}

También puedes verificar las métricas de los procesos del importador y el sincronizador.

gkeconfig_importer_cycle_duration_seconds_count{status="error"}
gkeconfig_syncer_reconcile_duration_seconds_count{status="error"}

Cuando habilitas las API de RootSync y RepoSync, los conciliadores se encargan de importar y aprovisionar desde un repositorio de Git y sincronizar con un clúster. La métrica reconciler_errors está etiquetada por componente para que puedas ver dónde se produjeron los errores.

En Prometheus, puedes usar las siguientes consultas:

# Check for errors that occurred when sourcing configs from the Git repository.
config_sync_reconciler_errors{component="source"}

# Check for errors that occurred when syncing configs to the cluster.
config_sync_reconciler_errors{component="sync"}

También puedes verificar las métricas de los procesos de origen y de sincronización:

config_sync_parse_duration_seconds{status="error"}
config_sync_apply_duration_seconds{status="error"}
config_sync_remediate_duration_seconds{status="error"}

Verifica el estado del objeto del archivo de configuración

El Sincronizador de configuración define dos objetos personalizados de Kubernetes: ClusterConfig y NamespaceConfig. Estos objetos definen un campo de estado que contiene información sobre el último cambio que se aplicó al archivos de configuración y los errores que ocurrieron. Por ejemplo, si hay un error en un espacio de nombres llamado shipping-dev, puedes verificar el estado del NamespaceConfig correspondiente.

kubectl get namespaceconfig shipping-dev -o yaml

Comprueba la anotación de token de un objeto

Se recomienda que sepas cuándo el Sincronizador de configuración actualizó por última vez un objeto de Kubernetes administrado. Cada objeto administrado se anotó con el hash de la confirmación de Git la última vez que se modificó, así como con la ruta de acceso a la configuración que contenía la modificación.

kubectl get clusterrolebinding namespace-readers
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  annotations:
    configmanagement.gke.io/source-path: cluster/namespace-reader-clusterrolebinding.yaml
    configmanagement.gke.io/token: bbb6a1e2f3db692b17201da028daff0d38797771
  name: namespace-readers
...

Para obtener más información, consulta Etiquetas y anotaciones.

¿Qué sigue?