En este documento, se describe cómo implementar el recopilador de OpenTelemetry, configurar
el recopilador para usar el exportador otlphttp y la
API de Telemetry (OTLP), y ejecutar un generador de telemetría
para escribir métricas en Cloud Monitoring. Luego, puedes ver estas métricas en Cloud Monitoring.
Si usas Google Kubernetes Engine, puedes seguir OpenTelemetry administrado para GKE, en lugar de implementar y configurar de forma manual un recopilador de OpenTelemetry que use la API de Telemetry.
Si usas un SDK para enviar métricas desde una aplicación directamente a la API de Telemetry, consulta Usa SDKs para enviar métricas desde aplicaciones para obtener información y ejemplos adicionales.
También puedes usar un recopilador de OpenTelemetry y la API de Telemetry junto con la instrumentación de OpenTelemetry sin código. Para obtener más información, consulta Usa la instrumentación de OpenTelemetry sin código para Java.
Antes de comenzar
En esta sección, se describe cómo configurar tu entorno para implementar y usar el recopilador.
Selecciona o crea un Google Cloud proyecto
Elige un Google Cloud proyecto para este instructivo. Si aún no tienes un Google Cloud proyecto, crea uno:
- Accede a tu Google Cloud cuenta de. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Instala herramientas de línea de comandos
En este documento, se usan las siguientes herramientas de línea de comandos:
gcloudkubectl
Las herramientas gcloud y kubectl forman parte de Google Cloud CLI. Para obtener información sobre cómo instalarlos, consulta
Administra los componentes de la CLI de Google Cloud. Para ver los componentes de la gcloud CLI que instalaste, ejecuta el siguiente comando:
gcloud components list
Para configurar gcloud CLI para su uso, ejecuta los siguientes comandos:
gcloud auth login gcloud config set project PROJECT_ID
Habilita las APIs
Habilita la API de Cloud Monitoring y la API de Telemetry en tu
Google Cloud proyecto. Presta especial atención a la
API de Telemetry, telemetry.googleapis.com; es posible que este documento
sea la primera vez que te encuentres con esta API.
Para habilitar las APIs, ejecuta los siguientes comandos:
gcloud services enable monitoring.googleapis.com gcloud services enable telemetry.googleapis.com
Crea un clúster
Crear un clúster de GKE
Para crear un clúster de Google Kubernetes Engine llamado
otlp-test, ejecuta el siguiente comando:gcloud container clusters create-auto --location CLUSTER_LOCATION otlp-test --project PROJECT_IDDespués de crear el clúster, conéctate a él ejecutando el siguiente comando:
gcloud container clusters get-credentials otlp-test --region CLUSTER_LOCATION --project PROJECT_ID
Autoriza la cuenta de servicio de Kubernetes
Los siguientes comandos otorgan los roles necesarios de Identity and Access Management (IAM) a la cuenta de servicio de Kubernetes. Estos comandos suponen que usas la federación de identidades para cargas de trabajo para GKE:
export PROJECT_NUMBER=$(gcloud projects describe PROJECT_ID --format="value(projectNumber)")
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/logging.logWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/monitoring.metricWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
gcloud projects add-iam-policy-binding projects/PROJECT_ID \
--role=roles/telemetry.tracesWriter \
--member=principal://iam.googleapis.com/projects/$PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.svc.id.goog/subject/ns/opentelemetry/sa/opentelemetry-collector \
--condition=None
Si tu cuenta de servicio tiene un formato diferente, puedes usar el comando en la documentación de Google Cloud Managed Service para Prometheus para autorizar la cuenta de servicio, con los siguientes cambios:
- Reemplaza el nombre de la cuenta de servicio
gmp-test-sapor tu cuenta de servicio. - Otorga los roles que se muestran en el conjunto de comandos anterior, no solo el rol
roles/monitoring.metricWriter.
Implementa el recopilador de OpenTelemetry
Para crear la configuración del recopilador, haz una copia del siguiente archivo YAML y colócala en un archivo llamado collector.yaml. También puedes encontrar
la siguiente configuración en GitHub en el otlp-k8s-ingest
repositorio.
En tu copia, asegúrate de reemplazar la instancia de ${GOOGLE_CLOUD_PROJECT}
por tu ID del proyecto, PROJECT_ID.
OTLP para las métricas de Prometheus solo funciona cuando se usa el recopilador de OpenTelemetry versión 0.140.0 o posterior.
Configura el recopilador de OpenTelemetry implementado
Para configurar la implementación del recopilador, crea recursos de Kubernetes.
Para crear el espacio de nombres
opentelemetryy la configuración del recopilador en el espacio de nombres, ejecuta los siguientes comandos:kubectl create namespace opentelemetry kubectl create configmap collector-config -n opentelemetry --from-file=collector.yamlPara configurar el recopilador con recursos de Kubernetes, ejecuta los siguientes comandos:
kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/2_rbac.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/3_service.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/4_deployment.yaml kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/otlpmetric/k8s/base/5_hpa.yamlEspera a que los pods del recopilador alcancen el estado "Running" y tengan 1/1 contenedores listos. Esto tarda unos tres minutos en Autopilot, si es la primera carga de trabajo implementada. Para verificar los pods, usa el siguiente comando:
kubectl get po -n opentelemetry -wPara dejar de observar el estado del pod, presiona Ctrl-C para detener el comando.
También puedes verificar los registros del recopilador para asegurarte de que no haya errores evidentes:
kubectl logs -n opentelemetry deployment/opentelemetry-collector
Implementa el generador de telemetría
Puedes probar tu configuración con la herramienta de código abierto
telemetrygen. Esta app genera telemetría y la envía al recopilador.
Para implementar la app
telemetrygenen el espacio de nombresopentelemetry-demo, ejecuta el siguiente comando:kubectl apply -f https://raw.githubusercontent.com/GoogleCloudPlatform/otlp-k8s-ingest/refs/heads/main/sample/app.yamlDespués de crear la implementación, es posible que los pods tarden un tiempo en crearse y comenzar a ejecutarse. Para verificar el estado de los pods, ejecuta el siguiente comando:
kubectl get po -n opentelemetry-demo -wPara dejar de observar el estado del pod, presiona Ctrl-C para detener el comando.
Consulta una métrica con el Explorador de métricas
La herramienta telemetrygen escribe en una métrica llamada gen. Puedes consultar esta métrica desde la interfaz del generador de consultas y el editor de consultas de PromQL en el Explorador de métricas.
En la Google Cloud consola de, accede a la leaderboard Explorador de métricas página:
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.
- Si usas la interfaz del generador de consultas del Explorador de métricas, el nombre completo de la métrica es
prometheus.googleapis.com/gen/gauge. - Si usas el editor de consultas de PromQL, puedes consultar la métrica con el nombre
gen.
En la siguiente imagen, se muestra un gráfico de la métrica gen en el Explorador de métricas:
Borra el clúster
Después de verificar tu implementación mediante la consulta de la métrica, puedes borrar el clúster. Para borrar el clúster, ejecuta el siguiente comando:
gcloud container clusters delete --location CLUSTER_LOCATION otlp-test --project PROJECT_ID
Usa otros recopiladores basados en OpenTelemetry
Es posible que puedas usar otros recopiladores basados en OpenTelemetry para enviar métricas de OTLP a la API de Telemetry, aunque Google Cloud no proporciona asistencia al cliente para los recopiladores basados en OpenTelemetry no estándar.
Por ejemplo, puedes enviar métricas con
Grafana Alloy versión 1.16.0 o
posterior si te autenticas con el otelcol.auth.google
componente
y lo configuras de manera similar a un recopilador de OpenTelemetry estándar
con las instrucciones de este documento.
¿Qué sigue?
- Si deseas obtener información para usar un recopilador de OpenTelemetry y la API de Telemetry con la instrumentación de OpenTelemetry sin código, consulta Usa la instrumentación de OpenTelemetry sin código para Java.
- Si deseas obtener información para enviar métricas desde aplicaciones que usan SDKs, consulta Usa SDKs para enviar métricas desde aplicaciones.
- Si deseas obtener información para migrar al exportador
otlphttpdesde otro exportador, consulta Migra al exportador de OTLP. - Para obtener más información sobre la API de Telemetry, consulta Descripción general de la API de Telemetry (OTLP).