Acerca de las etiquetas específicas de aplicaciones
Las etiquetas específicas de la aplicación hacen referencia a etiquetas o atributos que se insertan en los datos de registro, métricas o trazas. Estas etiquetas identifican el servicio o la carga de trabajo que ha generado los datos. Puedes usar etiquetas específicas de la aplicación como cualquier otra etiqueta. Por ejemplo, puede filtrar los datos por el ID de una aplicación. La telemetría generada por la infraestructura compatible incluye automáticamente estas etiquetas. Con la instrumentación, las métricas y los rastreos escritos por tu aplicación pueden incluir estas etiquetas.
En esta sección, interpreta a.b.{x,y} como a.b.x y a.b.y.
Los datos de métricas de la instrumentación que hayas añadido a tus aplicaciones pueden incluir las siguientes etiquetas de métricas:
metric.labels.apphub_application_{container,id,location}metric.labels.apphub_workload_{criticality_type,environment_type,id}
Los intervalos de Trace generados por la instrumentación que hayas añadido a tus aplicaciones pueden incluir los siguientes atributos de recurso:
gcp.apphub.application.{container,id,location}gcp.apphub.{workload,service}.{criticality_type,environment_type,id}
Acerca de las métricas del servidor HTTP de OpenTelemetry
No hay métricas del sistema para las cargas de trabajo que se ejecutan en Google Kubernetes Engine que puedan informar del nivel de tráfico, la tasa de errores del servidor o la latencia de las solicitudes HTTP. Sin embargo, los valores de estas señales de oro se pueden obtener de http.server.request.duration, que es una métrica recogida automáticamente por la biblioteca de clientes HTTP OpenTelemetry.
El exportador googlemanagedprometheus convierte la métrica http.server.request.duration de OpenTelemetry en una métrica de Prometheus que tiene las siguientes propiedades:
- Nombre:
prometheus/http_server_request_duration_seconds/histogram - Métrica:
prometheus.googleapis.com/http_server_request_duration_seconds/histogram - Tipos de recursos:
prometheus_target - Unidad:
s - Tipo:
CUMULATIVE - Tipo de valor:
DISTRIBUTION
Si tu Google Cloud proyecto contiene la métrica http_server_request_duration_seconds, los paneles de control de Application Monitoring mostrarán el nivel de tráfico, la tasa de errores del servidor y la latencia de las solicitudes HTTP.
Para saber cómo configurar tu aplicación para exportar la métrica http_server_request_duration_seconds, consulta la sección Usar OpenTelemetry en Kubernetes de este documento.
Añadir etiquetas de aplicación a los datos de métricas
Google Cloud Observability intenta identificar la fuente de las métricas de Prometheus comparando los atributos asociados a las métricas de Prometheus que se envían a tu proyecto con los datos devueltos por la API App Hub. En el resto de esta sección se enumeran las configuraciones que permiten a Google Cloud Observability identificar la aplicación App Hub.
Usar OpenTelemetry en Kubernetes
Para que Google Cloud Observability asigne etiquetas de aplicación a los datos de métricas generados por las cargas de trabajo de tu aplicación que se ejecutan en Google Kubernetes Engine, haz lo siguiente:
Instrumenta la aplicación con OpenTelemetry.
- Para obtener información general, consulta Instrumentación y observabilidad.
- Para ver enlaces a ejemplos de Go, Java, Node.js y Python, así como información sobre esos ejemplos, consulta la descripción general de los ejemplos de instrumentación.
Despliega el Collector creado por Google o el Collector de OpenTelemetry y configura el Collector de la siguiente manera:
- Exporta datos de métricas con el exportador
googlemanagedprometheus. - Configura el procesador
k8sattributespara extraer metadatos, comonamespace, del entorno. - Configura el procesador
transform/collisionpara definir los atributosproject_id,location,clusterynamespace. - Configura el procesador
transform/aco-gkepara rellenar las etiquetastop_level_controller_nameytop_level_controller_type.
Por ejemplo, consulta
otlp-k8s-ingest/config/collector.yaml, que es el archivo de configuración del recopilador creado por Google. Para obtener más información sobre este recolector, consulta Implementar el recolector OpenTelemetry creado por Google en GKE.- Exporta datos de métricas con el exportador
Registra las cargas de trabajo de tu aplicación en App Hub.
Usar Google Cloud Managed Service para Prometheus en GKE
Para que Google Cloud Observability asigne etiquetas de aplicación a los datos de métricas generados por las cargas de trabajo de tu aplicación que se ejecutan en clústeres de Google Kubernetes Engine, haz lo siguiente:
Usa Google Cloud Managed Service para Prometheus con la recopilación gestionada.
Despliega tus cargas de trabajo en un clúster de Google Kubernetes Engine cuya versión sea al menos
1.32.1-gke.1439000.Registra las cargas de trabajo de tu aplicación en App Hub.
Google Cloud Managed Service para Prometheus descubre los valores de las etiquetas de la aplicación a través de los metadatos de descubrimiento de servicios y, a continuación, añade las etiquetas top_level_controller_{name,type} al targetLabels.metadata.
Durante la ingestión de métricas, Google Cloud Observability usa las etiquetas top_level_controller_{name,type} y la API App Hub para identificar tu aplicación App Hub y añadir las etiquetas adecuadas a tus datos de métricas.
Usar Cloud Run
Para que Google Cloud Observability asigne etiquetas de aplicación a los datos de métricas generados por tus cargas de trabajo de Cloud Run, haz lo siguiente:
Instrumenta tu aplicación con OpenTelemetry o con el sidecar de Managed Service para Prometheus en Cloud Run. Para obtener información sobre estos enfoques, consulta los siguientes documentos:
Registra las cargas de trabajo de tu aplicación en App Hub.
Verificar las etiquetas de las métricas
Para verificar que tu aplicación está enviando métricas de Prometheus a tu proyecto, haz lo siguiente:
-
Comprueba que tu aplicación esté enviando métricas de Prometheus a tu proyecto:
-
En la Google Cloud consola, ve a la página leaderboard Explorador de métricas:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.
- En la barra de herramientas de la consola Google Cloud , selecciona tu proyecto Google Cloud . En las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para la aplicación.
- En el elemento Métrica, despliega el menú Seleccionar una métrica,
introduce
Prometheus Targeten la barra de filtros y, a continuación, usa los submenús para seleccionar un tipo de recurso y una métrica específicos:- En el menú Recursos activos, selecciona Destino de Prometheus.
- Para seleccionar una métrica, usa los menús Categorías de métricas activas y Métricas activas.
- Haz clic en Aplicar.
Para añadir filtros que quiten series temporales de los resultados de la consulta, usa el elemento Filter.
- Configure cómo se ven los datos.
Para ver las etiquetas, despliega el menú Filtrar. Cada entrada de Filtro corresponde a una etiqueta.
Para obtener más información sobre cómo configurar un gráfico, consulta el artículo Seleccionar métricas al utilizar el explorador de métricas.
Si no ves ninguna métrica de Prometheus, revisa tu configuración.
-
Si tus métricas de Prometheus no contienen etiquetas de aplicación, haz lo siguiente:
Verifica que hayas registrado tu carga de trabajo o servicio en App Hub.
Examina los registros para determinar si hay algún error.
Por ejemplo, si despliega un Collector de OpenTelemetry o el Collector creado por Google y se ejecuta en Google Kubernetes Engine, puede hacer lo siguiente:
-
En la Google Cloud consola, ve a la página Cargas de trabajo:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea Kubernetes Engine.
- Selecciona la implementación del recopilador y, a continuación, la pestaña Registros.
-
Si utilizas un OpenTelemetry Collector o el Collector creado por Google, revisa la configuración de tu Collector. El recolector debe hacer lo siguiente:
- Exporta datos de métricas con el exportador
googlemanagedprometheus. - Configura el procesador
k8sattributespara extraer metadatos, comonamespace, del entorno. - Configura el procesador
transform/collisionpara definir los atributosproject_id,location,clusterynamespace. - Configura el procesador
transform/aco-gkepara rellenar las etiquetastop_level_controller_nameytop_level_controller_type.
Por ejemplo, consulta el archivo de configuración del Collector creado por Google:
otlp-k8s-ingest/config/collector.yaml.- Exporta datos de métricas con el exportador
Añadir atributos de aplicación a los intervalos de rastreo
No instrumentas tu aplicación de forma que los atributos específicos de la aplicación se adjunten a los intervalos que se envían a tu proyecto de Google Cloud . En su lugar, Google Cloud Observability usa atributos de recursos de OpenTelemetry y la API App Hub para identificar la aplicación App Hub asociada a un intervalo y, a continuación, añade los atributos específicos de la aplicación antes de almacenar el intervalo.
Para que Google Cloud Observability asigne atributos de recursos específicos de la aplicación a los datos de traza generados por los servicios y las cargas de trabajo de la aplicación, haz lo siguiente:
Instrumenta tu aplicación con OpenTelemetry y configura tu exportador para enviar datos de trazas al endpoint de la API Telemetry (OTLP).
Recomendamos usar una exportación basada en el recolector. En los siguientes documentos se describen los colectores que adjuntan todos los atributos obligatorios a los datos de intervalo:
- Despliega el Collector de OpenTelemetry creado por Google en Google Kubernetes Engine.
- Despliega el Collector de OpenTelemetry creado por Google en Cloud Run.
- Implementa el Collector de OpenTelemetry en Container-Optimized OS.
Si no usa uno de los colectores anteriores, debe configurar su instrumentación o colector para adjuntar todos los atributos obligatorios.
Despliega tus servicios y cargas de trabajo en la infraestructura compatible.
Registra tus servicios y cargas de trabajo en App Hub.
Para obtener más información sobre estos atributos, consulta las Google Cloud convenciones semánticas de App Hub.
Atributos obligatorios
Esta sección se aplica a las configuraciones en las que no se usa uno de los colectores recomendados. Por ejemplo, puede que quieras escribir tu propio colector o que prefieras exportar directamente tus datos de seguimiento.
Atributos que identifican tu proyecto y la ubicación de los recursos
Defina los siguientes atributos:
cloud.provider: el valor es"gcp".cloud.account.id: se asigna a tu ID de proyecto.cloud.availability_zoneocloud.region: asigna el valor de la zona o región en la que se encuentran tus recursos. Puede definir ambos atributos.
Los detectores de recursos pueden ayudarte a definir los atributos anteriores:
resourcedetectionprocessor- Ve a: Google Cloud detector de recursos
- Java:
opentelemetry-java-contrib/gcp-resources - Node.js:
resource-detector-gcp - Python:
opentelemetry-resourcedetector-gcp
Atributos de las cargas de trabajo de Google Kubernetes Engine
En el caso de una carga de trabajo de Google Kubernetes Engine, configura tu recolector o tu instrumentación para que haga lo siguiente:
- Extrae metadatos del entorno, como el
namespace. - Extrae los metadatos pertinentes del procesador
k8sattributes. - Defina los atributos
project_id,location,clusterynamespace. - Define las etiquetas
top_level_controller_nameytop_level_controller_type.
Para ver un ejemplo basado en un recolector, consulta otlp-k8s-ingest/config/collector.yaml.
Ese recopilador usa el procesador
k8sattributesprocessor.
Atributos de cargas de trabajo de máquinas virtuales
Si implementas tu aplicación en una VM, esta debe estar asociada a un grupo de instancias gestionado (MIG). También debe adjuntar los siguientes atributos:
gcp.gce.instance_group_manager.namegcp.gce.instance_group_manager.regionogcp.gce.instance_group_manager.zone