Nutzung von VMs und Knoten für einzelne Mandanten für Lizenzberichte überwachen


Wenn Sie Ihre eigenen Lizenzen für Betriebssysteme wie Windows Server verwenden (Bring your own License, BYOL), müssen Sie aufgrund vertraglicher Verpflichtungen möglicherweise überwachen und melden, auf wie vielen VM-Instanzen, physischen Servern und physischen CPU-Kernen Sie diese Lizenzen verwenden.

In diesem Artikel wird beschrieben, wie Sie mit dem Open-Source-Tool License Tracker die Anzahl der verwendeten VM-Instanzen, physischen Server und physischen CPU-Kerne überwachen und die Ergebnisse mit Looker Studio visualisieren können.

Das License Tracker-Tool analysiert Compute Engine-Audit-Logs, um Platzierungen für jede VM-Instanz zu ermitteln. Eine Platzierung beschreibt den Zeitraum, in dem eine VM-Instanz auf einem bestimmten physischen Server ausgeführt wird. Jedes Mal, wenn eine VM von einem physischen Server zu einem anderen migriert wird, wird das Ende der Platzierung markiert und eine andere gestartet.

Nehmen wir als Beispiel eine VM-Instanz, die gestartet und mehrere Monate später wieder beendet wird. Während der Laufzeit wird die VM irgendwann automatisch von Server 1 zu Server 2 und später zurück zu Server 1 migriert. Dieser Verlauf entspricht drei Platzierungen:

Mehrere Placements

Wenn Sie das License Tracker-Tool zum ersten Mal ausführen, wird die Compute Engine-Nutzung der letzten 90 Tage analysiert und das Ergebnis in BigQuery geschrieben. Bei nachfolgenden Ausführungen analysiert das Tool das Delta zwischen der letzten Ausführung und dem aktuellen Tag und aktualisiert das BigQuery-Dataset entsprechend.

Das License Tracker-Tool ersetzt das Feature für Nutzungsberichte von IAP Desktop.

Kosten

In dieser Anleitung werden kostenpflichtige Komponenten von Google Cloud verwendet, darunter:

Sie können mithilfe des Preisrechners eine Kostenschätzung für Ihre voraussichtliche Nutzung erstellen.

License Tracker-Tool bereitstellen

In diesem Abschnitt wird beschrieben, wie Sie Cloud Run und Cloud Scheduler so einrichten, dass das License Tracker-Tool automatisch einmal täglich ausgeführt wird.

Das folgende Diagramm veranschaulicht die in diesem Artikel beschriebene Lösung:

  • Das License Tracker-Tool wird in Cloud Run bereitgestellt und ist so konfiguriert, dass die Logs eines oder mehrerer Projekte analysiert werden.
  • Einmal täglich löst Cloud Scheduler den Cloud Run-Job aus, wodurch das License Tracker-Tool ein BigQuery-Dataset aktualisiert.
  • In einem Looker Studio-Dashboard werden die Daten aus BigQuery visualisiert und Nutzern zur Verfügung gestellt.

Architektur

Projekt erstellen

Erstellen Sie ein neues Projekt, um Cloud Run und Cloud Scheduler einzurichten:

  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

Anwendung bereitstellen

Stellen Sie jetzt das License Tracker-Tool in Cloud Run bereit:

  1. Öffnen Sie Cloud Shell in der Google Cloud Console. Klicken Sie hierzu auf die Schaltfläche Cloud Shell aktivieren Aktivieren Sie Cloud Shell..

    Weiter zur Google Cloud Console

  2. Legen Sie eine Umgebungsvariable für Ihre Projekt-ID fest:

    gcloud config set project PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch die ID Ihres Projekts.

  3. Legen Sie die Cloud Run-Region für die Bereitstellung fest:

    gcloud config set run/region REGION
    

    Ersetzen Sie REGION durch eine Region, die Cloud Run und Cloud Scheduler unterstützt.

  4. Erstellen Sie ein Dienstkonto für das Tool:

    SERVICE_ACCOUNT=$(gcloud iam service-accounts create license-tracker \
      --display-name "License Tracker" \
      --format "value(email)")
    
  5. Erlauben Sie dem Dienst, ein BigQuery-Dataset zu erstellen und darauf zuzugreifen sowie Cloud Run-Jobs im selben Projekt zu starten:

    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. Erlauben Sie Cloud Build Cloud Run-Bereitstellungen auszuführen und Cloud Scheduler-Jobs zu verwalten:

    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. Klonen Sie das GitHub-Repository und wechseln Sie zum Zweig latest:

    git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
    cd gce-license-tracker
    git checkout latest
    
  8. Senden Sie einen Build an Cloud Build:

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

    Der Build stellt die License Tracker-Anwendung in Cloud Run bereit und konfiguriert Cloud Scheduler so, dass der Job einmal täglich ausgelöst wird.

    Der Build dauert etwa drei Minuten.

Zu analysierende Projekte auswählen

Mit dem License Tracker-Tool werden alle Google Cloud-Projekte analysiert, für die die folgenden Bedingungen gelten:

  • Die Compute Engine API ist aktiviert.
  • Das Projekt gewährt Zugriff des Typs Compute-Betrachter (roles/compute.viewer) und Log-Betrachter (roles/logging.viewer) auf das Dienstkonto des Tools.

So fügen Sie ein Projekt, einen Ordner oder eine gesamte Organisation in die Analyse ein:

Projekt

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

Ersetzen Sie RESOURCE_PROJECT_ID durch die ID des Google Cloud-Projekts, das das License Tracker-Tool analysieren soll.

Ordner

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

Ersetzen Sie RESOURCE_FOLDER_ID durch die ID des Ordners, der die Projekte enthält, die Sie vom License Tracker-Tool analysieren lassen möchten.

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

Ersetzen Sie ORGANIZATION_ID durch die ID Ihrer Organisation.

Erste Analyse starten

Sie können jetzt eine erste Analyse starten:

  1. Wechseln Sie in der Google Cloud Console zu Cloud Run > Jobs.

    Zu Cloud Run-Jobs

  2. Wählen Sie den Job license-tracker aus, um die Jobdetails zu öffnen.

  3. Klicken Sie auf Ausführen.

    Je nach Anzahl und Größe der ausgewählten Projekte kann die erste Analyse mehrere Stunden dauern.

    Wenn der Job abgeschlossen ist, enthält Ihr Projekt ein BigQuery-Dataset mit dem Namen license_usage.

  4. Optional können Sie sich Logs in Cloud Logging ansehen:

    Zu Logging

Dashboard erstellen

Sie erstellen jetzt ein Looker-Studio-Dashboard durch die Erstellung einer Kopie eines Beispiel-Dashboards:

  1. Kopieren Sie die Datenquellen des Dashboards:

    1. Knoten
    2. Lizenzierte Knoten
    3. Knotenhistogramm
    4. Instanzhistogramm

    Gehen Sie für jede Datenquelle so vor:

    1. Klicken Sie oben auf den Link, um die Datenquelle zu öffnen.
    2. Klicken Sie auf Kopie dieser Datenquelle erstellen.
    3. Klicken Sie auf Datenquelle kopieren.
    4. Wenn Sie berechtigt sind, das Dashboard mit BigQuery zu verbinden, klicken Sie auf Autorisieren.
    5. Klicken Sie optional auf den Header und benennen Sie die Datenquelle um.
    6. Wählen Sie aus der Liste der Abrechnungsprojekte das Projekt aus, mit dem Sie das License Tracker-Tool bereitgestellt haben.
    7. Klicken Sie auf Erneut verbinden.
    8. Wählen Sie im Dialogfeld Verbindungsänderungen anwenden die Option Anwenden aus.
  2. Kopieren Sie das Dashboard:

    1. Öffnen Sie das Beispiel-Dashboard.

      Das Dashboard ist nicht mit einer Datenquelle verbunden und zeigt daher keine Daten an.

    2. Klicken Sie auf ... > Kopie erstellen.

    3. Wählen Sie im Dialogfeld Diesen Bericht kopieren Ihre Kopien der Datenquellen aus:

      Dialogfeld zum Kopieren

    4. Klicken Sie auf Bericht kopieren.

      Im Dashboard werden jetzt die Daten aus Ihrem BigQuery-Dataset angezeigt.

Anderen Nutzern Zugriff auf das Dashboard gewähren

Die Datenquellen des Dashboards sind so konfiguriert, dass sie für den Zugriff auf BigQuery die Anmeldedaten des Betrachters verwenden. So gewähren Sie einem anderen Nutzer Zugriff auf das Dashboard:

  1. Teilen Sie das Dashboard und gewähren Sie dem Nutzer die Berechtigung zum Ansehen des Berichts.
  2. Gewähren Sie dem Nutzer die Rollen BigQuery-Datenbetrachter (roles/bigquery.dataViewer) und BigQuery-Jobnutzer (roles/bigquery.jobUser). Sie können diese Rollen auf Dataset- oder Projektebene zuweisen.

Dashboard personalisieren

Sie können das Dashboard mithilfe des Looker Studio-Berichtseditors anpassen, um vorhandene Diagramme zu ändern oder zusätzliche Diagramme hinzuzufügen.

Alle Diagramme im Beispiel-Dashboard basieren auf der Ansicht placements im BigQuery-Dataset. Diese Ansicht enthält alle Platzierungen für alle Projekte und verwendet das folgende Schema:

Spalte Datentyp Beschreibung
instance_id INTEGER Instanz-ID
instance_name STRING Name der Instanz
instance_zone STRING Zonen-ID der Instanz
instance_project_id STRING Projekt-ID der Instanz
tenancy STRING S, bei Ausführung auf einem Knoten für einzelne Mandanten, andernfalls F
node_type STRING Typ des Knotens für einzelne Mandanten
node_project_id STRING Projekt-ID des Knotens. Dieser Wert kann sich von instance_project_id unterscheiden, wenn Knoten für einzelne Mandanten gemeinsam genutzt werden
server_id STRING Eindeutige ID des physischen Servers
operating_system_family STRING WIN, LINUX oder null, falls nicht erkannt
Lizenz STRING Vom Image verwendeter Lizenzstring
license_type STRING BYOL, SPLA oder null, falls nicht erkannt
machine_type STRING Maschinentyp der Instanz
memory_mb INTEGER RAM-Größe (in MB) der Instanz
vcpu_count INTEGER Anzahl der einer Instanz zugewiesenen vCPUs
vcpu_min_allocated INTEGER Mindestanzahl von vCPUs, die der Instanz zugewiesen sind. Dieser Wert kann von vcpu_count abweichen, wenn Sie ein CPU-Overcommit auf VMs für einzelne Mandanten durchführen.
maintenance_policy STRING Wartungsrichtlinie für die Instanz
start_date TIMESTAMP Beginn der Platzierung
end_date TIMESTAMP Ende der Platzierung

Sie können die Ansicht placement verwenden, wenn Sie vorhandene Diagramme anpassen oder Ihre eigenen Diagramme zum Dashboard hinzufügen.

Upgrade des License Tracker-Tools ausführen

In diesem Abschnitt wird beschrieben, wie Sie eine vorhandene Bereitstellung des License Tracker-Tools aktualisieren können, um eine neuere Version der Anwendung oder eine andere Konfiguration zu verwenden.

  1. Öffnen Sie Cloud Shell in der Google Cloud Console. Klicken Sie hierzu auf die Schaltfläche Cloud Shell aktivieren Aktivieren Sie Cloud Shell..

    Weiter zur Google Cloud Console

  2. Legen Sie eine Umgebungsvariable für Ihre Projekt-ID fest:

    gcloud config set project PROJECT_ID
    

    Ersetzen Sie PROJECT_ID durch die ID des Projekts, das Ihre vorhandene Bereitstellung enthält.

  3. Wählen Sie die Cloud Run-Region Ihrer vorhandenen Bereitstellung aus:

    gcloud config set run/region REGION
    
  4. Klonen Sie das GitHub-Repository und wechseln Sie zum Zweig latest:

    git clone https://github.com/GoogleCloudPlatform/gce-license-tracker.git
    cd gce-license-tracker
    git checkout latest
    
  5. Senden Sie einen Build an Cloud Build:

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

    Der Build aktualisiert Ihre vorhandene Bereitstellung und dauert etwa drei Minuten.