Der Arbeitslastmanager für Microsoft SQL Server verwendet den Agenten für SQL Server von Google Cloud, um Metadaten zur Bewertung Ihrer SQL Server-Konfigurationen zu erkennen und zu erfassen. Der Agent für SQL Server ist auf allen VMs erforderlich, auf denen SQL Server ausgeführt wird.
In diesem Dokument wird beschrieben, wie Sie den Agenten für SQL Server von Google Cloudinstallieren, konfigurieren und prüfen.
Voraussetzungen für die Installation des Agents
Bevor Sie Agent for SQL Server installieren, müssen Sie die folgenden Voraussetzungen erfüllen und eine SQL Server-Arbeitslastbewertung erstellen.
IAM-Rollen dem Dienstkonto zuweisen
Der Agent für SQL Server vonGoogle Cloudverwendet das Dienstkonto von 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 for SQL Server 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 SQL Server auf Google APIs und Dienste zugreifen kann. Informationen zum Aktivieren des privater Google-Zugriff 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
Windows
Unter Windows installieren Sie den Agent für SQL Server mit dem GooGet-Befehl zur Paketverwaltung googet
. Der Befehl zur Paketverwaltung führt die folgenden Aufgaben aus:
- Die neueste Version von Agent for SQL Server wird heruntergeladen.
- Es erstellt einen Windows-Dienst mit dem Namen
google-cloud-sql-server-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-sql-server-agent-windows https://packages.cloud.google.com/yuck/repos/google-cloud-sql-server-agent-windows googet install google-cloud-sql-server-agent
- Prüfen Sie die Konfigurationsdatei unter
%ProgramFiles%\Google\google-cloud-sql-server-agent
und aktualisieren Sie den Abschnittcredential_configuration
anhand der Details unter Konfigurationsattribute. - Starten Sie den Agent neu, damit diese Änderung wirksam wird.
Linux
Unter Linux installieren Sie Agent for SQL Server mit den Standardbefehlen der Betriebssystempaketverwaltung:
- Unter RHEL den Befehl
yum
verwenden - Unter SLES den Befehl
zypper
verwenden
Der Befehl zur Paketverwaltung führt die folgenden Aufgaben aus:
- Die neueste Version von Agent for SQL Server wird heruntergeladen.
- Erstellt den Agent als Linux-
systemd
-Dienst mit dem Namengoogle-cloud-sql-server-agent
. - Aktiviert und startet den Dienst
google-cloud-sql-server-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:
RHEL
sudo tee /etc/yum.repos.d/google-cloud-sql-server-agent.repo << EOM [google-cloud-sql-server-agent] name=Google Cloud Agent for SQL Server baseurl=https://packages.cloud.google.com/yum/repos/google-cloud-sql-server-agent-el$(cat /etc/redhat-release | cut -d . -f 1 | tr -d -c 0-9) 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-sql-server-agent
SLES 15
sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-sql-server-agent-sles15 google-cloud-sql-server-agent sudo zypper install google-cloud-sql-server-agent
SLES 12
sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-sql-server-agent-sles12 google-cloud-sql-server-agent sudo zypper install google-cloud-sql-server-agent
- Prüfen Sie die Konfigurationsdatei unter
\etc\google-cloud-sql-server-agent
und aktualisieren Sie den Abschnittcredential_configuration
anhand der Details unter Konfigurationsattribute. - Starten Sie den Agent neu, damit diese Änderung wirksam wird.
Konfigurationsattribute
In der folgenden Tabelle werden die Attribute der Konfigurationsdatei des Agents erläutert.
Attribute | |
---|---|
collection_configuration.collect_guest_os_metrics |
Wenn Sie die Erfassung von Betriebssystemmesswerten aktivieren möchten, legen Sie den Wert auf |
collection_configuration.guest_os_metrics_collection_interval_in_seconds |
Häufigkeit der Erfassung von Arbeitslastmanager-Betriebssystemmesswerten in Sekunden.
Die Standardeinstellung beträgt |
collection_configuration.collect_sql_metrics |
Geben Sie |
collection_configuration.collect_sql_metrics_collection_interval_in_seconds |
Häufigkeit der Erfassung von SQL Server-Messwerten des Arbeitslastmanagers in Sekunden.
Die Standardeinstellung beträgt |
log_level |
INFO . Ändern Sie die Logging-Ebene nur, wenn Sie von Cloud Customer Care angewiesen werden.
|
log_to_cloud |
Geben Sie |
disable_log_usage |
Geben Sie |
remote_collection |
Geben Sie |
credential_configuration[].sql_configurations[].user_name |
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:
|
credential_configuration[].sql_configurations[].host |
Der Hostname des SQL-Servers. |
credential_configuration[].sql_configurations[].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. |
credential_configuration[].sql_configurations[].port_number |
Geben Sie den Port an, über den die SQL Server-Instanz Abfragen akzeptiert. |
credential_configuration[].remote_win.server_name |
IP-Adresse oder FQDN der Remote-VM |
credential_configuration[].remote_win.guest_user_name |
Geben Sie das Nutzerkonto an, das für die Remote-Verbindung zur VM verwendet wird. |
credential_configuration[].remote_win.guest_secret_name |
Um das Passwort für das 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 Nutzerkonto enthält. Hinweis:Das Secret und die Host-VM-Instanz müssen im selben Google Cloud-Projekt vorhanden sein. |
credential_configuration[].remote_linux.server_name |
IP-Adresse oder FQDN der Remote-VM |
credential_configuration[].remote_linux.guest_user_name |
Geben Sie das Nutzerkonto an, das für die Remote-Verbindung zur VM verwendet wird. |
credential_configuration[].remote_linux.guest_port_number |
Geben Sie die SSH-Portnummer für die Remote-VM an. |
credential_configuration[].remote_linux.linux_ssh_private_key_path |
Pfad zur privaten SSH-Schlüsseldatei. |
credential_configuration[].instance_name |
Geben Sie den Namen Ihrer Compute Engine-VM-Instanz an. Hinweis:Optional für lokale Sammlungen. |
credential_configuration[].instance_id |
Geben Sie die ID Ihrer Compute Engine-VM-Instanz an. Hinweis:Optional für lokale Sammlungen. |
Das folgende Beispiel zeigt eine Konfigurationsdatei für Agent for SQL Server:
Lokale Erhebung
{ "collection_configuration": { "collect_guest_os_metrics":true, "guest_os_metrics_collection_interval_in_seconds":3600, "collect_sql_metrics":true, "sql_metrics_collection_interval_in_seconds":3600 }, "credential_configuration": [ { "sql_configurations": [ { "host":".", "user_name":"db_user_name", "secret_name":"db_pwd_secret_name", "port_number":1433 } ], } ], "log_level":"INFO", "log_to_cloud":true, "collection_timeout_seconds":10, "max_retries":5, "retry_interval_in_seconds":3600 }
Remote Collection
{ "collection_configuration": { "collect_guest_os_metrics":true, "guest_os_metrics_collection_interval_in_seconds":3600, "collect_sql_metrics":true, "sql_metrics_collection_interval_in_seconds":3600 }, "credential_configuration": [ { "sql_configurations": [ { "host":"sql_server_instance", "user_name":"db_user_name", "secret_name":"db_pwd_secret_name", "port_number":1433 } ], "remote_win":{ "server_name":"sql_server_instance", "guest_user_name":"user_name", "guest_secret_name":"pwd_secret_name" }, "instance_name":"db01", "instance_id":"9999999999999999999" } ], "remote_collection":true, "log_level":"INFO", "log_to_cloud":true, "collection_timeout_seconds":10, "max_retries":5, "retry_interval_in_seconds":3600 }
Agent-Installation überprüfen
Windows
- 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-sql-server-agent' -ErrorAction Ignore).Status
Wenn der Agent ausgeführt wird, wird der Status
Running
angezeigt.
Linux
- Stellen Sie eine SSH-Verbindung zu Ihrer Host-VM her.
Führen Sie dazu diesen Befehl aus:
systemctl status google-cloud-sql-server-agent
Wenn der Agent ordnungsgemäß funktioniert, enthält die Ausgabe
active (running)
. Beispiel:google-cloud-sql-server-agent.service - Google Cloud Agent for SQL Server Loaded: loaded (/usr/lib/systemd/system/google-cloud-sql-server-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-sql-server-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:
Windows
- Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
- Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
googet installed google-cloud-sql-server-agent
RHEL
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
yum info google-cloud-sql-server-agent
SUSE
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
zypper info google-cloud-sql-server-agent
Agent neu starten
Wenn der Agent für SQL Server nicht mehr funktioniert oder Sie seine Konfiguration aktualisieren, starten Sie den Agenten neu.
Wählen Sie Ihr Betriebssystem aus und folgen Sie dann den Schritten:
Windows
- Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
- Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
Restart-Service -Name 'google-cloud-sql-server-agent' -Force
Linux
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo systemctl restart google-cloud-sql-server-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:
Windows
- Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
- Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
googet latest google-cloud-sql-server-agent
RHEL
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo yum check-update google-cloud-sql-server-agent
SLES
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo zypper list-updates -r google-cloud-sql-server-agent
Update installieren
Wählen Sie Ihr Betriebssystem aus und folgen Sie dann den Schritten:
Windows
- Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
- Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
googet install google-cloud-sql-server-agent
RHEL
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo yum --nogpgcheck update google-cloud-sql-server-agent
SLES
- Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
- Führen Sie dazu diesen Befehl aus:
sudo zypper --no-gpg-checks update google-cloud-sql-server-agent
Logs des Agents in Cloud Logging ansehen
Standardmäßig werden die Logs für Agent for SQL Server 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-sql-server-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.
Windows
%ProgramFiles%\Google\google-cloud-sql-server-agent\configuration.json
Linux
/etc/google-cloud-sql-server-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 SQL Server, ihren Ursachen und ihrer Behebung.
Unzureichende Authentifizierungsbereiche
Problem: Wenn Sie die Zugriffsbereiche auf Ihrer Host-VM-Instanz einschränken, enthalten die Agent for SQL Server-Logs möglicherweise ein 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 SQL Server erfordert 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.