Ce tutoriel explique comment écrire, déployer et appeler un service Cloud Run qui transmet des métriques OLTP personnalisées à Google Cloud Managed Service pour Prometheus à l'aide du collecteur OpenTelemetry intégré à Google en tant que side-car. Pour en savoir plus sur le collecteur conçu par Google, consultez Présentation du collecteur OpenTelemetry conçu par Google.
Si vous disposez d'un service Cloud Run qui signale les métriques Prometheus, utilisez plutôt le side-car Prometheus pour Cloud Run.
Configurer les paramètres par défaut de gcloud
Pour configurer gcloud avec les valeurs par défaut pour votre service Cloud Run, procédez comme suit :
Définissez le projet par défaut :
gcloud config set project PROJECT_ID
Remplacez PROJECT_ID par le nom du projet que vous avez créé pour ce tutoriel.
Configurez gcloud pour la région choisie :
gcloud config set run/region REGION
Remplacez REGION par la région Cloud Run compatible de votre choix.
Emplacements Cloud Run
Cloud Run est régional, ce qui signifie que l'infrastructure qui exécute vos services Cloud Run est située dans une région spécifique et gérée par Google pour être disponible de manière redondante dans toutes les zones de cette région.
Lors de la sélection de la région dans laquelle exécuter vos services Cloud Run, vous devez tout d'abord considérer vos exigences en matière de latence, de disponibilité et de durabilité.
Vous pouvez généralement sélectionner la région la plus proche de vos utilisateurs, mais vous devez tenir compte de l'emplacement des autres Google Cloudproduits utilisés par votre service Cloud Run.
L'utilisation conjointe de produits Google Cloud dans plusieurs emplacements peut avoir une incidence sur la latence et le coût de votre service.
Cloud Run est disponible dans les régions suivantes :
Soumis aux tarifs de niveau 1
asia-east1
(Taïwan)asia-northeast1
(Tokyo)asia-northeast2
(Osaka)asia-south1
(Mumbai, Inde)europe-north1
(Finlande)Faibles émissions de CO2
europe-north2
(Stockholm)Faibles émissions de CO2
europe-southwest1
(Madrid)Faibles émissions de CO2
europe-west1
(Belgique)Faibles émissions de CO2
europe-west4
(Pays-Bas)Faibles émissions de CO2
europe-west8
(Milan)europe-west9
(Paris)Faibles émissions de CO2
me-west1
(Tel Aviv)northamerica-south1
(Mexique)us-central1
(Iowa)Faibles émissions de CO2
us-east1
(Caroline du Sud)us-east4
(Virginie du Nord)us-east5
(Columbus)us-south1
(Dallas)Faibles émissions de CO2
us-west1
(Oregon)Faibles émissions de CO2
Soumis aux tarifs de niveau 2
africa-south1
(Johannesburg)asia-east2
(Hong Kong)asia-northeast3
(Séoul, Corée du Sud)asia-southeast1
(Singapour)asia-southeast2
(Jakarta)asia-south2
(Delhi, Inde)australia-southeast1
(Sydney)australia-southeast2
(Melbourne)europe-central2
(Varsovie, Pologne)europe-west10
(Berlin)europe-west12
(Turin)europe-west2
(Londres, Royaume-Uni)Faibles émissions de CO2
europe-west3
(Francfort, Allemagne)europe-west6
(Zurich, Suisse)Faibles émissions de CO2
me-central1
(Doha)me-central2
(Dammam)northamerica-northeast1
(Montréal)Faibles émissions de CO2
northamerica-northeast2
(Toronto)Faibles émissions de CO2
southamerica-east1
(São Paulo, Brésil)Faibles émissions de CO2
southamerica-west1
(Santiago, Chili)Faibles émissions de CO2
us-west2
(Los Angeles)us-west3
(Salt Lake City)us-west4
(Las Vegas)
Si vous avez déjà créé un service Cloud Run, vous pouvez afficher la région dans le tableau de bord Cloud Run de la consoleGoogle Cloud .
Créer un dépôt d'images Artifact Registry
Créez un dépôt Docker Artifact Registry pour héberger l'exemple d'image de service :
gcloud artifacts repositories create run-otel \ --repository-format=docker \ --location=REGION \ --project=PROJECT_ID
Remplacez les éléments suivants :
- PROJECT_ID par le nom du projet que vous avez créé pour ce tutoriel ;
- REGION par la région Cloud Run compatible de votre choix.
Récupérer l'exemple de code
Pour récupérer l’exemple de code à utiliser, procédez comme suit :
Clonez le dépôt de l'exemple d'application sur votre machine locale :
Accéder
git clone https://github.com/GoogleCloudPlatform/golang-samples.git
Vous pouvez également télécharger l'exemple en tant que fichier ZIP et l'extraire.
Accédez au répertoire contenant l'exemple de code Cloud Run :
Accéder
cd golang-samples/run/custom-metrics/
Comprendre le code
Le code de ce tutoriel comprend les éléments suivants :
- Un serveur qui gère les requêtes entrantes et génère une métrique nommée
sidecar_sample_counter_total
.
- Un fichier
Dockerfile
qui définit l'environnement d'exploitation du service.
L'exemple inclut également des fichiers stockés dans le sous-répertoire collector
permettant de créer un collecteur personnalisé :
Fichier de configuration pour le collecteur.
Un fichier
Dockerfile
qui regroupe la configuration fournie dans une image de collecteur en amont.
Transmettre le code
La transmission du code se déroule en trois étapes : création d'une image de conteneur avec Cloud Build, importation de l'image de conteneur dans Artifact Registry, puis déploiement de cette image dans Cloud Run.
Pour transmettre votre code, procédez comme suit :
-
Créez votre exemple de conteneur de service et publiez-le dans Artifact Registry :
gcloud builds submit --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/sample-metrics-app
En cas de réussite, vous devriez voir un message SUCCESS contenant l'ID, l'heure de création et le nom de l'image. Celle-ci est stockée dans Artifact Registry et peut être réutilisée au besoin.
-
Créez votre conteneur collecteur et publiez-le dans Artifact Registry :
gcloud builds submit collector --tag REGION-docker.pkg.dev/PROJECT_ID/run-otel/otel-collector-metrics
En cas de réussite, vous devriez voir un message SUCCESS contenant l'ID, l'heure de création et le nom de l'image. Celle-ci est stockée dans Artifact Registry et peut être réutilisée au besoin.
-
Déployez votre application :
YAML
-
Créez un fichier nommé
service.yaml
contenant les éléments suivants :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
- Remplacez les éléments suivants :
- CONTAINER_PORT par le port sur lequel écoute le conteneur d'entrée de votre service. Par défaut, il s'agit du port
8080
. - SERVICE-NAME par le nom que vous souhaitez donner à votre service, par exemple
custom-metrics-sample-service
.
- CONTAINER_PORT par le port sur lequel écoute le conteneur d'entrée de votre service. Par défaut, il s'agit du port
-
-
Créez le service à l'aide de la commande suivante :
gcloud run services replace service.yaml
Cette commande renvoie une URL de service. Utilisez cette URL pour tester l'exemple d'application dans la section Tester le service.
Tester le service
À l'aide de l'URL obtenue de la commande gcloud run
dans la section Transmettre le code, connectez-vous au service pour générer des exemples de métriques (vous pouvez exécuter cette commande à plusieurs reprises pour générer des données plus intéressantes) :
curl -H \ "Authorization: Bearer $(gcloud auth print-identity-token)" \ SERVICE_URL
Remplacez SERVICE_URL par l'URL de votre service.
Accédez ensuite à l'explorateur de métriques dans la section Cloud Monitoring de la console Google Cloud , puis sélectionnez la métrique sidecar_sample_counter_total
.
Vous pouvez également interroger les métriques à l'aide de PromQL. Par exemple, la requête ci-dessous filtrera les métriques selon l'ID d'instance Cloud Run :
sidecar_sample_counter_total{instance="INSTANCE_ID"}
Remplacez INSTANCE_ID par l'ID de n'importe quelle instance de votre service (disponible dans les journaux d'instance ou à partir du serveur de métadonnées).
Cette requête génère un graphique semblable à celui-ci :