Surveillance de Google Cloud Run

Pour surveiller les applications exécutées sur Google Cloud Run ( GCP ), vous devez configurer l'agent GCP, puis installer les collecteurs en cours d'exécution Instana Google Cloud Run.

Pour plus d'informations sur les autres plateformes et services pris en charge par l' Google Cloud, consultez la documentation d' GCP.

Pour plus d'informations, consultez la section « Configuration de l'agent GCP » et « Installation des collecteurs en cours d'exécution Instana Google Cloud Run ».

Le soutien apporté à Google Cloud Run repose sur les deux piliers suivants :

  • Un agent hôte d' Instana s qui surveille le projet « Google Cloud Platform » ( GCP ) et ses ressources.

    Le reste de la documentation concerne la configuration de l'agent hôte Instana pour la surveillance d'un projet GCP en tant qu 'agent GCP.

    La configuration d'un agent hôte Instana pour surveiller un projet GCP permet d'obtenir des métriques sur les révisions du service Cloud Run contenues dans ce projet.

  • Instana les collecteurs intégrés au processus qui sont intégrés à l'image de conteneur que vous utilisez sur Cloud Run.

    L'ajout d'un collecteur intégré « Instana » à l'image « Docker » permet de mieux suivre les instances individuelles lancées par Cloud Run, fournit des métriques spécifiques à l'environnement d'exécution (telles que les métriques « JVM », « Node.js » et «.Net ») et offre également un suivi des appels.

Remarque : Instana ne prend actuellement en charge que la plateforme entièrement gérée. Cloud Run sur Anthos ou GKE n'est pas pris en charge.

Configuration de l'agent « GCP »

Avant d'installer un collecteur en cours d'exécution d' Google Cloud Run, assurez-vous que l'agent hôte d' Instana est installé sur la machine hôte où se trouve GCP afin de surveiller le projet GCP. Il est nécessaire d'utiliser une machine dédiée pour surveiller les ressources d' GCP.

L'intégration Google Cloud d'Instana utilise des comptes de service pour se connecter à l'API d'administration GCP depuis l'agent GCP. Vous devez donc créer un compte de service et fournir ses identifiants à l'agent d' GCP, afin qu'il puisse effectuer des appels vers API en votre nom.

Remarque : si vous avez déjà configuré ce service pour un autre service de l' GCP (tel que Google Cloud Storage ou Google Cloud SQL ), vous pouvez ignorer la création d'un nouveau compte de service, mais vous devrez peut-être ajouter des autorisations supplémentaires pour Cloud Run.
  1. Go Accédez à la page des identifiants d' Google Cloud s du projet Google Cloud pour lequel vous souhaitez configurer l'intégration Instana.

  2. Cliquez sur CREATE CREDENTIALS > Compte de service.

    SelectServiceAccount

  3. Sur la page Créer un compte de service , entrez un nom unique pour le compte de service et cliquez sur Créer et continuer.

  4. Ajoutez le rôle Cloud Run Viewer au compte. Vous pouvez également créer un rôle personnalisé, qui possède au moins les droits suivants:

    • resourcemanager.projects.get
    • run.revisions.list
    • run.services.list
    • monitoring.timeSeries.list

    Pour créer un rôle personnalisé, procédez comme suit :

    1. Dans le menu de navigation, cliquez sur Rôles > Créer un rôle.
    2. Entrez le titre du rôle et cliquez sur ADD PERMISSIONS.
    3. Ajoutez les droits de base mentionnés précédemment, qui sont requis pour le rôle, puis cliquez sur Créer.
  5. Sélectionnez le compte que vous avez créé dans la liste des comptes de service.

  6. Sélectionnez l'onglet KEYS et cliquez sur Ajouter une clé.

  7. Sélectionnez « Créer une nouvelle clé », choisissez le type de clé « JSON », puis cliquez sur « CRÉER ».

    clé de compte de service

    Remarque : vous devez noter l'emplacement du fichier d'informations d'identification afin de mener à bien l'intégration.
  8. Dans le fichier de configuration *instanaAgentDir*/etc/instana/configuration.yaml de l'agent hôte, ajoutez un champ credentials_path dans la com.instana.plugin.gcp section (pour toutes les ressources d' GCP ) ou dans la com.instana.plugin.gcp.run section (identifiants destinés uniquement à la surveillance de Cloud Run). La valeur de la zone credentials_path correspond au chemin du fichier de données d'identification. Pour plus d'informations, voir Configuration facultative.

Pour surveiller un projet GCP, les services suivants doivent être activés :

Configuration facultative

Taux d'interrogation

Vous pouvez définir la fréquence, en secondes, à laquelle l'agent d' GCP s interroge l' API de métrique en ajoutant la configuration suivante au fichier de configuration de l'agent d' GCP :

com.instana.plugin.gcp.run:
  enabled: tru
  poll_rate: 60  # How often Google's metrics API will be polled
  credentials_path: '/opt/instana/credentials/cred-gcp.json'  # Path to Service Account credentials
  include_tags:
    ...
  exclude_tags:
    ...
 

Filtrage

Plusieurs balises séparées par des virgules peuvent être définies. Les balises doivent être fournies sous la forme d'une paire clé-valeur séparée par le caractère : . Pour faciliter la configuration, il est possible de définir les balises que vous souhaitez inclure (ou exclure) dans le processus de reconnaissance. Si une balise est présente dans les deux listes (inclusion et exclusion), la liste d'exclusion a une priorité plus élevée. S'il n'est pas nécessaire de filtrer les services, les attributs include_tags et exclude_tags doivent être omis.

Pour inclure ou exclure des révisions de service Cloud Run par balises, utilisez la configuration suivante:

com.instana.plugin.gcp.run:
  include_tags: # Comma separated list of tags in key:value format (e.g. env:dev,env:test)
  exclude_tags: # Comma separated list of tags in key:value format (e.g. env:dev,env:test)
 

Libellés

L'agent « Instana » récupère automatiquement les étiquettes des révisions du service Google Cloud Run et les affiche dans la section « Tags » de la barre latérale pour chaque révision du service Cloud Run. Vous pouvez utiliser ces étiquettes comme filtres pour trier les ressources sur la carte de l'infrastructure dans l'interface utilisateur d' Instana.

Configuration des collecteurs en cours d'exécution d' Instana Google Cloud Run

Pour collecter des données de traçage, des métriques spécifiques à l'exécution et des données supplémentaires concernant les instances de révision du service Cloud Run, suivez les étapes propres à la technologie concernée :

Java

Le collecteur In-process Java Cloud Run est livré via l'image Docker containers.instana.io/instana/release/google/cloud-run/jvm. Vous pouvez utiliser cette fonctionnalité dans les processus de compilation multi-étapes d' Docker afin de rationaliser et d'accélérer la création d'images Docker pour les applications Java qui s'exécutent sur Google Cloud Run, comme suit.

Ajoutez les lignes suivantes dans votre fichier Dockerfile n'importe où après la dernière clause FROM :

COPY --from=containers.instana.io/instana/release/google/cloud-run/jvm /instana /instana
ENV JAVA_TOOL_OPTIONS="-javaagent:/instana/instana-standalone-collector.jar"
 

Lorsque vous utilisez le collecteur intégré à Cloud Run d' Java, la seule étape supplémentaire nécessaire pour configurer les collecteurs d' Instana, outre la création de l'image, consiste à ajouter les deux variables d'environnement à la révision du service, comme décrit dans la section « Configurer votre service Cloud Run ».

Remarques :

  • Le démon Docker que vous utilisez pour le processus de génération doit être connecté à containers.instana.io.

  • La création automatique de profils pour les processus « Java » s'exécutant dans « Google Cloud Run » n'est pas prise en charge.

Node.js

Le collecteur en cours d'exécution Cloud Run d' Node.js est fourni via l'image icr.io/instana/google-cloud-run-nodejsDocker. Vous pouvez utiliser cette fonctionnalité dans les processus de compilation multi-étapes d' Docker afin de rationaliser et d'accélérer la création d'images d' Docker pour les applications Node.js exécutées sur Cloud Run, comme suit.

Si votre application a été développée à l'aide d' CommonJS,, suivez les étapes décrites dans la section « CommonJS ».

Si votre application est développée à l'aide des modules ECMAScript, suivez les étapes décrites dans la section consacrée aux modules ECMAScript.

Instana ne prend actuellement en charge que x86_64 l'architecture.

CommonJS

Ajoutez les lignes suivantes dans votre fichier Dockerfile n'importe où après la dernière clause FROM :


COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN /instana/setup.sh
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
 

Modules ECMAScript

Ajoutez les lignes suivantes n'importe où dans Dockerfile votre fichier, après la dernière clause FROM ` (à partir de la version Node.js18.19 ) :

COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN /instana/setup.sh
ENV NODE_OPTIONS="--import=/instana/node_modules/@instana/google-cloud-run/esm-register.mjs"

Générez le conteneur et transférez-le dans le référentiel d'images de votre choix.

Enfin, suivez les étapes de configuration décrites dans la section « Configuration de votre service Cloud Run ».

Remarque :
  • Si votre version d' Node.js est antérieure à la version 18.19.0, vous devez utiliser --experimental-loader /instana/node_modules/@instana/google-cloud-run/esm-loader.mjs à la place de --import /instana/node_modules/@instana/google-cloud-run/esm-register.mjs.
  • L'utilisation de --experimental-loader avec esm-loader.mjs n'est plus prise en charge dans les versions actuelles et sera supprimée lors de la prochaine mise à jour. Pour plus d'informations, consultez la section « Modifications importantes ».
  • Si vous utilisez des générations à plusieurs étapes (c'est-à-dire si vous avez plusieurs clauses FROM dans votre Dockerfile), vous devez ajouter les lignes suivantes à la dernière clause FROM de votre Dockerfile.
  • La fonctionnalité « Auto-profile » des processus « Node.js » s'exécutant sur Cloud Run n'est pas prise en charge.

Gestion des versions

Pour afficher toutes les versions disponibles, exécutez la commande suivante :

curl -s https://icr.io/v2/instana/google-cloud-run-nodejs/tags/list | jq .

Pour plus d'informations, consultez la section « Gestion des versions » sur Node.js.

Génération de dépendances et de modules complémentaires natifs

Si vous utilisez une image de base plutôt minimale pour vos conteneurs Node.js , qui ne comporte pas les packages requis pour générer des modules complémentaires Node.js natifs, un avertissement comme celui-ci peut s'afficher dans votre génération Docker :

gyp ERR! ...some error message from trying to rebuild native add-ons, for example:
gyp ERR! stack Error: Could not find any Python installation to use
...
Warning: Rebuilding native add-ons for @instana/google-cloud-run failed. Monitoring the Cloud Run service revision instance will work nonetheless, but you will miss some Node.js metrics (GC metrics, event loop metrics, ...). See https://www.instana.com/docs/ecosystem/google-cloud-run/#build-dependencies-and-native-add-ons for details.
 

Comme l'indique le message du journal, la surveillance de votre instance de révision du service Cloud Run d' Node.js, via Instana, fonctionne. Mais certaines métriques sont manquantes. Instana recommande d'installer les paquets du système d'exploitation manquants, au moins temporairement, pendant la compilation. Ils n'ont pas besoin d'être inclus dans l'image finale. Les packages à installer et leur mode d'installation dépendent de la distribution que vous utilisez.

Voir l'exemple de fragment de fichier Dockerfile suivant pour Linux® Alpine:


COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN apk add --no-cache --virtual .gyp \
        build-base \
        python \
     /instana/setup.sh \
     apk del .gyp python
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
 

Voir l'exemple suivant pour les distributions basées sur Debian (y compris Ubuntu):


COPY --from=icr.io/instana/google-cloud-run-nodejs:latest /instana /instana
RUN apt-get update \
     apt-get install build-essential \
     /instana/setup.sh \
     apt-get remove -y build-essential
ENV NODE_OPTIONS="--require /instana/node_modules/@instana/google-cloud-run"
 

Pour les distributions qui utilisent yum ( CentOS,, RHEL, etc.), la commande d'installation des packages requis serait la suivante:

RUN yum groupinstall "Development Tools"
 

.Net Core

La prise en charge par Instana des applications.NET Core exécutées sur Cloud Run nécessite les étapes suivantes :

  1. Ajoutez les paquets NuGet Instana à votre application.
  2. Configurez les variables d'environnement décrites dans la section Configurer votre service Cloud Run .

Et c'est terminé ! Tout le reste est entièrement automatisé.

Ajout des packages NuGet dans votre image de conteneur

Pour modifier le fichier Dockerfile afin d'ajouter les paquets NuGet d' Instana lors de la compilation de vos images Docker, consultez l'exemple suivant :

# If running on Alpine or muslc-based images
RUN dotnet add Instana.Tracing.Core.Rewriter.Alpine
# Glibc-based images like RHEL and Debian derivatives
RUN dotnet add Instana.Tracing.Core.Rewriter.Linux

# set CoreCLR tracing environment variables
ENV CORECLR_ENABLE_PROFILING=1
ENV CORECLR_PROFILER={cf0d821e-299b-5307-a3d8-b283c03916dd}
ENV CORECLR_PROFILER_PATH=/app/instana_tracing/CoreProfiler.so
ENV DOTNET_STARTUP_HOOKS=/app/Instana.Tracing.Core.dll
 
Important :
  • Deux packages différents basés sur la version de lib utilisée par vos conteneurs sont proposés:

    • muslc, utilisé par les conteneurs basés sur Alpine, a besoin du package Instana.Tracing.Core.Rewriter.Alpine .

    • glibc, bibliothèque utilisée par presque toutes les distributions autres qu'Alpine, nécessite le package Instana.Tracing.Core.Rewriter.Linux.

  • Remplacez /app/ par le chemin d'accès réel à la racine de votre application.

  • N'oubliez pas de configurer les variables d'environnement décrites dans la section Configurer votre service d'exécution de cloud .

Python

Pour bénéficier de l'assistance d' Google Cloud Run s dans les applications d' Python, procédez comme suit :

  1. Installation du package PIP instana

    pip install instana
     
  2. Importer Instana Collector pour Google Cloud Run en l'important dans votre code d'application

    import instana
     
    Important: N'oubliez pas de configurer les variables d'environnement décrites dans la section Configurer votre service d'exécution de cloud .

Configuration de votre service Cloud Run

Remarques :

  • Ces instructions s'appliquent à la configuration de tous les collecteurs en cours d'exécution d' Instana sur Cloud Run.

  • Avant de suivre les étapes décrites dans cette section, assurez-vous que vos images de conteneur sont générées conformément aux instructions spécifiques à l'environnement d'exécution utilisé par votre application.

Tous les collecteurs « in-process » d' Instana sur Cloud Run doivent disposer d'un ensemble commun de valeurs de configuration pour pouvoir se connecter au backend d' Instana et s'y authentifier :

  1. Créez une révision du service Cloud Run.

    Création d'une révision de service Cloud Run

  2. Dans la page de configuration de la révision de service, accédez à Paramètres avancés > Variables.

    Editer la définition de conteneur

  3. Ajoutez les deux variables d'environnement suivantes à la spécification du conteneur :

Affichage des mesures

Pour afficher les métriques, procédez comme suit:

  1. Dans la barre latérale de l'interface utilisateur d' Instana, sélectionnez « Infrastructure ».
  2. Cliquez sur un hôte surveillé spécifique.

Vous pouvez ensuite voir un tableau de bord hôte avec toutes les métriques collectées et les processus surveillés.

Données de configuration

Les données de configuration statiques suivantes sont collectées pour chaque révision du service :

  • région,
  • nom du service,
  • nom de la configuration,
  • nom de la révision,
  • ID projet,
  • ID de projet numérique (numéro de projet),
  • heure de création de la révision,
  • libellés de révision.

Pour les services Cloud Run comportant plusieurs révisions, l'agent « GCP » recueille les données relatives à la révision la plus récente.

Métriques de performance

Métrique Description
Nombre de demandes Nombre de demandes qui atteignent la révision. Exclut les demandes qui n'atteignent pas vos instances de conteneur (par exemple, les demandes non autorisées ou lorsque le nombre maximal d'instances est atteint).
Latence des demandes au 99e centile 99e centile de la distribution de la latence des requêtes en millisecondes (pour les requêtes qui parviennent à la révision).
Latence des demandes au 95e centile 95e centile de la distribution des temps de latence des requêtes en millisecondes (pour les requêtes qui parviennent à la révision).
Latence des demandes au 50e centile 50e centile de la distribution des temps de latence des requêtes en millisecondes (pour les requêtes qui parviennent à la révision).
Temps d'instance facturable Temps facturable agrégé à partir de toutes les instances de conteneur de la révision. Pour une instance de conteneur donnée, le temps facturable est déclenché au démarrage de l'instance de conteneur ou lorsqu'au moins une demande est en cours de traitement. Le temps facturable est arrondi aux 100 millisecondes les plus proches.
Allocation de mémoire des conteneurs : 99e centile 99h percentile de l'allocation de mémoire de conteneur de la révision en gigaoctets-secondes.
Allocation de mémoire des conteneurs : 95e centile 95h percentile de l'allocation de mémoire de conteneur de la révision en gigaoctets-secondes.
Allocation de mémoire des conteneurs : 50e centile 50h percentile de l'allocation de mémoire de conteneur de la révision en gigaoctets-secondes.

La granularité est de 60 secondes pour toutes les métriques.