Instrumenta una aplicación para la Supervisión de aplicaciones

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 genera la aplicación contengan etiquetas específicas de la aplicación. También se describe cómo hacer que tu aplicación exporte una métrica que usa Application Monitoring para informar 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 la aplicación

Las etiquetas específicas de la aplicación hacen referencia a las etiquetas o los atributos que se insertan en los datos de registro, métricas o seguimiento. Estas etiquetas identifican el servicio o la carga de trabajo que generó los datos. Puedes usar etiquetas específicas de la aplicación como cualquier otra etiqueta. Por ejemplo, puedes 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 registros 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 agregaste 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 agregaste a tus aplicaciones pueden incluir los siguientes atributos de recursos:

  • 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 el nivel de tráfico, la tasa de errores del servidor o la latencia de las solicitudes HTTP. Sin embargo, los valores de estos indicadores clave se pueden derivar de http.server.request.duration, que es una métrica que recopila automáticamente la biblioteca del cliente HTTP de 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

Cuando tu proyecto Google Cloud contiene la métrica http_server_request_duration_seconds, tus paneles listos para usar muestran el nivel de tráfico, la tasa de errores del servidor y la latencia de las solicitudes HTTP.

Para obtener información sobre cómo configurar tu aplicación para exportar la métrica http_server_request_duration_seconds, consulta la sección Usa OpenTelemetry en Kubernetes de este documento.

Agrega 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 adjuntos a las métricas de Prometheus que se envían a tu proyecto con los datos que devuelve la API de App Hub. En el resto de esta sección, se enumeran las configuraciones que permiten que Google Cloud Observability identifique la aplicación de App Hub.

Usa OpenTelemetry en Kubernetes

Para que Google Cloud Observability adjunte etiquetas de aplicación a los datos de métricas que generan 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. Implementa el recopilador integrado en Google o el recopilador de OpenTelemetry, y configura el recopilador de la siguiente manera:

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

    Para ver un 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 recopilador, consulta Implementa el recopilador de OpenTelemetry integrado en Google en GKE.

  3. Registra las cargas de trabajo de tu aplicación en App Hub.

Usa Google Cloud Managed Service para Prometheus en GKE

Para que Google Cloud Observability adjunte etiquetas de aplicación a los datos de métricas que generan 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 administrada.

  2. Implementa 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 detección de servicios y, luego, agrega las etiquetas top_level_controller_{name,type} a targetLabels.metadata. Durante la transferencia de métricas, Google Cloud Observability usa las etiquetas top_level_controller_{name,type} y la API de App Hub para identificar tu aplicación de App Hub y agregar las etiquetas adecuadas a tus datos de métricas.

Usar Cloud Run

Para que Google Cloud Observability adjunte 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 el archivo adicional de Managed Service para Prometheus para 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.

Verifica las etiquetas de las métricas

Para verificar que tu aplicación envíe métricas de Prometheus a tu proyecto, haz lo siguiente:

  1. Verifica que tu aplicación envíe métricas de Prometheus a tu proyecto:
    1. En la consola de Google Cloud , accede a la página  Explorador de métricas:

      Acceder al Explorador de métricas

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

    2. En la barra de herramientas de la consola de Google Cloud , selecciona tu proyecto de Google Cloud . Para las configuraciones de App Hub, selecciona el proyecto host de App Hub o el proyecto de administración de la carpeta habilitada para apps.
    3. En el elemento Métrica, expande el menú Seleccionar una métrica, ingresa Prometheus Target en la barra de filtros y, luego, usa los submenús para seleccionar un métrica y tipo de recurso específicos:
      1. En el menú Recursos activos, elige 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 agregar filtros que quiten series temporales de los resultados de la consulta, usa el elemento Filtro.

    5. Configura cómo se ven los datos.

      Para ver las etiquetas, expande el menú Filtro. Cada entrada del filtro corresponde a una etiqueta.

      Para obtener más información sobre la configuración de un gráfico, consulta elige métricas cuando uses 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:

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

  2. Examina tus registros para determinar si hay errores.

    Por ejemplo, si implementas un recopilador de OpenTelemetry o el recopilador compilado por Google y se ejecuta en Google Kubernetes Engine, puedes hacer lo siguiente:

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

      Ir a Cargas de trabajo

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

    2. Selecciona la implementación del recopilador y, luego, la pestaña Registros.
  3. Si usas un recopilador de OpenTelemetry o el recopilador integrado en Google, revisa la configuración del recopilador. El recolector debe hacer lo siguiente:

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

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

Agrega atributos de la aplicación a los intervalos de seguimiento

Para que Cloud Trace adjunte atributos de recursos específicos de la aplicación a los datos de seguimiento generados por los servicios y las cargas de trabajo de la aplicación, haz lo siguiente:

  1. Registra tus servicios y cargas de trabajo en App Hub.
  2. Instrumenta tu aplicación con OpenTelemetry y envía los datos de seguimiento recopilados de tu aplicación a tu proyecto con el extremo deGoogle Cloud OTLP.
  3. Configura el recopilador de OpenTelemetry o el recopilador integrado en Google de modo que los datos de intervalo exportados incluyan los atributos de recursos de OpenTelemetry que identifican los recursos compatibles Google Cloud que usa tu aplicación. Los atributos del recurso deben incluir lo siguiente:

    • cloud.account.id
    • Uno de cloud.{availability_zone,region}
    • Son atributos específicos del recurso. Por ejemplo, para una carga de trabajo de Kubernetes, los intervalos deben tener establecidos los atributos k8s.cluster.name, k8s.namespace y el tipo de implementación de Kubernetes.

    Usa procesadores para que el recopilador adjunte atributos específicos del recurso 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 agregan a los datos de seguimiento cuando se identifica una aplicación.

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