En la página, se describe cómo enviar métricas del Sincronizador de configuración a Prometheus.
En esta página, se explica cómo usar Prometheus para ver las métricas del Sincronizador de configuración. Si deseas conocer otras formas de exportar métricas, consulta Supervisa el Sincronizador de configuración con Cloud Monitoring o Supervisa el Sincronizador de configuración con la supervisión personalizada.
El Sincronizador de configuración recopila y exporta métricas automáticamente a Prometheus. 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 Cómo usar Prometheus en la documentación de GKE.
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 el scraping, o bien
Usa el operador de Prometheus junto con los siguientes manifiestos, que realizan el scraping todas las métricas del Sincronizador de configuración cada 10 segundos.
Crea un directorio temporal para guardar los archivos de manifiesto.
mkdir config-sync-monitor cd config-sync-monitor
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 llamadomonitoring
en su lugar. Para usar un espacio de nombres diferente, reemplázalo cada vez que veasmonitoring
en los pasos restantes.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
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
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 denamespace
en los manifiestos de YAML de los pasos anteriores.kubectl create namespace monitoring
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.
Crea el manifiesto para los recursos necesarios a fin de configurar un servidor de Prometheus que recopile métricas del Sincronizador de configuración.
# config-sync-monitoring.yaml apiVersion: v1 kind: ServiceAccount metadata: name: prometheus-config-sync namespace: monitoring --- apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: prometheus-config-sync 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-config-sync roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: prometheus-config-sync subjects: - kind: ServiceAccount name: prometheus-config-sync namespace: monitoring --- apiVersion: monitoring.coreos.com/v1 kind: Prometheus metadata: name: config-sync namespace: monitoring labels: prometheus: config-sync spec: replicas: 2 serviceAccountName: prometheus-config-sync serviceMonitorSelector: matchLabels: prometheus: config-management alerting: alertmanagers: - namespace: default name: alertmanager port: web resources: requests: memory: 400Mi --- apiVersion: v1 kind: Service metadata: name: prometheus-config-sync namespace: monitoring labels: prometheus: config-sync spec: type: NodePort ports: - name: web nodePort: 31900 port: 9190 protocol: TCP targetPort: web selector: prometheus: config-sync --- ---
Aplica el manifiesto mediante los siguientes comandos:
kubectl apply -f config-sync.yaml until kubectl rollout status statefulset/prometheus-config-sync -n monitoring; \ do sleep 1; done
El segundo comando se bloquea hasta que los pods estén en ejecución.
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-config-sync 9190
Ahora puedes acceder a la IU web de Prometheus en
http://localhost:9190
.Quita el directorio temporal.
cd .. rm -rf config-sync-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 config_sync_
.
Nombre | Tipo | Etiquetas | Descripción |
---|---|---|---|
config_sync_api_duration_seconds_bucket |
Histograma | estado, operación | Distribución de latencia de las llamadas al servidor de la API (distribuidas en buckets por la duración de cada ciclo) |
config_sync_api_duration_seconds_count |
Histograma | estado, operación | Distribución de latencia de las llamadas al servidor de la API (si se ignora la duración) |
config_sync_api_duration_seconds_sum |
Histograma | estado, operación | Es la suma de las duraciones de todas las llamadas al servidor de la API. |
config_sync_apply_duration_seconds_bucket |
Histograma | confirmación, estado | Distribución de latencia de la aplicación de recursos declarados desde la fuente de información a un clúster (distribuido en buckets por la duración de cada ciclo) |
config_sync_apply_duration_seconds_count |
Histograma | confirmación, estado | Distribución de latencia de la aplicación de recursos declarados desde la fuente de información a un clúster (sin tener en cuenta la duración) |
config_sync_apply_duration_seconds_sum |
Histograma | confirmación, estado | Es la suma de las duraciones de toda la latencia de la aplicación de recursos declarados desde la fuente de información a un clúster. |
config_sync_apply_operations_total |
Contador | operación, estado, controlador | Cantidad de operaciones que se realizaron para sincronizar recursos de la fuente de información con un clúster |
config_sync_cluster_scoped_resource_count |
Indicador | resourcegroup | La cantidad de recursos con permisos de clúster en un ResourceGroup |
config_sync_crd_count |
Indicador | resourcegroup | Cantidad de CRD en un ResourceGroup |
config_sync_declared_resources |
Indicador | confirmación | La cantidad de recursos declarados que se analizaron en Git. |
config_sync_internal_errors_total |
Contador | fuente | Cantidad de errores internos que activó el Sincronizador de configuración. Es posible que la métrica no aparezca si no se produjo un error interno. |
config_sync_kcc_resource_count |
Indicador | resourcegroup | Cantidad de recursos de Config Connector en un ResourceGroup |
config_sync_last_apply_timestamp |
Indicador | confirmación, estado | Marca de tiempo de la operación de aplicación más reciente |
config_sync_last_sync_timestamp |
Indicador | confirmación, estado | La marca de tiempo de la sincronización más reciente de Git. |
config_sync_parser_duration_seconds_bucket |
Histograma | estado, activador, fuente | Distribución de latencia de las diferentes etapas involucradas en la sincronización de la fuente de información a un clúster |
config_sync_parser_duration_seconds_count |
Histograma | estado, activador, fuente | Distribución de latencia de las diferentes etapas involucradas en la sincronización de la fuente de información a un clúster (se ignora la duración) |
config_sync_parser_duration_seconds_sum |
Histograma | estado, activador, fuente | Es la suma de las latencias de las diferentes etapas involucradas en la sincronización de la fuente de información a un clúster. |
config_sync_pipeline_error_observed |
Indicador | nombre, conciliador, componente | El estado de los recursos personalizados de RootSync y RepoSync Un valor de 1 indica un error. |
config_sync_ready_resource_count |
Indicador | resourcegroup | La cantidad total de recursos listos en un ResourceGroup |
config_sync_reconcile_duration_seconds_bucket |
Histograma | estado | Distribución de latencia de los eventos de conciliación manejados por el administrador de conciliación (distribuidos en buckets por la duración de cada llamada) |
config_sync_reconcile_duration_seconds_count |
Histograma | estado | Distribución de latencia de los eventos de conciliación manejados por el administrador de conciliación (si se ignora la duración) |
config_sync_reconcile_duration_seconds_sum |
Histograma | estado | Suma de las duraciones de todas las latencias de los eventos de conciliación que controla el administrador de conciliación |
config_sync_reconciler_errors |
Indicador | componente, clase de error | Cantidad de errores que se encontraron durante la sincronización de recursos de la fuente de información a un clúster |
config_sync_remediate_duration_seconds_bucket |
Histograma | estado | Distribución de latencia de los eventos de conciliación del remediador (distribuidos en buckets por la duración) |
config_sync_remediate_duration_seconds_count |
Histograma | estado | Distribución de latencia de los eventos de conciliación del remediador (si se ignora la duración) |
config_sync_remediate_duration_seconds_sum |
Histograma | estado | Suma de las duraciones de todas las latencias de los eventos de conciliación del remediador |
config_sync_resource_count |
Indicador | resourcegroup | Cantidad de recursos rastreados por un ResourceGroup |
config_sync_resource_conflicts_total |
Contador | confirmación | Cantidad de conflictos de recursos que resultan de una discrepancia entre los recursos almacenados en caché y los recursos del clúster. Es posible que la métrica no aparezca si no se produjo un conflicto de recursos. |
config_sync_resource_fights_total |
Contador | Cantidad de recursos que se sincronizan con demasiada frecuencia. Es posible que la métrica no aparezca si no se realizó una competencia de recursos | |
config_sync_resource_group_total |
Indicador | Cantidad de CR de ResourceGroup | |
config_sync_resource_ns_count |
Indicador | resourcegroup | La cantidad de espacios de nombres que usan los recursos en un ResourceGroup |
config_sync_rg_reconcile_duration_seconds_bucket . |
Histograma | stallreason | Distribución del tiempo de conciliación de una CR de ResourceGroup (distribuida en buckets por duración) |
config_sync_rg_reconcile_duration_seconds_count |
Histograma | stallreason | Distribución del tiempo de conciliación de una CR de ResourceGroup (se ignora la duración) |
config_sync_rg_reconcile_duration_seconds_sum |
Histograma | stallreason | Es la suma de todo el tiempo que se dedica a conciliar una CR de ResourceGroup. |
config_sync_kustomize_build_latency_bucket |
Histograma | Distribución de latencia del tiempo de ejecución de kustomize build (distribuido en buckets por la duración de cada operación) |
|
config_sync_kustomize_build_latency_count |
Histograma | Distribución de latencia del tiempo de ejecución de kustomize build (se ignora la duración) |
|
config_sync_kustomize_build_latency_sum |
Histograma | Es la suma de todo el tiempo de ejecución de kustomize build . |
|
config_sync_kustomize_ordered_top_tier_metrics |
Indicador | top_tier_field | Uso de recursos, generadores, SecretGenerator, ConfigMapGenerator, transformadores y validadores |
config_sync_kustomize_builtin_transformers |
Indicador | k8s_builtin_transformer | Uso de transformadores integrados relacionados con los metadatos de objetos de Kubernetes |
config_sync_kustomize_resource_count |
Indicador | Cantidad de recursos que genera kustomize build |
|
config_sync_kustomize_field_count |
Indicador | field_name | Cantidad de veces que se usa un campo en particular en los archivos de kustomization |
config_sync_kustomize_patch_count |
Indicador | patch_field | Cantidad de parches en los campos patches , patchesStrategicMerge y patchesJson6902 |
config_sync_kustomize_base_count |
Indicador | base_source | Cantidad de bases remotas y locales |
kustomize_deprecating_field_count |
Indicador | deprecating_field | Uso de campos que pueden dejar de estar disponibles |
kustomize_simplification_adoption_count |
Indicador | simplification_field | Uso de imágenes, réplicas y reemplazos de transformadores de simplificación |
kustomize_helm_inflator_count |
Indicador | helm_inflator | Uso de Helm en Kustomize, ya sea a través de los campos integrados o la función personalizada |
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 reconciler
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.
config_sync_reconciler_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.
Consulta la lista completa de las etiquetas de métricas disponibles para filtrar.
En Prometheus, puedes usar los siguientes filtros para RootSync o RepoSync:
# Querying RootSync
config_sync_reconciler_errors{configsync_sync_name=ROOT_SYNC_NAME}
# Querying RepoSync
config_sync_reconciler_errors{configsync_sync_name=REPO_SYNC_NAME}
Consulta operaciones de importación y sincronización por estado
En Prometheus, puedes usar las siguientes consultas:
# Check for errors that occurred when sourcing configs.
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_parser_duration_seconds{status="error"}
config_sync_apply_duration_seconds{status="error"}
config_sync_remediate_duration_seconds{status="error"}
Supervisa recursos con Google Cloud Managed Service para Prometheus
Google Cloud Managed Service para Prometheus es la solución de múltiples nubes completamente administrada de Google Cloud para las métricas de Prometheus. Admite dos modos para la recopilación de datos: recopilación administrada (el modo recomendado) o recopilación de datos autoimplementada. Completa los siguientes pasos para configurar la supervisión del Sincronizador de configuración con Google Cloud Managed Service para Prometheus en el modo de recopilación administrado.
Para habilitar Managed Prometheus en tu clúster, sigue las instrucciones que se indican en Configura la recopilación administrada.
Guarda el siguiente manifiesto de muestra como
pod-monitoring-config-sync-monitoring.yaml
: Este manifiesto configura un recurso PodMonitoring para recopilar las métricas del Sincronizador de configuración en el puerto8675
del Podotel-collector-*
en el espacio de nombresconfig-management-monitoring
. El recurso PodMonitoring usa un selector de etiquetas de Kubernetes para encontrar el podotel-collector-*
.apiVersion: monitoring.googleapis.com/v1 kind: PodMonitoring metadata: name: config-sync-monitoring namespace: config-management-monitoring spec: selector: matchLabels: app: opentelemetry component: otel-collector endpoints: - port: 8675 interval: 10s
Aplica el manifiesto al clúster:
kubectl apply -f pod-monitoring-config-sync-monitoring.yaml
Verifica que se exporten tus datos de Prometheus con la página del Explorador de métricas de Cloud Monitoring en la consola de Google Cloud siguiendo las instrucciones que se indican en Servicio administrado para Prometheus en Cloud Monitoring.