Supervisa el Sincronizador de configuración con métricas
En esta página, se describe cómo puedes supervisar tus recursos del Sincronizador de configuración mediante métricas. Si deseas obtener una descripción general del estado de los recursos del Sincronizador de configuración y del estado de instalación, usa el panel del Sincronizador de configuración o Consulta el estado del Sincronizador de configuración con Google Cloud CLI.
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 OpenTelemetry para exportar métricas a un sistema de supervisión personalizado. Este proceso te brinda tres formas de supervisar tus recursos:
Si no habilitas las API de RootSync y RepoSync, solo puedes supervisar recursos con Prometheus.
Métricas de OpenTelemetry disponibles
Cuando habilitas las API de RootSync y RepoSync, el Sincronizador de configuración y el controlador de grupos de recursos recopilan las siguientes métricas con OpenCensus y las ponen a disposición a través del recopilador de OpenTelemetry. En la columna Etiquetas, se enumeran las etiquetas específicas del Sincronizador de configuración 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 todas las versiones compatibles 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 | Calendario | La distribución de latencia de la aplicación de recursos declarados de la fuente de confianza a un clúster |
aplicar_operaciones_total | Recuento | operación, estado, controlador | La cantidad total de operaciones que se realizaron para sincronizar recursos de la fuente de confianza a un clúster |
declared_resources | Último valor | La cantidad de recursos declarados que se analizaron en Git | |
internal_errors_total | Recuento | source | La cantidad total de errores internos que encontró el Sincronizador de configuración |
last_sync_timestamp | Último valor | confirmación, estado | La marca de tiempo de la sincronización más reciente de Git |
parser_duration_seconds | Distribución | estado, activador, fuente | La distribución de latencia de las diferentes etapas involucradas en la sincronización de la fuente de confianza a un clúster |
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 | componente, clase de error | La cantidad de errores que se encontraron mientras se sincronizaban los recursos desde la fuente de la verdad con un clúster. |
remediate_duration_seconds | Distribución | status | Distribución de latencia de los eventos de conciliación del remediador |
resource_conflicts_total | Recuento | 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 | Recuento | 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. |
Las siguientes métricas están disponibles entre las versiones 1.10.1 y 1.13.1 de Anthos Config Management. Estas métricas no son necesarias para supervisar el rendimiento o el estado del sistema, y se quitan en la versión 1.14.0 de Anthos Config Management a fin de reducir los costos.
Nombre | Tipo | Etiquetas | Descripción |
---|---|---|---|
rendering_count_total | Recuento | 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 | Recuento | 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 | Recuento | contenedor, recurso | El recuento de anulaciones de recursos especificadas en el parche de recursos |
git_sync_depth_override_count_total | Recuento | 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 | Recuento | 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. Están disponibles las siguientes métricas.
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_observed | Ú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 en Cloud Monitoring y Prometheus. Se pueden seleccionar en la lista desplegable “Agrupar por” de la consola de Monitoring.
Para obtener más información sobre las etiquetas de métricas de Cloud Monitoring y de Prometheus, consulta los componentes del modelo de métricas y el modelo de datos de Prometheus.
Etiquetas de métrica
Las métricas de Sincronizador de configuración y del controlador de grupos de recursos utilizan las siguientes etiquetas.
Nombre | 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 |
controller |
aplicador, solucionador | El nombre del controlador en un conciliador raíz o de espacio de nombres |
type |
Cualquier recurso de Kubernetes, por ejemplo, ClusterRole, Namespace, NetworkPolicy, Role, etcétera | El tipo de API de Kubernetes |
commit |
---- | El hash de la confirmación sincronizada más reciente |
Etiquetas de recursos
Las métricas del Sincronizador de configuración enviadas a Prometheus y Cloud Monitoring tienen las siguientes etiquetas de métricas configuradas para identificar el Pod de origen:
Nombre | Descripción |
---|---|
k8s.node.name |
El nombre del Pod |
k8s.pod.namespace |
El espacio de nombres del Pod |
k8s.pod.uid |
El UID del Pod |
k8s.pod.ip |
La IP del Pod |
k8s.node.name |
El nombre del nodo que aloja el Pod |
k8s.deployment.name |
El nombre del objeto Deployment que posee el Pod |
Las métricas del Sincronizador de configuración enviadas a Prometheus y Cloud Monitoring desde los Pods reconciler
también tienen las siguientes etiquetas de métricas configuradas para identificar el RootSync o RepoSync que se usa a fin de configurar el conciliador:
Nombre | Descripción |
---|---|
configsync.sync.kind |
El tipo de recurso que configura este conciliador: RootSync o RepoSync |
configsync.sync.name |
El nombre de RootSync o RepoSync que configura este conciliador |
configsync.sync.namespace |
El espacio de nombres de RootSync o RepoSync que configura este conciliador |
Etiquetas de recursos de Cloud Monitoring
Las etiquetas de recursos de Cloud Monitoring se usan para indexar métricas en el almacenamiento, lo que significa que tienen un efecto insignificante en la cardinalidad, a diferencia de las etiquetas de métricas, en las que la cardinalidad es una preocupación significativa del rendimiento. Consulta Tipos de recursos supervisados para obtener más información.
A partir de la versión 1.14.0 del Sincronizador de configuración, las métricas del controlador de grupos de recursos enviadas a Cloud Monitoring usan el tipo de recurso k8s_container
en lugar del k8s_pod
que se usó en versiones anteriores.
A partir de la versión 1.14.1 del Sincronizador de configuración, las métricas del Sincronizador de configuración enviadas a Cloud Monitoring usan el tipo de recurso k8s_container
en lugar del k8s_pod
que se usó en versiones anteriores.
El tipo de recurso k8s_container
establece las siguientes etiquetas de recursos para identificar el contenedor de origen:
Nombre | Descripción |
---|---|
container_name |
El nombre del contenedor |
pod_name |
El nombre del Pod |
namespace_name |
El espacio de nombres del Pod |
location |
La región o la zona del clúster que aloja el nodo |
cluster_name |
El nombre del clúster que aloja el nodo |
project |
El ID del proyecto que aloja el clúster |
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.
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.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:
Vincula la ServiceAccount
default
de Kubernetes en el espacio de nombresconfig-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 proyectoGSA_NAME
: Es la cuenta de servicio de Google con la función de IAM de escritor de métricas de Monitoring (roles/monitoring.metricWriter
). Si no tienes una cuenta de servicio con este rol, puedes crear una.
Esta acción requiere el permiso
iam.serviceAccounts.setIamPolicy
en el proyecto.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
Reinicia el Pod
otel-collector
:kubectl rollout restart deployment otel-collector -n config-management-monitoring
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 prefijoopencensus
: este prefijo se agrega porque el Sincronizador de configuración usa la biblioteca de OpenCensusconfig_sync/
: las métricas que el Sincronizador de configuración exporta a Cloud Monitoring tienen este prefijoMETRIC
: 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 manifiestos de una fuente de confianza a un clúster. Cuando creas un objeto RootSync, el Sincronizador de configuración crea un conciliador llamado root-reconciler-ROOT_SYNC_NAME
o root-reconciler
si el nombre de RootSync es root-sync
. Cuando creas un objeto RepoSync, el Sincronizador de configuración crea un conciliador llamado ns-reconciler-NAMESPACE-REPO_SYNC_NAME-REPO_SYNC_NAME_LENGTH
o ns-reconciler-NAMESPACE
si el nombre de RepoSync es repo-sync
, en el que NAMESPACE
es el espacio de nombres en el que creaste tu objeto RepoSync.
En el siguiente diagrama, se muestra cómo funcionan los Pods de conciliación:
Por ejemplo, para filtrar por nombre de conciliador cuando usas Cloud Monitoring, completa las siguientes tareas:
En la consola de Google Cloud, ve a Monitoring.
En el panel de navegación de Monitoring, haz clic en el leaderboard explorador de métricas del Explorador de métricas.
En la lista desplegable Seleccionar una métrica, agrega
custom.googleapis.com/opencensus/config_sync/reconciler_errors
.En la lista desplegable Filtro, selecciona reconcilier. Aparecerá un cuadro de campos de filtro.
En el cuadro de campos de filtro, selecciona = en el primer campo y el nombre del conciliador (por ejemplo,
root-reconciler
) en el segundo.Haz clic en Aplicar.
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 APIs de RootSync y RepoSync, los conciliadores se encargan de importar y obtener una fuente de información y sincronizarla 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:
En la consola de Google Cloud, ve a Monitoring.
En el panel de navegación de Monitoring, haz clic en el leaderboard explorador de métricas del Explorador de métricas.
En la lista desplegable Seleccionar una métrica, agrega
custom.googleapis.com/opencensus/config_sync/reconciler_errors
.En la lista desplegable Filtro, selecciona component. Aparecerá un cuadro de campos de filtro.
En el cuadro de campos de filtro, selecciona = en el primer cuadro y source en el segundo.
Haz clic en Aplicar.
Ahora puedes ver los errores que se produjeron cuando se originó una fuente de información para tus conciliadores.
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.
Crea un directorio temporal para guardar los archivos de manifiesto.
mkdir acm-monitor cd acm-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 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: 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 ---
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.
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
.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 manifiestos de una fuente de confianza 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.
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.
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 de datos administrados (el modo recomendado) o recopilación de datos implementados a sí mismos. Completa los siguientes pasos a fin de configurar la supervisión del Sincronizador de configuración con el Servicio administrado de Google Cloud para Prometheus en el modo de recopilación de datos administrados.
Sigue las instrucciones de la página para configurar la recopilación administrada a fin de habilitar Prometheus administrado en tu clúster.
Guarda el siguiente manifiesto de muestra como
cluster-pod-monitoring-acm-monitoring.yaml
. Este manifiesto configura un recurso ClusterPodMonitoring 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 ClusterPodMonitoring usa un selector de etiquetas de Kubernetes para encontrar el Podotel-collector-*
.apiVersion: monitoring.googleapis.com/v1 kind: ClusterPodMonitoring metadata: name: acm-monitoring spec: selector: matchLabels: app: opentelemetry component: otel-collector endpoints: - port: 8675 interval: 10s
Aplica el manifiesto al clúster:
kubectl apply -f cluster-pod-monitoring-acm-monitoring.yaml
Sigue las instrucciones del servicio administrado para datos de Prometheus en Cloud Monitoring a fin de verificar que los datos de Prometheus se exporten mediante la página del Explorador de métricas de Cloud Monitoring en Google Cloud.
¿Qué sigue?
- Obtén más información sobre cómo supervisar objetos RootSync y RepoSync.
- Aprende a usar los SLI del Sincronizador de configuración.