Surveiller l'utilisation des VM et des nœuds à locataire unique pour créer des rapports de licence


Si vous utilisez vos propres licences pour des systèmes d'exploitation tels que Windows Server, des obligations contractuelles peuvent vous obliger à surveiller et à indiquer le nombre d'instances de VM, de serveurs physiques et de cœurs de processeur physiques sur lesquels vous utilisez ces licences.

Cet article explique comment utiliser l'outil de suivi des licences Open Source pour surveiller le nombre d'instances de VM, de serveurs physiques et de cœurs de processeur physiques que vous utilisez, et comment visualiser les résultats à l'aide de Looker Studio.

L'outil de suivi des licences fonctionne en analysant les journaux d'audit de Compute Engine afin de déterminer les emplacements pour chaque instance de VM. Un emplacement décrit la période pendant laquelle une instance de VM s'exécute sur un serveur physique spécifique. Chaque fois qu'une VM est migrée d'un serveur physique à un autre, cela marque la fin d'un emplacement et le début d'un autre.

Prenons l'exemple d'une instance de VM qui est démarrée, puis arrêtée plusieurs mois plus tard. À un moment donné de son exécution, la VM est automatiquement migrée de Server 1 vers Server 2, puis de nouveau vers Server 1. Cet historique correspond à trois emplacements :

Emplacements multiples

Lorsque vous exécutez l'outil de suivi des licences pour la première fois, il analyse l'utilisation de Compute Engine au cours des 90 derniers jours et écrit son résultat dans BigQuery. Lors des exécutions suivantes, l'outil analyse le delta entre la dernière exécution et le jour en cours, puis met à jour l'ensemble de données BigQuery en conséquence.

L'outil de suivi des licences remplace la fonctionnalité de création de rapports d'utilisation fournie par IAP Desktop.

Coûts

Ce guide utilise des composants facturables de Google Cloud, dont :

Utilisez le Simulateur de coût pour générer une estimation des coûts en fonction de votre utilisation prévue.

Déployer l'outil de suivi des licences

Cette section explique comment configurer Cloud Run et Cloud Scheduler pour exécuter automatiquement l'outil de suivi des licences une fois par jour.

Le schéma suivant illustre la solution décrite dans cet article :

  • L'outil de suivi des licences est déployé sur Cloud Run et configuré pour analyser les journaux d'un ou plusieurs projets.
  • Une fois par jour, Cloud Scheduler déclenche la tâche Cloud Run, ce qui amène l'outil de suivi des licences à mettre à jour un ensemble de données BigQuery.
  • Un tableau de bord Looker Studio permet de visualiser les données BigQuery et de les mettre à la disposition des utilisateurs.

Architecture

Créer un projet

Pour configurer Cloud Run et Cloud Scheduler, créez un projet :

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.

    Enable the APIs

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  6. Make sure that billing is enabled for your Google Cloud project.

  7. Enable the BigQuery, Cloud Logging, Resource Manager, Cloud Build, Cloud Scheduler, and Cloud Run APIs.

    Enable the APIs

Déployer l'application

Vous allez maintenant déployer l'outil de suivi des licences sur Cloud Run :

  1. Dans la console Google Cloud, ouvrez Cloud Shell en cliquant sur le bouton Activer Cloud Shell Activez Cloud Shell..

    Accédez à la console Google Cloud.

  2. Définissez une variable d'environnement pour contenir votre ID de projet :

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID de votre projet.

  3. Définissez la région Cloud Run vers laquelle effectuer le déploiement :

    gcloud config set run/region REGION
    

    Remplacez REGION par une région compatible avec Cloud Run et Cloud Scheduler.

  4. Créer un compte de service pour l'outil :

    SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \
      --display-name "License Tracker" \
      --format "value(email)")
    
  5. Autorisez le service à créer un ensemble de données BigQuery et à y accéder, et à démarrer des jobs Cloud Run dans le même projet :

    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$SERVICE_ACCOUNT" \
      --role "roles/bigquery.admin"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$SERVICE_ACCOUNT" \
      --role "roles/run.invoker"
    
  6. Autorisez Cloud Build à effectuer des déploiements Cloud Run et à gérer les jobs Cloud Scheduler :

    PROJECT_NUMBER=$(gcloud projects describe $(gcloud config get-value core/project) --format='value(projectNumber)') \
    
    gcloud iam service-accounts add-iam-policy-binding $SERVICE_ACCOUNT \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
      --role "roles/iam.serviceAccountUser"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
      --role "roles/run.developer"
    
    gcloud projects add-iam-policy-binding $(gcloud config get-value core/project) \
      --member "serviceAccount:$PROJECT_NUMBER@cloudbuild.gserviceaccount.com" \
      --role "roles/cloudscheduler.admin"
    
  7. Clonez le dépôt GitHub et passez à la branche latest :

    git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
    cd gce-license-tracker
    git checkout latest
    
  8. Envoyez une compilation à Cloud Build :

    gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
    

    Le build déploie l'application de suivi des licences sur Cloud Run et configure Cloud Scheduler pour déclencher le job une fois par jour.

    La compilation prend environ trois minutes.

Sélectionner les projets à analyser

L'outil de suivi des licences analyse tous les projets Google Cloud pour lesquels toutes les conditions suivantes s'appliquent :

  • L'API Compute Engine est activée.
  • Le projet accorde l'accès au compte de service de l'outil à l'aide de Lecteur Compute (roles/compute.viewer) et de Lecteur de journaux (roles/logging.viewer).

Pour inclure un projet, un dossier ou une organisation entière dans l'analyse, procédez comme suit :

Projet

SCOPE_ID=RESOURCE_PROJECT_ID
SCOPE_TYPE=projects

gcloud projects add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/compute.viewer" \
  --condition None
gcloud projects add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/logging.viewer" \
  --condition None

Remplacez RESOURCE_PROJECT_ID par l'ID du projet Google Cloud que vous souhaitez faire analyser par l'outil de suivi des licences.

Dossier

SCOPE_ID=RESOURCE_FOLDER_ID
SCOPE_TYPE=folders

gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/compute.viewer" \
  --condition None
gcloud resource-manager folders add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/logging.viewer" \
  --condition None

Remplacez RESOURCE_FOLDER_ID par l'ID du dossier contenant les projets que vous souhaitez faire analyser par l'outil de suivi des licences.

Organisation

SCOPE_ID=ORGANIZATION_ID
SCOPE_TYPE=organizations

gcloud organizations add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/compute.viewer" \
  --condition None
gcloud organizations add-iam-policy-binding $SCOPE_ID \
  --member "serviceAccount:$SERVICE_ACCOUNT" \
  --role "roles/logging.viewer" \
  --condition None

Remplacez ORGANIZATION_ID par l'ID de votre organisation.

Démarrer l'analyse initiale

Vous pouvez maintenant commencer une analyse initiale :

  1. Dans la console Google Cloud, accédez à Cloud Run > Jobs.

    Accéder aux tâches Cloud Run

  2. Sélectionnez la tâche licenses-tracker pour ouvrir les détails de la tâche.

  3. Cliquez sur Exécuter.

    Selon le nombre et la taille des projets que vous avez sélectionnés, l'analyse initiale peut prendre plusieurs heures.

    Une fois le job terminé, votre projet contient un ensemble de données BigQuery nommé license_usage.

  4. Vous pouvez éventuellement afficher les journaux dans Cloud Logging :

    Accéder à Stackdriver Logging

Create a dashboard

Vous allez maintenant créer un tableau de bord Looker Studio en créant une copie d'un exemple de tableau de bord :

  1. Copiez les sources de données du tableau de bord :

    1. Nœuds
    2. Nœuds sous licence
    3. Histogramme des nœuds
    4. Histogramme des instances

    Pour chacune des sources de données, procédez comme suit :

    1. Cliquez sur le lien ci-dessus pour ouvrir la source de données.
    2. Cliquez sur Créer une copie de cette source de données.
    3. Cliquez sur Copier la source de données.
    4. Si vous êtes invité à connecter le tableau de bord à BigQuery, cliquez sur Autoriser.
    5. Vous pouvez également cliquer sur l'en-tête et renommer la source de données.
    6. Dans la liste des projets de facturation, sélectionnez celui que vous avez utilisé pour déployer l'outil de suivi des licences.
    7. Cliquez sur Reconnecter.
    8. Dans la boîte de dialogue Appliquer les modifications de connexion, sélectionnez Appliquer.
  2. Copiez le tableau de bord :

    1. Ouvrez l'exemple de tableau de bord.

      Le tableau de bord n'est pas connecté à une source de données. Il n'affiche donc aucune donnée.

    2. Cliquez sur ... > Créer une copie.

    3. Dans la boîte de dialogue Copier ce rapport, sélectionnez vos copies des sources de données :

      Copier la boîte de dialogue

    4. Cliquez sur Copier le rapport.

      Le tableau de bord affiche désormais les données de votre ensemble de données BigQuery.

Autoriser d'autres utilisateurs à accéder au tableau de bord

Les sources de données du tableau de bord sont configurées pour utiliser les identifiants du lecteur pour accéder à BigQuery. Pour autoriser un autre utilisateur à accéder au tableau de bord, vous devez :

  1. Partager le tableau de bord et accorder à l'utilisateur l'autorisation d'afficher le rapport.
  2. Attribuez à l'utilisateur les rôles Lecteur de données BigQuery (roles/bigquery.dataViewer) et Utilisateur de job BigQuery (roles/bigquery.jobUser). Vous pouvez attribuer ces rôles au niveau de l'ensemble de données ou du projet.

Personnaliser le tableau de bord

Vous pouvez personnaliser le tableau de bord en utilisant l'éditeur de rapports Looker Studio pour modifier les graphiques existants ou en ajouter d'autres.

Tous les graphiques de l'exemple de tableau de bord sont basés sur la vue placements de l'ensemble de données BigQuery. Cette vue regroupe tous les emplacements pour l'ensemble des projets, et utilise le schéma suivant :

Colonne Type de données Description
instance_id NOMBRE ENTIER ID d'instance
instance_name STRING Nom de l'instance
instance_zone STRING ID de zone de l'instance
instance_project_id STRING ID du projet de l'instance
tenancy STRING S en cas d'exécution sur un nœud à locataire unique, F dans le cas contraire
node_type STRING Type de nœud à locataire unique
node_project_id STRING ID de projet du nœud ; cette valeur peut être différente de instance_project_id en cas de nœuds à locataire unique partagés
server_id STRING ID unique du serveur physique
operating_system_family STRING WIN, LINUX ou null si non reconnu
licence STRING Chaîne de licence utilisée par l'image
license_type STRING BYOL, SPLA ou null si non reconnu
machine_type STRING Type de machine de l'instance
memory_mb NOMBRE ENTIER Quantité de RAM (en Mo) allouée à l'instance
vcpu_count NOMBRE ENTIER Nombre de processeurs virtuels (vCPU) alloués à l'instance
vcpu_min_allocated NOMBRE ENTIER Nombre minimal de vCPU alloués à l'instance ; cette valeur peut être différente de vcpu_count lorsque vous sursollicitez des processeurs sur des VM à locataire unique
maintenance_policy STRING Stratégie de maintenance de l'instance
start_date TIMESTAMP Début de l'emplacement
end_date TIMESTAMP Fin de l'emplacement

Vous pouvez utiliser la vue placement lorsque vous personnalisez des graphiques existants ou lorsque vous ajoutez vos propres graphiques au tableau de bord.

Mettre à jour l'outil de suivi des licences

Cette section explique comment mettre à jour un déploiement existant de l'outil de suivi des licences afin d'utiliser une version plus récente de l'application ou une autre configuration.

  1. Dans la console Google Cloud, ouvrez Cloud Shell en cliquant sur le bouton Activer Cloud Shell Activez Cloud Shell..

    Accédez à la console Google Cloud.

  2. Définissez une variable d'environnement pour contenir votre ID de projet :

    gcloud config set project PROJECT_ID
    

    Remplacez PROJECT_ID par l'ID du projet contenant votre déploiement existant.

  3. Sélectionnez la région Cloud Run de votre déploiement existant :

    gcloud config set run/region REGION
    
  4. Clonez le dépôt GitHub et passez à la branche latest :

    git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
    cd gce-license-tracker
    git checkout latest
    
  5. Envoyez une compilation à Cloud Build :

    gcloud builds submit . --substitutions=_REGION=$(gcloud config get-value run/region)
    

    La compilation met à jour votre déploiement existant, ce qui prend environ trois minutes.