Der Arbeitslastmanager für Microsoft SQL Server verwendet den Agenten für Compute-Arbeitslasten von Google Cloud, um Metadaten zur Bewertung Ihrer SQL Server-Konfigurationen zu erkennen und zu erfassen.
In diesem Dokument wird beschrieben, wie Sie den Agent for Compute Workloads auf Compute Engine-Instanzen installieren, konfigurieren und prüfen, auf denen SQL Server ausgeführt wird.
Voraussetzungen für die Installation des Agents
Bevor Sie Agent for Compute Workloads installieren, müssen Sie die folgenden Voraussetzungen erfüllen und eine SQL Server-Arbeitslastbewertung erstellen.
IAM-Rollen dem Dienstkonto zuweisen
Der Agent für Compute-Arbeitslasten vonGoogle Cloudverwendet das Dienstkonto für Identity and Access Management (IAM), das mit der VM verknüpft ist, für die Authentifizierung bei Google Cloud und für die Berechtigung zum Zugriff auf Google Cloud -Ressourcen. Verwenden Sie für die Erfassung von Workload Manager-Validierungsmesswerten ein neues Dienstkonto mit den folgenden IAM-Rollen:
- Compute-Betrachter (
roles/compute.viewer
) - Zugriffsperson für Secret Manager-Secret (
roles/secretmanager.secretAccessor
) - Workload Manager Admin (
roles/workloadmanager.admin
) - Logs Writer (
roles/logging.logWriter
), wenn Sie die Cloud Logging-Funktion verwenden
So fügen Sie Ihrem Dienstkonto eine erforderliche Rolle hinzu:
Öffnen Sie in der Google Cloud Console die Seite IAM.
Wählen Sie Ihr Google Cloud-Projekt aus.
Bestimmen Sie das Dienstkonto, dem Sie eine Rolle hinzufügen möchten.
- Wenn sich das Dienstkonto nicht schon in der Mitgliederliste befindet, sind ihm keine Rollen zugewiesen. Klicken Sie auf Hinzufügen und geben Sie die E-Mail-Adresse des Dienstkontos ein.
- Wenn sich das Dienstkonto in der Liste der Hauptkonten befindet, sind ihm bereits Rollen zugewiesen. Klicken Sie für das Dienstkonto, das Sie bearbeiten möchten, auf die Schaltfläche Bearbeiten .
Wählen Sie die erforderliche Rolle in der Liste der verfügbaren Rollen aus:
- Compute Engine > Compute-Betrachter
- Secret Manager > Zugriffsperson für Secret Manager-Secret
Klicken Sie auf Hinzufügen oder Speichern, um dem Dienstkonto die Rollen zuzuweisen.
Zugriff auf Google Cloud APIs aktivieren
Compute Engine empfiehlt, Ihre VM-Instanzen so zu konfigurieren, dass sie allen Cloud APIs alle Zugriffsbereiche gewähren und dass Sie nur die IAM-Berechtigungen des Instanzdienstkontos verwenden, um den Zugriff auf Google Cloud Ressourcen zu steuern. Weitere Informationen finden Sie unter VM mit vom Nutzer verwalteten Dienstkonto erstellen.
Wenn Sie den Zugriff auf die Cloud APIs beschränken, benötigt der Agent für Compute-Arbeitslasten die folgenden Mindestbereiche für den API-Zugriff auf der Host-VM-Instanz:
https://www.googleapis.com/auth/cloud-platform
Weitere Informationen finden Sie unter Best Practices für Bereiche.
Wenn Sie SQL Server-Anwendungen auf einer VM-Instanz ausführen, die keine externe IP-Adresse hat, müssen Sie den privaten Google-Zugriff im Subnetz der VM aktivieren, damit der Agent für Compute-Arbeitslasten auf Google APIs und Dienste zugreifen kann. Informationen zum Aktivieren des privaten Google-Zugriffs in einem Subnetz finden Sie unter Privaten Google-Zugriff konfigurieren.
Erforderliche Berechtigungen für SQL Server
Verwenden Sie das folgende Script, um dem im Agenten konfigurierten Nutzerkonto die erforderlichen Berechtigungen zuzuweisen.
USE [master] GO
GRANT VIEW SERVER STATE TO [user_name] GRANT VIEW ANY DEFINITION TO [user_name]
-- Adds db_datareader role to the user EXEC sp_MSForEachDB ' USE ? IF NOT EXISTS(SELECT * FROM sys.database_principals WHERE name = ''user_name'') BEGIN CREATE USER [user_name] FOR LOGIN [user_name] END EXEC sp_addrolemember ''db_datareader'', ''user_name'' '
Agent installieren
Führen Sie die folgenden Schritte aus, um die neueste Version des Agents für Compute-Arbeitslasten zu installieren:
Unter Windows installieren Sie den Agent für Compute-Arbeitslasten mit dem GooGet-Befehl zur Paketverwaltung googet
. Der Befehl zur Paketverwaltung führt die folgenden Aufgaben aus:
- Die neueste Version des Agents für Computing-Arbeitslasten wird heruntergeladen.
- Es erstellt einen Windows-Dienst mit dem Namen
google-cloud-workload-agent
und eine geplante Aufgabe, die jede Minute ausgeführt wird, um zu prüfen, ob der Dienst noch ausgeführt wird, und ihn bei Bedarf neu zu starten.
So installieren Sie den Agent auf einer VM:
- Stellen Sie über RDP eine Verbindung zur Windows-VM-Instanz her.
- Führen Sie als Administrator die folgenden Befehle in PowerShell aus:
googet addrepo google-cloud-workload-agent https://packages.cloud.google.com/yuck/repos/google-cloud-workload-agent-windows-x86_64 googet install google-cloud-workload-agent
- Prüfen Sie die Konfigurationsdatei unter
%ProgramFiles%\Google\google-cloud-workload-agent\conf
und aktualisieren Sie sie anhand der Informationen unter Konfigurationseigenschaften. - Starten Sie den Agent neu, damit diese Änderung wirksam wird.
Unter Linux installieren Sie den Agent für Compute-Arbeitslasten mit den Standardbefehlen zur Betriebssystempaketverwaltung:
- Unter RHEL den Befehl
yum
verwenden - Unter SLES den Befehl
zypper
verwenden - Unter Debian den Befehl
apt
verwenden
Der Befehl zur Paketverwaltung führt die folgenden Aufgaben aus:
- Die neueste Version des Agents für Computing-Arbeitslasten wird heruntergeladen.
- Erstellt den Agent als Linux-
systemd
-Dienst mit dem Namengoogle-cloud-workload-agent
. - Aktiviert und startet den Dienst
google-cloud-workload-agent
.
So installieren Sie den Agent auf einer VM:
- Stellen Sie eine SSH-Verbindung zu Ihrer Host-VM her.
- Installieren Sie den Agent im Terminal mit dem Befehl, der für Ihr Betriebssystem spezifisch ist:
sudo tee /etc/yum.repos.d/google-cloud-workload-agent.repo << EOM [google-cloud-workload-agent] name=Google Cloud Agent for Compute Workloads baseurl=https://packages.cloud.google.com/yum/repos/google-cloud-workload-agent-\$basearch enabled=1 gpgcheck=0 repo_gpgcheck=1 gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOM sudo yum install google-cloud-workload-agent
sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-workload-agent-\$basearch google-cloud-workload-agent sudo zypper install google-cloud-workload-agent
echo 'deb https://packages.cloud.google.com/apt google-cloud-workload-agent-x86-64-apt main' | sudo tee -a /etc/apt/sources.list.d/google-cloud-workload-agent.list \ sudo apt-get update \ sudo apt-get install google-cloud-workload-agent
- Prüfen Sie die Konfigurationsdatei unter
\etc\google-cloud-workload-agent
und aktualisieren Sie sie anhand der Informationen unter Konfigurationseigenschaften. - Starten Sie den Agent neu, damit diese Änderung wirksam wird.
Konfigurationsattribute
In der folgenden Tabelle werden die Attribute der Konfigurationsdatei des Agents beschrieben.
Eigenschaften | |
---|---|
log_level |
INFO . Ändern Sie die Logging-Ebene nur, wenn Sie von Cloud Customer Care angewiesen werden.
|
log_to_cloud |
Geben Sie |
common_discovery.collection_frequency |
Erfassungshäufigkeit für den gemeinsamen Discovery-Dienst in Sekunden. |
agent_properties.log_usage_metrics |
Wenn Sie das Logging von Agent-Zustandsmesswerten aktivieren möchten, legen Sie den Wert auf |
sqlserver_configuration.enabled |
Wenn Sie die Erfassung von SQL Server-Messwerten im Agenten aktivieren möchten, legen Sie den Wert auf |
sqlserver_configuration.collection_configuration.collect_guest_os_metrics |
Wenn Sie die Erfassung von Betriebssystemmesswerten aktivieren möchten, legen Sie den Wert auf |
sqlserver_configuration.collection_configuration.collect_sql_metrics |
Geben Sie |
sqlserver_configuration.collection_configuration.collection_frequency |
Häufigkeit der Erfassung von Messwerten für den Agenten für Computing-Arbeitslasten in Sekunden.
Standardwert ist |
sqlserver_configuration.credential_configurations[].connection_parameters[].host |
Der Hostname des SQL-Servers. |
sqlserver_configuration.credential_configurations[].connection_parameters[].username |
Geben Sie das Nutzerkonto an, das zum Abfragen der SQL Server-Instanz verwendet wird. Prüfen Sie zum Konfigurieren von Kontoberechtigungen die im Berechtigungsskript erforderlichen Berechtigungen und erteilen Sie sie gemäß Ihren internen Richtlinien. Hinweis:Wenn Sie die Windows-Authentifizierung verwenden, geben Sie den Nutzernamen im folgenden Format an:
|
sqlserver_configuration.credential_configurations[].connection_parameters[].secret.project_id |
Die ID des Projekts, in dem das Geheimnis gespeichert ist. Legen Sie einen leeren String („""“) fest, wenn sich das Secret und die Host-VM-Instanz im selben Google Cloud-Projekt befinden. |
sqlserver_configuration.credential_configurations[].connection_parameters[].secret.secret_name |
Um das Passwort für das Datenbank-Nutzerkonto, das der Agent zum Abfragen von SQL Server verwendet, sicher bereitzustellen, geben Sie den Namen des Secrets in Secret Manager an, das die Sicherheitsanmeldedaten für das Datenbanknutzerkonto enthält. Hinweis:Das Secret und die Host-VM-Instanz müssen im selben Google Cloud-Projekt vorhanden sein. |
sqlserver_configuration.credential_configurations[].connection_parameters[].port |
Geben Sie den Port an, über den die SQL Server-Instanz Abfragen akzeptiert. |
sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.host |
IP-Adresse oder FQDN der Remote-Windows-VM |
sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.username |
Geben Sie das Nutzerkonto an, das für die Remote-Verbindung zur Windows-VM verwendet wird. |
sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.secret.secret_name |
Um das Passwort für das Windows-Nutzerkonto, das der Agent zum Herstellen einer Remote-Verbindung zur VM verwendet, sicher bereitzustellen, geben Sie den Namen des Secrets im Secret Manager an, das die Sicherheitsanmeldedaten für das Datenbanknutzerkonto enthält. Hinweis:Das Secret und die Host-VM-Instanz müssen im selben Google Cloud-Projekt vorhanden sein. |
sqlserver_configuration.credential_configurations[].local_collection |
Geben Sie |
sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.host |
IP-Adresse oder FQDN der Remote-Linux-VM. |
sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.username |
Geben Sie das Nutzerkonto an, mit dem eine Remote-Verbindung zur Linux-VM hergestellt wird. |
sqlserver_configuration.credential_configurations[].remote_linux.connection_parameter.port |
Geben Sie die SSH-Portnummer für die Remote-Linux-VM an. |
sqlserver_configuration.credential_configurations[].remote_linux.linux_ssh_private_key_path |
Geben Sie den Pfad zur privaten SSH-Schlüsseldatei an. |
sqlserver_configuration.credential_configurations[].vm_properties.instance_name |
Geben Sie den Namen Ihrer Compute Engine-VM-Instanz an. Hinweis:Optional für lokale Sammlungen. |
sqlserver_configuration.credential_configurations[].vm_properties.instance_id |
Geben Sie die ID Ihrer Compute Engine-VM-Instanz an. Hinweis:Optional für lokale Sammlungen. |
sqlserver_configuration.collection_timeout |
Das Zeitlimit für die Erfassung von Messwerten in Sekunden. Standardwert ist „10 Sekunden“. |
sqlserver_configuration.max_retries |
Die maximale Anzahl von Wiederholungsversuchen bei einer fehlgeschlagenen Datenerhebung. Der Standardwert ist „3“. |
sqlserver_configuration.retry_frequency |
Geben Sie an, wie oft der Agent einen erneuten Versuch starten soll, wenn eine Datenerhebung fehlschlägt. Der Standardwert ist „3600 s“. |
sqlserver_configuration.remote_collection |
Geben Sie |
Das folgende Beispiel zeigt eine Konfigurationsdatei für den Agenten für Compute-Arbeitslasten:
{ "log_level": "INFO", "common_discovery": { "collection_frequency": "10800s" }, "sqlserver_configuration": { "enabled": true, "collection_configuration": { "collect_guest_os_metrics": true, "collect_sql_metrics": true, "collection_frequency": "60s" }, "credential_configurations": [ { "connection_parameters": [ { "host": ".", "username": "db_user_name", "secret": { "project_id": "", "secret_name": "idb_pwd_secret_name" }, "port": 1433 } ], "local_collection": true } ], "collection_timeout": "60s", "max_retries": 5, "retry_frequency": "3600s" } }
{ "log_level": "INFO", "common_discovery": { "collection_frequency": "10800s" }, "sqlserver_configuration": { "enabled": true, "collection_configuration": { "collect_guest_os_metrics": true, "collect_sql_metrics": true, "collection_frequency": "60s" }, "credential_configurations": [ { "connection_parameters": [ { "host": "sql_server_instance", "username": "db_user_name", "secret": { "project_id": "", "secret_name": "db_pwd_secret_name" }, "port": 1433 } ], "remote_win": { "connection_parameters": { "host": "sql_server_instance", "username": "user_name", "secret": { "project_id": "", "secret_name": "pwd_secret_name" } } }, "vm_properties": { "instance_name": "db01", "instance_id": "9999999999999999999" } }, { "connection_parameters": [ { "host": "sql_server_instance", "username": "db_user_name", "secret": { "project_id": "", "secret_name": "db_pwd_secret_name" }, "port": 1433 } ], "remote_linux": { "connection_parameters": { "host": "sql_server_instance", "username": "user_name", "secret": { "project_id": "", "secret_name": "pwd_secret_name" }, "port": 22 }, "linux_ssh_private_key_path": "path of the private key" }, "vm_properties": { "instance_name": "db02", "instance_id": "9999999999999999999" } } ], "collection_timeout": "10s", "max_retries": 3, "retry_frequency": "3600s", "remote_collection": true } }
Agent-Installation überprüfen
- Stellen Sie über RDP eine Verbindung zur Windows-VM-Instanz her.
Führen Sie den folgenden Befehl in PowerShell als Administrator aus:
$(Get-Service -Name 'google-cloud-workload-agent' -ErrorAction Ignore).Status
Wenn der Agent ausgeführt wird, wird der Status
Running
angezeigt.
- Stellen Sie eine SSH-Verbindung zu Ihrer Host-VM her.
Führen Sie dazu diesen Befehl aus:
systemctl status google-cloud-workload-agent
Wenn der Agent ordnungsgemäß funktioniert, enthält die Ausgabe
active (running)
. Beispiel:google-cloud-workload-agent.service - Google Cloud Agent for Compute Workloads Loaded: loaded (/usr/lib/systemd/system/google-cloud-workload-agent.service; enabled; vendor preset: disabled) Active: active (running) since Sun 2023-12-31 18:59:12 UTC; 10s ago Main PID: 14412 (google_cloud_sq) Tasks: 7 Memory: 12.9M (max: 1.0G limit: 1.0G available: 1011.0M) CGroup: /system.slice/google-cloud-workload-agent.service └─ 14412 /usr/bin/google_cloud_sql_server_agent --action=run
Version des Agents prüfen
Führen Sie folgende Schritte aus, um die Version Ihres Agents zu prüfen:
- Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
- Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
googet installed google-cloud-workload-agent
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
yum info google-cloud-workload-agent
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
zypper info google-cloud-workload-agent
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
dpkg -s google-cloud-workload-agent | grep version
Agent neu starten
Wenn der Agent für Compute-Arbeitslasten nicht mehr funktioniert oder Sie seine Konfiguration aktualisieren, starten Sie den Agent neu.
Wählen Sie Ihr Betriebssystem aus und folgen Sie dann den Schritten:
- Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
- Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
Restart-Service -Name 'google-cloud-workload-agent' -Force
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo systemctl restart google-cloud-workload-agent
Agent aktualisieren
Um sicherzustellen, dass Sie die neueste Version des Agents verwenden, müssen Sie regelmäßig nach Updates suchen und den Agent aktualisieren.
Auf Aktualisierungen überprüfen
Wählen Sie Ihr Betriebssystem aus und folgen Sie dann den Schritten:
- Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
- Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
googet latest google-cloud-workload-agent
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo yum check-update google-cloud-workload-agent
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo zypper list-updates -r google-cloud-workload-agent
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo apt list google-cloud-workload-agent
Update installieren
Wählen Sie Ihr Betriebssystem aus und folgen Sie dann den Schritten:
- Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
- Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
googet install google-cloud-workload-agent
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo yum --nogpgcheck update google-cloud-workload-agent
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo zypper --no-gpg-checks update google-cloud-workload-agent
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo apt-get install google-cloud-workload-agent
Logs des Agents in Cloud Logging ansehen
Standardmäßig werden die Logs für den Agent für Compute-Arbeitslasten von Ihren VM-Instanzen zu Cloud Logging umgeleitet.
So rufen Sie die Logs des Agents in Logging auf:
Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.
Rufen Sie den Bereich Abfrage auf.
Wählen Sie im Drop-down-Menü Ressourcen die Option Global aus und klicken Sie dann auf Übernehmen.
Geben Sie im Abfrageeditor
google-cloud-workload-agent
ein.Klicken Sie auf Abfrage ausführen.
Sie sollten die Logs sehen, die von den Agent-Instanzen generiert wurden, die auf allen VM-Instanzen ausgeführt werden. Um die Logs von einer bestimmten Maschine zu filtern, verwenden Sie die in der Benutzeroberfläche verfügbaren Filter.
Logs des Agents in Cloud Logging deaktivieren
So deaktivieren Sie die Standardweiterleitung der Agent-Logs an Cloud Logging:
Stellen Sie eine RDP- oder SSH-Verbindung zu Ihrer Host-VM her.
Öffnen Sie die Konfigurationsdatei des Agents.
%ProgramFiles%\Google\google-cloud-workload-agent\conf\configuration.json
/etc/google-cloud-workload-agent/configuration.json
Aktualisieren Sie für das Attribut
log_to_cloud
den Wert auffalse
.Speichern Sie die Konfigurationsdatei.
Starten Sie den Agent neu, damit diese Änderung wirksam wird.
Fehlerbehebung
In den folgenden Abschnitten finden Sie Informationen zu häufigen Problemen im Zusammenhang mit der Verwendung von Agent for Compute Workloads, deren Ursachen und deren Behebung.
Unzureichende Authentifizierungsbereiche
Problem: Wenn Sie die Zugriffsbereiche auf Ihrer Host-VM-Instanz einschränken, enthalten die Agent for Compute Workloads-Logs möglicherweise einen Fehler, der unzureichende IAM-Berechtigungen angibt.
googleapi: Error 403: Request had insufficient authentication scopes. Details: [ { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "domain": "googleapis.com", "metadata": { "method": "google.cloud.workloadmanager.datawarehouse.v1.DataCollectService.WriteInsight", "service": "workloadmanager.googleapis.com" }, "reason": "ACCESS_TOKEN_SCOPE_INSUFFICIENT" } ]More details: Reason: insufficientPermissions, Message: Insufficient Permission
Ursache:Der Agent für Compute-Arbeitslasten benötigt minimale Cloud API-Zugriffsbereiche auf der Host-VM-Instanz.
Lösung:Aktivieren Sie die erforderlichen Zugriffsbereiche, um dieses Problem zu beheben.
Konfigurationsdatei konnte nicht geladen werden
Problem:Wenn die Konfigurationsdatei ungültige Werte enthält, wird der folgende Fehler angezeigt.
"Failed to load configuration","pid":3524,"error":"proto: (line 19:42): unknown field "{field_name}"
Lösung:Aktualisieren Sie die Konfigurationsdatei anhand der Informationen unter Konfigurationseigenschaften.
Datenerhebung konnte nicht initialisiert werden
Problem:Wenn die Konfigurationsdatei nach der Installation des Agents nicht aktualisiert wird, wird der folgende Fehler angezeigt:
"Failed to initialize guest collection","pid":2112,"error":"invalid value for "user_name" "secret_name"
Lösung: Um dieses Problem zu beheben, initialisieren Sie die Anmeldedatenkonfiguration mithilfe der Konfigurationseigenschaften.