Descripción general de v1.metrics

En este documento, se describe cómo los datos de métricas que se envían a your Google Cloud project con la API de Telemetry (OTLP) se asignan a las estructuras de Cloud Monitoring. Esta API implementa el protocolo OTLP de OpenTelemetry. Puedes enviar datos a esta API cuando instrumentas tus aplicaciones con un otlphttp exportador y un recopilador de OpenTelemetry, o cuando usas los SDK de OpenTelemetry.

OpenTelemetry es un proyecto de código abierto compatible con Google Cloudingenieros que garantizan la compatibilidad para transferir y visualizar tu Google Cloud telemetría.

Para obtener instrucciones sobre cómo configurar OpenTelemetry para enviar métricas de OTLP a Cloud Monitoring, consulta la descripción general de la transferencia de métricas de OTLP.

Métricas de OTLP en Cloud Monitoring

Cuando las métricas se transfieren a Cloud Monitoring con un recopilador de OpenTelemetry y el exportador otlphttp o se envían directamente con un SDK de OpenTelemetry, las métricas de OTLP se asignan a las estructuras de métricas de Cloud Monitoring. En esta sección, se describe lo siguiente:

Asignación de recursos supervisados

Todos los puntos de métricas se escriben tal como están para Google Cloud Managed Service para Prometheus, con la asignación de Prometheus.

Asignación de Prometheus

Las métricas de Prometheus requieren el uso del tipo de recurso supervisado prometheus_target.

Las siguientes etiquetas en el tipo de recurso prometheus_target se usan para esquematizar y almacenar datos de manera eficiente en Monarch. Cuanto más precisamente especifiques los valores de estos atributos, mejor será tu capacidad de consulta y escalabilidad.

Te recomendamos que seas lo más explícito posible cuando establezcas valores para estas etiquetas, aunque implementamos una lógica de resguardo para usar en ausencia de valores explícitos.

En la siguiente tabla, se muestran las fuentes de valores para las etiquetas, en orden de prioridad:

Etiqueta prometheus-target Valor usado (en orden de prioridad)
location (obligatorio)
  • Atributo location
  • Atributo cloud.availability_zone
  • Atributo cloud.region
cluster
  • Atributo cluster
  • Atributo k8s.cluster.name
  • __gce__, si el atributo cloud.platform es gcp_compute_engine
  • __run__, si el atributo cloud.platform es gcp_cloud_run
  • String vacío
namespace
  • Atributo namespace
  • Atributo k8s.namespace.name
  • Atributo service.namespace
  • String vacío
job
  • Atributo job
  • "service.namespace" + "/" + service.namespace atributo
  • Atributo service.name
  • Atributo service.name, si no es unknown_service:foo
  • Atributo faas.name
  • Atributo k8s.deployment.name
  • Atributo k8s.statefulset.name
  • Atributo k8s.job.name
  • Atributo k8s.cronjob.name
  • Atributo service.name, si unknown_service:foo
  • String vacío
instance
Rechaza el punto si está vacío
  • Atributo instance
  • Atributo service.instance.id
  • Atributo faas.instance
  • Atributo k8s.pod.name:k8s.container.name
  • Atributo k8s.pod.name, si no hay nombre de contenedor
  • Atributo host.id

Asignación de métricas

Las métricas se convierten al formato de series temporales de Prometheus. Los nombres de las métricas no deben tener dominio o deben tener el dominio prometheus.googleapis.com. Después de la conversión, el nombre de la métrica incluirá el prefijo prometheus.googleapis.com y un sufijo adicional, según el tipo de punto de OTLP. La métrica de Cloud Monitoring resultante tiene la siguiente estructura:

prometheus.googleapis.com/{metric_name}/{suffix}

Además, para cada recurso único de OpenTelemetry, la conversión agrega una target_info métrica que contiene todos los atributos de recursos, excepto service.name, service.instance.id y service.namespace.

Todas las métricas INT64 de OTLP se traducen al DOUBLE tipo de valor en Cloud Monitoring, incluso si el recopilador especifica el tipo de valor como INT64. Este cambio se realiza porque, una vez que una serie temporal está en Monarch, no puedes cambiar el tipo de valor. La consecuencia más común de admitir valores INT64 es que terminas con colisiones que solo se pueden resolver borrando una métrica.

Asignación de métricas de Prometheus

Los tipos de métricas se asignan de la siguiente manera:

  • El indicador de OTLP se asigna al indicador de Cloud Monitoring.
  • La suma de OTLP se asigna de la siguiente manera:
    • Al indicador de Cloud Monitoring cuando is_monotonic se establece en false.
    • A Cloud Monitoring acumulativo cuando aggregation_temporality se establece en AGGREGATION_TEMPORALITY_CUMULATIVE.
    • A Cloud Monitoring delta cuando aggregation_temporality se establece en AGGREGATION_TEMPORALITY_DELTA.
  • El histograma de OTLP se asigna a la distribución de Cloud Monitoring con un tipo de métrica acumulativo o delta, según el valor de aggregation_temporality.
  • Las métricas de resumen de OTLP se expanden en series temporales individuales para cada componente: count, sum y cada quantile.
    • Los nombres de las métricas de recuento y suma tienen el sufijo _count o _sum respectivamente, y se escriben como métricas acumulativas de Cloud Monitoring acumulativas de tipo DOUBLE.
    • Cada cuantil se convierte en su propia serie temporal de indicadores gauge de tipo DOUBLE, con una etiqueta quantile.

En la siguiente tabla, se resume la asignación de métricas:

Tipo de punto de OTLP Tipo de métrica de Monitoring Tipo de valor de Monitoring Sufijo Notas
GAUGE GAUGE DOUBLE /gauge  
GAUGE (metric.metadata["prometheus.type"]="unknown") GAUGE DOUBLE /unknown El recopilador de OpenTelemetry divide los valores desconocidos de Prometheus en un contador y un indicador.
SUM (monotonic, CUMULATIVE) CUMULATIVE DOUBLE /counter  
SUM (monotonic, CUMULATIVE, metric.metadata["prometheus.type"]="unknown") CUMULATIVE DOUBLE /unknown:counter El recopilador de OpenTelemetry divide los valores desconocidos de Prometheus en un contador y un indicador.
SUM (monotonic, DELTA) DELTA DOUBLE /delta  
SUM (non-monotonic, CUMULATIVE) GAUGE DOUBLE /gauge  
SUM (non-monotonic, DELTA) No compatible No se admiten los UpDownCounters de temporalidad delta.
HISTOGRAM (CUMULATIVE) CUMULATIVE DISTRIBUTION con buckets explícitos /histogram  
EXPONENTIAL HISTOGRAM (CUMULATIVE) CUMULATIVE DISTRIBUTION con buckets exponenciales /histogram  
HISTOGRAM (DELTA) DELTA DISTRIBUTION con buckets explícitos /histogram:delta  
EXPONENTIAL HISTOGRAM (DELTA) DELTA DISTRIBUTION con buckets exponenciales /histogram:delta  
SUMMARY
(sum,
count,
quantile)
 
CUMULATIVE
CUMULATIVE
GAUGE

DOUBLE
DOUBLE
DOUBLE
 
_sum/summary:counter
_count/summary
/summary
Los datos de resumen se escriben como varias series temporales, una para el recuento, la suma y cada cuantil calculado. Las métricas de cuantil también se generan con una etiqueta quantile.

Diferencias entre el exportador googlemanagedprometheus y la API de Telemetry

La API de Telemetry (telemetry.googleapis.com) controla las métricas de manera diferente al googlemanagedprometheus exportador:

  • La API de Telemetry permite los caracteres de punto (.) y barra (/) con en los nombres de las métricas. El exportador googlemanagedprometheus convierte todas las instancias de estos caracteres en el carácter de guion bajo (_). Por ejemplo, el exportador de OTLP exporta textualmente una métrica de OTLP llamada prometheus.googleapis.com/foo.bar/gauge, pero el exportador googlemanagedprometheus la exporta como prometheus.googleapis.com/foo_bar/gauge.

    Cuando se transfieren las métricas, Cloud Monitoring crea descriptores de métricas basados en los nombres. La diferencia en la forma en que las rutas de transferencia controlan los caracteres de punto (.) y barra (/) significa que los descriptores de métricas resultantes difieren entre las métricas transferidas con el exportador googlemanagedprometheus y las transferidas con el otlphttp exportador. Si usas ambas rutas de transferencia, tendrás dos conjuntos de métricas. Para obtener resultados completos cuando realices consultas, debes unir manualmente los resultados de las versiones de Prometheus y OTLP de las métricas.

  • La API de Telemetry no agrega una unidad a un nombre de métrica cuando hay una unidad presente y no agrega un sufijo _total a los contadores. Por lo tanto, el exportador googlemanagedprometheus exporta una métrica como prometheus.googleapis.com/foo_seconds_total/counter cuando se exporta como prometheus.googleapis.com/foo/counter con la API de Telemetry. Esta diferencia también se aplica a los sufijos _total y _ratio.

  • La API sintetiza el valor sum_of_squared_deviation para los valores de distribución derivados de histogramas exponenciales. El exportador googlemanagedprometheus no establece este campo para los histogramas exponenciales.

  • La API convierte todos los valores de puntos enteros en valores dobles para las métricas de Prometheus.

  • La API no establece las etiquetas scope_version ni scope_name si esas etiquetas tienen valores vacíos.

Dónde ver los datos transferidos

Los datos de métricas que se transfieren a través de la API de Telemetry se pueden ver en la página Explorador de métricas. Para obtener información sobre cómo ver y graficar tus datos de métricas, consulta Crea gráficos con el Explorador de métricas.