En este tutorial se muestra cómo escribir, desplegar y llamar a un servicio de Cloud Run que envía métricas OTLP personalizadas a Google Cloud Managed Service para Prometheus mediante el uso de OpenTelemetry Collector creado por Google como servicio adicional. Para obtener información sobre el recopilador creado por Google, consulta el artículo Descripción general del recopilador OpenTelemetry creado por Google.
Si tienes un servicio de Cloud Run que registra métricas de Prometheus, usa el complemento de Prometheus para Cloud Run.
Configurar los valores predeterminados de gcloud
Para configurar gcloud con los valores predeterminados de tu servicio de Cloud Run, sigue estos pasos:
Configura tu proyecto predeterminado:
gcloud config set project PROJECT_ID
Sustituye PROJECT_ID por el nombre del proyecto que has creado para este tutorial.
Configura gcloud para la región que hayas elegido:
gcloud config set run/region REGION
Sustituye REGION por la región de Cloud Run compatible que quieras.
Ubicaciones de Cloud Run
Cloud Run es regional, lo que significa que la infraestructura que ejecuta tus servicios de Cloud Run se encuentra en una región específica y Google la gestiona para que esté disponible de forma redundante en todas las zonas de esa región.
Cumplir tus requisitos de latencia, disponibilidad o durabilidad son factores primordiales para seleccionar la región en la que se ejecutan tus servicios de Cloud Run.
Por lo general, puedes seleccionar la región más cercana a tus usuarios, pero debes tener en cuenta la ubicación de los otros Google Cloudproductos que utiliza tu servicio de Cloud Run.
Usar Google Cloud productos juntos en varias ubicaciones puede afectar a la latencia y al coste de tu servicio.
Cloud Run está disponible en las siguientes regiones:
Con sujeción a los precios del nivel 1
asia-east1
(Taiwán)asia-northeast1
(Tokio)asia-northeast2
(Osaka)asia-south1
(Bombay, la India)europe-north1
(Finlandia)CO2 bajo
europe-north2
(Estocolmo)CO2 bajo
europe-southwest1
(Madrid)CO2 bajo
europe-west1
(Bélgica)CO2 bajo
europe-west4
(Países Bajos)CO2 bajo
europe-west8
(Milán)europe-west9
(París)CO2 bajo
me-west1
(Tel Aviv)northamerica-south1
(México)us-central1
(Iowa)CO2 bajo
us-east1
(Carolina del Sur)us-east4
(Norte de Virginia)us-east5
(Columbus)us-south1
(Dallas)CO2 bajo
us-west1
(Oregón)CO2 bajo
Con sujeción 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, la 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)CO2 bajo
europe-west3
(Fráncfort, Alemania)europe-west6
(Zúrich, Suiza)Bajas emisiones de CO2
me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montreal)CO2 bajo
northamerica-northeast2
(Toronto)CO2 bajo
southamerica-east1
(São Paulo, Brasil)CO2 bajo
southamerica-west1
(Santiago, Chile)CO2 bajo
us-west2
(Los Ángeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Si ya has creado un servicio de Cloud Run, puedes ver la región en el panel de control de Cloud Run de la Google Cloud consola.
Crear 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
Haz los cambios siguientes:
- PROJECT_ID con el nombre del proyecto que has creado para este tutorial.
- REGION REGION por la región de Cloud Run compatible que quieras.
Obtener el código de ejemplo
Para obtener el código de muestra que vas a usar, sigue estos pasos:
Clona el repositorio de aplicaciones de muestra en la máquina local:
Go
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
También puedes descargar el ejemplo como un archivo ZIP y extraerlo.
Cambia al directorio que contiene el código de ejemplo de Cloud Run:
Go
cd golang-samples/run/custom-metrics/
Revisar el código
El código de este tutorial consta de lo siguiente:
- Un servidor que gestiona las solicitudes entrantes y genera una métrica llamada
sidecar_sample_counter_total
.
- Un
Dockerfile
que define el entorno operativo del servicio.
El ejemplo también incluye archivos en el subdirectorio collector
para crear un recolector personalizado:
Un archivo de configuración del recopilador.
Un
Dockerfile
que agrupa la configuración proporcionada en una imagen de Collector upstream.
Envío del código
El envío de código consta de tres pasos: crear una imagen de contenedor con Cloud Build, subir la imagen de contenedor a Artifact Registry y desplegar la imagen de contenedor en Cloud Run.
Para enviar tu código, sigue estos pasos:
-
Crea el contenedor de servicio de ejemplo y publícalo en Artifact Registry:
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/sample-metrics-app
Si la operación se realiza correctamente, verás un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. creation time, and image name. La imagen se almacena en Artifact Registry y se puede volver a usar si se quiere.
-
Crea el contenedor del Colector y publícalo en Artifact Registry:
gcloud builds submit collector --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/otel-collector-metrics
Si la operación se realiza correctamente, verás un mensaje de ÉXITO con el ID, la hora de creación y el nombre de la imagen. creation time, and image name. La imagen se almacena en Artifact Registry y se puede volver a usar si se quiere.
-
Despliega tu aplicación:
YAML
-
Crea un 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
-
Sustituye lo siguiente:
- CONTAINER_PORT con el puerto en el que escucha el contenedor de entrada de tu servicio. El valor predeterminado es
8080
. - SERVICE-NAME con el nombre que quieras para tu servicio, como
custom-metrics-sample-service
.
- CONTAINER_PORT con el puerto en el que escucha el contenedor de entrada de tu servicio. El valor predeterminado es
-
-
Crea el nuevo servicio con el siguiente comando:
gcloud run services replace service.yaml
Este comando devuelve una URL de servicio. Usa esta URL para probar la aplicación de ejemplo en Probar.
Probar la función
Usa la URL del comando gcloud run
de la sección Enviar el código para conectarte al servicio y generar algunas métricas de ejemplo (puedes ejecutar este comando varias veces para generar datos más interesantes):
curl -H \ "Authorization: Bearer $(gcloud auth print-identity-token)" \ SERVICE_URL
Sustituye SERVICE_URL por la URL de tu servicio.
A continuación, ve a Explorador de métricas
en la sección Cloud Monitoring de la Google Cloud consola 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 en función del ID de instancia de Cloud Run:
sidecar_sample_counter_total{instance="INSTANCE_ID"}
Sustituye INSTANCE_ID por el ID de cualquier instancia de tu servicio (disponible en los registros de la instancia o en el servidor de metadatos).
Esta consulta genera un gráfico como el siguiente: