En este documento, se describe cómo los datos de métricas que se envían a tu proyecto Google Cloud con la API de Telemetría (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 exportador otlphttp y un recopilador de OpenTelemetry, o cuando usas los SDKs de OpenTelemetry.
OpenTelemetry es un proyecto de código abierto compatible con Google Cloudque cuenta con ingenieros Google Cloudpara garantizar la compatibilidad con la transferencia y visualización de tus datos de telemetría.
Métricas de OTLP en Cloud Monitoring
Cuando las métricas se transfieren a Cloud Monitoring con un recopilador de OpenTelemetry y el exportador de 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:
- La asignación entre los recursos de OTLP y los recursos supervisados de Cloud Monitoring.
- La asignación entre las métricas de OTLP y las métricas de Cloud Monitoring.
Asignación de recursos supervisados
Todos los puntos de métricas se escriben tal como lo hacen para Google Cloud Managed Service para Prometheus, a través de 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 del 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 de prometheus-target |
Valor utilizado (en orden de prioridad) |
|---|---|
location (obligatorio) |
|
cluster |
|
namespace |
|
job |
|
instanceRechaza el punto si está vacío |
|
Asignación de métricas
Las métricas se convierten al formato de serie temporal de Prometheus. Los nombres de las métricas no deben tener dominio o deben tener el dominioprometheus.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 resultante de Cloud Monitoring tiene la siguiente estructura:
prometheus.googleapis.com/{metric_name}/{suffix}
Además, para cada recurso único de OpenTelemetry, la conversión agrega una métrica target_info que contiene todos los atributos del recurso, excepto service.name, service.instance.id y service.namespace.
Todas las métricas de INT64 de OTLP se traducen al tipo de valor DOUBLE 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 se puede cambiar el tipo de valor. La consecuencia más común de admitir valores de 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 OTLP se asigna al indicador de Cloud Monitoring.
- La métrica de OTLP Sum se asigna de la siguiente manera:
- En el medidor de Cloud Monitoring cuando
is_monotonicse establece enfalse - A Cloud Monitoring acumulativo cuando
aggregation_temporalityse establece enAGGREGATION_TEMPORALITY_CUMULATIVE. - Es el delta de Cloud Monitoring cuando
aggregation_temporalityse establece enAGGREGATION_TEMPORALITY_DELTA.
- En el medidor de Cloud Monitoring cuando
- 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,sumy cadaquantile.- Los nombres de las métricas de recuento y suma tienen el sufijo
_counto_sum, respectivamente, y se escriben como métricas acumulativas de Cloud Monitoring del tipo DOUBLE. - Cada cuantil se convierte en su propia serie temporal de medidor de tipo DOUBLE, con una etiqueta
quantile.
- Los nombres de las métricas de recuento y suma tienen el sufijo
En la siguiente tabla, se resume el mapeo de métricas:
| Tipo de punto de OTLP | Supervisión tipo de métrica | Supervisión del tipo de valor | 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 (monotónica, ACUMULATIVA) | ACUMULATIVO | DOUBLE | /counter | |
| SUM (monotónica, CUMULATIVA, metric.metadata["prometheus.type"]="unknown") | ACUMULATIVO | DOUBLE | /unknown:counter | El recopilador de OpenTelemetry divide los valores desconocidos de Prometheus en un contador y un indicador. |
| SUM (monotónica, DELTA) | DELTA | DOUBLE | /delta | |
| SUM (no monotónica, CUMULATIVE) | GAUGE | DOUBLE | /gauge | |
| HISTOGRAMA (ACUMULATIVO) | ACUMULATIVO | DISTRIBUTION con buckets explícitos | /histogram | |
| HISTOGRAMA EXPONENCIAL (ACUMULATIVO) | ACUMULATIVO | DISTRIBUTION con buckets exponenciales | /histogram | |
| HISTOGRAMA (DELTA) | DELTA | DISTRIBUTION con buckets explícitos | /histogram:delta | |
| HISTOGRAMA EXPONENCIAL (DELTA) | DELTA | DISTRIBUTION con buckets exponenciales | /histogram:delta | |
| SUMMARY (sum, count, quantile) |
ACUMULATIVO ACUMULATIVO MEDIDOR |
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 cuantiles también se generan con una etiqueta quantile. |
Diferencias entre el exportador de googlemanagedprometheus y la API de Telemetry
La API de Telemetry (telemetry.googleapis.com) controla las métricas de manera diferente al exportador de googlemanagedprometheus:
La API de Telemetry permite usar los caracteres de punto (
.) y barra diagonal (/) en los nombres de las métricas. El exportador degooglemanagedprometheusconvierte 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 llamadaprometheus.googleapis.com/foo.bar/gauge, pero el exportador degooglemanagedprometheusla exporta comoprometheus.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 acceso a la transferencia controlan los caracteres de punto (
.) y barra (/) significa que los descriptores de métricas resultantes difieren entre las métricas transferidas con el exportadorgooglemanagedprometheusy las transferidas con el exportadorotlphttp. Si usas ambas rutas de acceso de transferencia, tendrás dos conjuntos de métricas. Para obtener resultados completos cuando realices consultas, deberás unir manualmente los resultados de las versiones de Prometheus y OTLP de las métricas.La API de Telemetry no agrega una unidad al nombre de una métrica cuando hay una unidad presente, y no agrega un sufijo
_totala los contadores. Por lo tanto, una métrica exportada comoprometheus.googleapis.com/foo/countercuando se usa la API de Telemetry se exporta comoprometheus.googleapis.com/foo_seconds_total/countercon el exportadorgooglemanagedprometheus. Esta diferencia también se aplica a los sufijos_totaly_ratio.La API sintetiza el valor de
sum_of_squared_deviationpara los valores de distribución derivados de histogramas exponenciales. El exportador degooglemanagedprometheusno 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_versionoscope_namesi 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 del 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.