En este instructivo, se muestra cómo escribir, implementar y llamar a un servicio de Cloud Run que informa métricas de OTLP personalizadas a Google Cloud Managed Service para Prometheus con el recopilador de OpenTelemetry integrado en Google como archivo adicional. Para obtener información sobre el recopilador integrado en Google, consulta Descripción general del recopilador de OpenTelemetry integrado en Google.
Si tienes un servicio de Cloud Run que informa las métricas de Prometheus, usa el sidecar de Prometheus para Cloud Run en su lugar.
Configura los valores predeterminados de gcloud
A fin de configurar gcloud con los valores predeterminados para el servicio de Cloud Run, sigue estos pasos:
Configura el proyecto predeterminado:
gcloud config set project PROJECT_ID
Reemplaza PROJECT_ID por el nombre del proyecto que creaste para este instructivo.
Configura gcloud en la región que elegiste:
gcloud config set run/region REGION
Reemplaza REGION por la región de Cloud Run compatible que prefieras.
Ubicaciones de Cloud Run
Cloud Run es regional, lo que significa que la infraestructura que ejecuta los servicios se ubica en una región específica, y Google la administra para que esté disponible de manera redundante en todas las zonas de esa región.
El cumplimiento de los requisitos de latencia, disponibilidad o durabilidad es el factor principal para seleccionar la región en la que se ejecutan los servicios de Cloud Run.
Por lo general, puedes seleccionar la región más cercana a tus usuarios, pero debes considerar la ubicación de los otros Google Cloud
productos que usa tu servicio de Cloud Run.
Si usas Google Cloud productos en varias ubicaciones, la latencia y el costo del servicio pueden verse afectados.
Cloud Run está disponible en las siguientes regiones:
Sujetas a los Precios del nivel 1
asia-east1
(Taiwán)asia-northeast1
(Tokio)asia-northeast2
(Osaka)asia-south1
(Bombay, India)europe-north1
(Finlandia)Bajo nivel de CO2
europe-north2
(Estocolmo)Bajo nivel de CO2
europe-southwest1
(Madrid)Bajo nivel de CO2
europe-west1
(Bélgica)Bajo nivel de CO2
europe-west4
(Países Bajos)Bajo nivel de CO2
europe-west8
(Milán)europe-west9
(París)Bajo nivel de CO2
me-west1
(Tel Aviv)northamerica-south1
(México)us-central1
(Iowa)Bajo nivel de CO2
us-east1
(Carolina del Sur)us-east4
(Virginia del Norte)us-east5
(Columbus)us-south1
(Dallas)Bajo nivel de CO2
us-west1
(Oregón)Bajo nivel de CO2
Sujetas a los Precios del nivel 2
africa-south1
(Johannesburgo)asia-east2
(Hong Kong)asia-northeast3
(Seúl, Corea del Sur)asia-southeast1
(Singapur)asia-southeast2
(Yakarta)asia-south2
Delhi (India)australia-southeast1
(Sídney)australia-southeast2
(Melbourne)europe-central2
(Varsovia, Polonia)europe-west10
(Berlín)europe-west12
(Turín)europe-west2
(Londres, Reino Unido)Bajo nivel de CO2
europe-west3
(Fráncfort, Alemania)europe-west6
(Zúrich, Suiza)Bajo nivel de CO2
me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal)Bajo nivel de CO2
northamerica-northeast2
(Toronto)Bajo nivel de CO2
southamerica-east1
(São Paulo, Brasil)Bajo nivel de CO2
southamerica-west1
(Santiago, Chile)Bajo nivel de CO2
us-west2
(Los Ángeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Si ya creaste un servicio de Cloud Run, puedes ver la región en el panel de Cloud Run en la consola.Google Cloud
Crea un repositorio de imágenes de Artifact Registry
Crea un repositorio de Docker de Artifact Registry para alojar la imagen del servicio de muestra:
gcloud artifacts repositories create run-otel \ --repository-format=docker \ --location=REGION \ --project=PROJECT_ID
Reemplaza lo siguiente:
- PROJECT_ID por el nombre del proyecto que creaste para este instructivo.
- REGION por la región de Cloud Run compatible que prefieras.
Recupera la muestra de código
A fin de recuperar la muestra de código para su uso, haz lo siguiente:
Clona el repositorio de la app de muestra en tu máquina local:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
De manera opcional, puedes descargar la muestra como un archivo ZIP y extraerla.
Ve al directorio que contiene el código de muestra de Cloud Run:
Go
cd golang-samples/run/custom-metrics/
Revisa el código
El código de este instructivo consta de los siguientes elementos:
- Un servidor que controla las solicitudes entrantes y genera una métrica llamada
sidecar_sample_counter_total
- Un
Dockerfile
que define el entorno operativo del servicio.
En la muestra, también se incluyen archivos en el subdirectorio collector
para compilar un recopilador personalizado:
Es un archivo de configuración para el recopilador.
Un
Dockerfile
que agrupa el archivo de configuración proporcionado en una imagen ascendente de recopilador.
Envía el código
El código de envío consta de tres pasos: compilar una imagen de contenedor con Cloud Build, subir la imagen de contenedor a Artifact Registry y, luego, implementar la imagen de contenedor en Cloud Run.
Para enviar el código, haz lo siguiente:
-
Compila el contenedor de servicio de muestra y publica en Artifact Registry:
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/sample-metrics-app
Si la operación se completa de manera correcta, deberías ver un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. La imagen se almacena en Artifact Registry y puede volver a usarse si así se desea.
-
Compila el contenedor del recopilador y publica en Artifact Registry:
gcloud builds submit collector --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/otel-collector-metrics
Si la operación se completa de manera correcta, deberías ver un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. La imagen se almacena en Artifact Registry y puede volver a usarse si así se desea.
-
Implementa tu aplicación:
YAML
-
Crea un nuevo archivo llamado
service.yaml
con el siguiente contenido:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE-NAME annotations: run.googleapis.com/launch-stage: BETA spec: template: metadata: annotations: run.googleapis.com/container-dependencies: "{app:[collector]}" spec: containers: - image: REGION-docker.pkg.dev/PROJECT_ID/run-otel/sample-metrics-app name: app ports: - containerPort: CONTAINER_PORT env: - name: "OTEL_EXPORTER_OTLP_ENDPOINT" value: "http://localhost:4317" - image: REGION-docker.pkg.dev/PROJECT_ID/run-otel/otel-collector-metrics name: collector startupProbe: httpGet: path: / port: 13133
- Reemplaza lo siguiente:
- CONTAINER_PORT por el puerto en el que escucha el contenedor de entrada de tu servicio. El valor predeterminado es
8080
. - SERVICE-NAME por cualquier nombre para tu servicio, como
custom-metrics-sample-service
.
- CONTAINER_PORT por el puerto en el que escucha el contenedor de entrada de tu servicio. El valor predeterminado es
-
-
Crea el Service nuevo con el siguiente comando:
gcloud run services replace service.yaml
Este comando muestra una URL de servicio. Usa esta URL para probar la aplicación de muestra en Prueba.
Prueba
Usa la URL del comando gcloud run
en Envía el código para conectarte al servicio y generar algunas métricas de muestra (puedes ejecutar este comando varias veces para generar datos más interesantes):
curl -H \ "Authorization: Bearer $(gcloud auth print-identity-token)" \ SERVICE_URL
Reemplaza SERVICE_URL por la URL de tu servicio.
A continuación, navega al Explorador de métricas dentro de la sección Cloud Monitoring de la consola de Google Cloud y selecciona la métrica sidecar_sample_counter_total
.
También puedes consultar las métricas con PromQL. Por ejemplo, la siguiente consulta filtrará las métricas según el ID de instancia de Cloud Run:
sidecar_sample_counter_total{instance="INSTANCE_ID"}
Reemplaza INSTANCE_ID por el ID de cualquier instancia de tu servicio (disponible en los registros de la instancia o desde el servidor de metadatos).
Esta consulta genera un gráfico como el que se muestra a continuación: