Instrumentar una aplicación para Application Monitoring

En este documento se describe cómo configurar una aplicación de App Hub para que las métricas y los datos de seguimiento que genere contengan etiquetas específicas de la aplicación. También se describe cómo puede exportar tu aplicación una métrica que usa Application Monitoring para registrar el nivel de tráfico, la tasa de errores del servidor o la latencia de las cargas de trabajo de solicitudes HTTP que se ejecutan en Google Kubernetes Engine.

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, tus paneles de control preconfigurados 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:

  1. Instrumenta la aplicación con OpenTelemetry.

  2. 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 k8sattributes para extraer metadatos, como namespace, del entorno.
    • Configura el procesador transform/collision para definir los atributos project_id, location, cluster y namespace.
    • Configura el procesador transform/aco-gke para rellenar las etiquetas top_level_controller_name y top_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.

  3. 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:

  1. Usa Google Cloud Managed Service para Prometheus con la recopilación gestionada.

  2. Despliega tus cargas de trabajo en un clúster de Google Kubernetes Engine cuya versión sea al menos 1.32.1-gke.1439000.

  3. 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:

  1. Instrumenta tu aplicación con OpenTelemetry o con el servicio adicional Managed Service para Prometheus de Cloud Run. Para obtener información sobre estos enfoques, consulta los siguientes documentos:

  2. 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:

  1. Comprueba que tu aplicación esté enviando métricas de Prometheus a tu proyecto:
    1. En la Google Cloud consola, ve a la página  Explorador de métricas:

      Ve al 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.

    2. En la barra de herramientas de la Google Cloud consola, selecciona tu Google Cloud proyecto. En las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de gestión de la carpeta habilitada para aplicaciones.
    3. En el elemento Métrica, despliega el menú Seleccionar una métrica, introduce Prometheus Target en la barra de filtros y, a continuación, usa los submenús para seleccionar un tipo de recurso y una métrica específicos:
      1. En el menú Recursos activos, selecciona Destino de Prometheus.
      2. Para seleccionar una métrica, usa los menús Categorías de métricas activas y Métricas activas.
      3. Haz clic en Aplicar.
    4. Para añadir filtros que eliminen series temporales de los resultados de la consulta, usa el elemento Filter.

    5. 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 la configuración.

Si tus métricas de Prometheus no contienen etiquetas de aplicación, haz lo siguiente:

  1. Verifica que hayas registrado tu carga de trabajo o servicio en App Hub.

  2. Examina los registros para determinar si hay algún error.

    Por ejemplo, si despliega un OpenTelemetry Collector o el Collector creado por Google y se ejecuta en Google Kubernetes Engine, puede hacer lo siguiente:

    1. En la Google Cloud consola, ve a la página Cargas de trabajo:

      Ve a Cargas de trabajo.

      Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo sea Kubernetes Engine.

    2. Selecciona tu implementación de collector y, a continuación, la pestaña Registros.
  3. Si utilizas un OpenTelemetry Collector o el Collector creado por Google, revisa la configuración de tu Collector. Tu recolector debe hacer lo siguiente:

    • Exporta datos de métricas con el exportador googlemanagedprometheus.
    • Configura el procesador k8sattributes para extraer metadatos, como namespace, del entorno.
    • Configura el procesador transform/collision para definir los atributos project_id, location, cluster y namespace.
    • Configura el procesador transform/aco-gke para rellenar las etiquetas top_level_controller_name y top_level_controller_type.

    Por ejemplo, consulta el archivo de configuración del recopilador creado por Google: otlp-k8s-ingest/config/collector.yaml.

Añadir atributos de aplicación a los intervalos de rastreo

Para que Cloud Trace adjunte 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:

  1. Registre sus servicios y cargas de trabajo en App Hub.
  2. Instrumenta tu aplicación con OpenTelemetry y envía los datos de trazas recogidos de tu aplicación a tu proyecto mediante el endpoint OTLPGoogle Cloud .
  3. Configure el Collector de OpenTelemetry o el Collector creado por Google de forma que los datos de intervalo exportados incluyan los atributos de recursos de OpenTelemetry que identifican los recursos admitidos Google Cloud que usa su aplicación. Los atributos de recursos deben incluir lo siguiente:

    • cloud.account.id
    • Uno de cloud.{availability_zone,region}
    • Atributos específicos de los recursos. Por ejemplo, en el caso de una carga de trabajo de Kubernetes, los intervalos deben tener los campos k8s.cluster.name, k8s.namespace y el tipo de despliegue de Kubernetes definidos.

    Usa procesadores para que el recolector adjunte atributos específicos de recursos a tus intervalos. Para obtener más información, consulta resourcedetectionprocessor y k8sattributesprocessor.

    Google Cloud Observability usa los atributos de recursos anteriores y la API de App Hub para identificar tu aplicación de App Hub. Los atributos específicos de la aplicación se añaden a los datos de la traza cuando se identifica una aplicación.

Para obtener más información sobre estos atributos, consulta las Google Cloud convenciones semánticas de App Hub.