Agent für SQL Server einrichten

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:

So fügen Sie Ihrem Dienstkonto eine erforderliche Rolle hinzu:

  1. Öffnen Sie in der Google Cloud Console die Seite IAM.

    IAM aufrufen

  2. Wählen Sie Ihr Google Cloud-Projekt aus.

  3. 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 .
  4. 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
  5. 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:

  1. Stellen Sie über RDP eine Verbindung zur Windows-VM-Instanz her.
  2. 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
    
  3. Prüfen Sie die Konfigurationsdatei unter %ProgramFiles%\Google\google-cloud-sql-server-agent und aktualisieren Sie den Abschnitt credential_configuration anhand der Details unter Konfigurationsattribute.
  4. 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 Namen google-cloud-sql-server-agent.
  • Aktiviert und startet den Dienst google-cloud-sql-server-agent.

So installieren Sie den Agent auf einer VM:

  1. Stellen Sie eine SSH-Verbindung zu Ihrer Host-VM her.
  2. 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
  1. Prüfen Sie die Konfigurationsdatei unter \etc\google-cloud-sql-server-agent und aktualisieren Sie den Abschnitt credential_configuration anhand der Details unter Konfigurationsattribute.
  2. 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

Boolean

Wenn Sie die Erfassung von Betriebssystemmesswerten aktivieren möchten, legen Sie den Wert auf true fest. Der Standardwert ist true.
Legen Sie für collection_configuration.collect_guest_os_metrics nur false fest, es sei denn, Sie werden vom Cloud Customer Care angeleitet.

collection_configuration.guest_os_metrics_collection_interval_in_seconds

Int

Häufigkeit der Erfassung von Arbeitslastmanager-Betriebssystemmesswerten in Sekunden. Die Standardeinstellung beträgt 3600 Sekunden. Sie können die Erfassungshäufigkeit aktualisieren. Wir empfehlen jedoch, den Standardwert beizubehalten.

collection_configuration.collect_sql_metrics

Boolean

Geben Sie true an, um die Erfassung von SQL Server-Messwerten zu aktivieren. Der Standardwert ist true.
Legen Sie für collection_configuration.collect_sql_metrics nur false fest, es sei denn, Sie werden vom Cloud Customer Care angeleitet.

collection_configuration.collect_sql_metrics_collection_interval_in_seconds

Int

Häufigkeit der Erfassung von SQL Server-Messwerten des Arbeitslastmanagers in Sekunden. Die Standardeinstellung beträgt 3600 Sekunden. Sie können die Erfassungshäufigkeit aktualisieren. Wir empfehlen jedoch, den Standardwert beizubehalten.

log_level

String

Fügen Sie die Logebenen hinzu, um die Logebene des Agents festzulegen. Folgende Logebenen sind verfügbar:
  • DEBUG
  • INFO
  • WARNING
  • ERROR
Der Standardwert ist INFO. Ändern Sie die Logging-Ebene nur, wenn Sie von Cloud Customer Care angewiesen werden.
log_to_cloud

Boolean

Geben Sie true an, um die Logs des Agents an Cloud Logging weiterzuleiten. Der Standardwert ist true.

disable_log_usage

Boolean

Geben Sie true an, um das Logging von Agent-Zustandsmesswerten zu deaktivieren. Der Standardwert ist false.

remote_collection

Boolean

Geben Sie true an, um anzugeben, dass der Kundenservicemitarbeiter die Daten aus der Ferne erhebt. Der Standardwert ist false.

credential_configuration[].sql_configurations[].user_name

String

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: domain-name\\user-name

credential_configuration[].sql_configurations[].host

String

Der Hostname des SQL-Servers.

credential_configuration[].sql_configurations[].secret_name

String

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

Int

Geben Sie den Port an, über den die SQL Server-Instanz Abfragen akzeptiert.

credential_configuration[].remote_win.server_name

String

IP-Adresse oder FQDN der Remote-VM

credential_configuration[].remote_win.guest_user_name

String

Geben Sie das Nutzerkonto an, das für die Remote-Verbindung zur VM verwendet wird.

credential_configuration[].remote_win.guest_secret_name

String

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

String

IP-Adresse oder FQDN der Remote-VM

credential_configuration[].remote_linux.guest_user_name

String

Geben Sie das Nutzerkonto an, das für die Remote-Verbindung zur VM verwendet wird.

credential_configuration[].remote_linux.guest_port_number

Int

Geben Sie die SSH-Portnummer für die Remote-VM an.

credential_configuration[].remote_linux.linux_ssh_private_key_path

String

Pfad zur privaten SSH-Schlüsseldatei.

credential_configuration[].instance_name

String

Geben Sie den Namen Ihrer Compute Engine-VM-Instanz an.

Hinweis:Optional für lokale Sammlungen.

credential_configuration[].instance_id

String

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

  1. Stellen Sie über RDP eine Verbindung zur Windows-VM-Instanz her.
  2. 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

  1. Stellen Sie eine SSH-Verbindung zu Ihrer Host-VM her.
  2. 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

  1. Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
  2. Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
    googet installed google-cloud-sql-server-agent

RHEL

  1. Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
  2. Führen Sie dazu diesen Befehl aus:
    yum info google-cloud-sql-server-agent

SUSE

  1. Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
  2. 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

  1. Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
  2. Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
    Restart-Service -Name 'google-cloud-sql-server-agent' -Force

Linux

  1. Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
  2. 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

  1. Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
  2. Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
    googet latest google-cloud-sql-server-agent

RHEL

  1. Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
  2. Führen Sie dazu diesen Befehl aus:
    sudo yum check-update google-cloud-sql-server-agent

SLES

  1. Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
  2. 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

  1. Stellen Sie eine RDP-Verbindung zum Hostcomputer her.
  2. Als Administrator führen Sie den folgenden Befehl in PowerShell aus:
    googet install google-cloud-sql-server-agent

RHEL

  1. Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
  2. Führen Sie dazu diesen Befehl aus:
    sudo yum --nogpgcheck update google-cloud-sql-server-agent

SLES

  1. Stellen Sie eine SSH-Verbindung zum Hostcomputer her.
  2. 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:

  1. Rufen Sie in der Google Cloud Console die Seite Log-Explorer auf.

    Zum Log-Explorer

  2. Rufen Sie den Bereich Abfrage auf.

  3. Wählen Sie im Drop-down-Menü Ressourcen die Option Global aus und klicken Sie dann auf Übernehmen.

  4. Geben Sie im Abfrageeditor google-cloud-sql-server-agent ein.

  5. 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:

  1. Stellen Sie eine RDP- oder SSH-Verbindung zu Ihrer Host-VM her.

  2. Ö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

  3. Aktualisieren Sie für das Attribut log_to_cloud den Wert auf false.

  4. Speichern Sie die Konfigurationsdatei.

  5. 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.

Nächste Schritte