Configura el agente para SQL Server

Workload Manager para Microsoft SQL Server usa el agente de Google Cloudpara SQL Server para detectar y recopilar metadatos para evaluar tus configuraciones de SQL Server. El agente para SQL Server es obligatorio en todas las VM que ejecutan SQL Server.

En este documento, se muestra cómo instalar, configurar y verificar el agente de Google Cloudpara SQL Server.

Requisitos previos para instalar el agente

Antes de instalar el agente para SQL Server, debes asegurarte de que se cumplan los siguientes requisitos previos y de crear una evaluación de la carga de trabajo de SQL Server.

Otorga roles de IAM a la cuenta de servicio

El agente deGoogle Cloudpara SQL Server usa la cuenta de servicio de Identity and Access Management (IAM) adjunta a la VM para la autenticación con Google Cloud y para obtener permiso de acceso a los recursos de Google Cloud . Para la recopilación de métricas de validación de Workload Manager, usa una cuenta de servicio nueva que incluya los siguientes roles de IAM:

Para agregar un rol necesario a tu cuenta de servicio, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página IAM.

    Ir a IAM

  2. Selecciona tu proyecto de Google Cloud.

  3. Identifica la cuenta de servicio a la que le quieres agregar un rol.

    • Si la cuenta de servicio no se encuentra aún en la lista de principales, no tiene ningún rol asignado. Haz clic en Agregar e ingresa la dirección de correo electrónico de la cuenta de servicio.
    • Si la cuenta de servicio ya se encuentra en la lista de principales es porque tiene roles existentes. Haz clic en el botón Editar de la cuenta de servicio que deseas editar.
  4. Selecciona el rol necesario de la lista de funciones disponibles:

    • Compute Engine > Visualizador de Compute
    • Secret Manager > Usuario con acceso a secretos de Secret Manager
  5. Haz clic en Agregar o Guardar para aplicar los roles a la cuenta de servicio.

Habilita el acceso a las Google Cloud APIs

Compute Engine recomienda configurar las instancias de VM para permitir los permisos de acceso completo a todas las APIs de Cloud y usar solo los permisos de IAM de la cuenta de servicio de la instancia para controlar el acceso a los recursos de Google Cloud . Para obtener más información, consulta Crea una VM que use una cuenta de servicio administrada por el usuario.

Si limitas el acceso a las APIs de Cloud, el Agente para SQL Server requiere los siguientes permisos mínimos de acceso a la API de Cloud en la instancia de VM del host:

https://www.googleapis.com/auth/cloud-platform

Para obtener más información, consulta Prácticas recomendadas para los alcances.

Si ejecutas aplicaciones de SQL Server en una instancia de VM que no tiene una dirección IP externa, debes habilitar el Acceso privado a Google en la subred de la VM para que el Agente para SQL Server pueda acceder a los servicios y las APIs de Google. Para obtener información sobre cómo habilitar el Acceso privado a Google en una subred, consulta Cómo configurar el Acceso privado a Google.

Permisos necesarios en SQL Server

Usa la siguiente secuencia de comandos para asignar los permisos necesarios a la cuenta de usuario configurada en el agente.

    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'' '

Instala el agente

Windows

En Windows, debes instalar el agente para SQL Server mediante el comando de administración de paquetes de GooGet, googet. El comando de administración de paquetes completa las siguientes tareas:

  • Descarga la versión más reciente del agente para SQL Server.
  • Crea un servicio de Windows llamado google-cloud-sql-server-agent y una tarea programada que se ejecuta cada minuto para comprobar si el servicio aún se ejecuta y, si es necesario, reiniciarlo.

Para instalar el agente en una VM, sigue estos pasos:

  1. Conéctate a la instancia de VM de Windows con RDP.
  2. Como administrador, ejecuta los siguientes comandos desde PowerShell:
    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. Revisa el archivo de configuración ubicado en %ProgramFiles%\Google\google-cloud-sql-server-agent y actualiza la sección credential_configuration con los detalles que se indican en Propiedades de configuración.
  4. Reinicia el agente para que se aplique este cambio.

Linux

En Linux, se instala el Agente para SQL Server mediante los comandos de administración de paquetes del sistema operativo estándar:

  • En RHEL, usa el comando yum
  • En SLES, usa el comando zypper.

El comando de administración de paquetes completa las siguientes tareas:

  • Descarga la versión más reciente del agente para SQL Server.
  • Crea el agente como un servicio systemd de Linux, llamado google-cloud-sql-server-agent.
  • Habilita e inicia el servicio, google-cloud-sql-server-agent.

Para instalar el agente en una VM, sigue estos pasos:

  1. Establece una conexión SSH a tu VM host.
  2. En tu terminal, instala el agente mediante la ejecución del comando específico de tu sistema operativo:

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. Revisa el archivo de configuración ubicado en \etc\google-cloud-sql-server-agent y actualiza la sección credential_configuration con los detalles que se indican en Propiedades de configuración.
  2. Reinicia el agente para que se aplique este cambio.

Propiedades de configuración

En la siguiente tabla, se explican las propiedades del archivo de configuración del agente.

Propiedades
collection_configuration.collect_guest_os_metrics

Boolean

Para habilitar la recopilación de métricas del SO, establece el valor como true. La ruta predeterminada es true.
No configures collection_configuration.collect_guest_os_metrics como false, a menos que lo indique el equipo de Atención al cliente de Cloud.

collection_configuration.guest_os_metrics_collection_interval_in_seconds

Int

Frecuencia de recopilación de métricas del SO de Workload Manager en segundos. El valor predeterminado es 3600 segundos. Puedes actualizar la frecuencia de la colección. Sin embargo, te recomendamos que mantengas el valor predeterminado.

collection_configuration.collect_sql_metrics

Boolean

Para habilitar la recopilación de métricas de SQL Server, especifica true. La ruta predeterminada es true.
No configures collection_configuration.collect_sql_metrics como false, a menos que lo indique el equipo de Atención al cliente de Cloud.

collection_configuration.collect_sql_metrics_collection_interval_in_seconds

Int

Frecuencia de recopilación de métricas de SQL Server de Workload Manager en segundos. El valor predeterminado es 3600 segundos. Puedes actualizar la frecuencia de la colección. Sin embargo, te recomendamos que mantengas el valor predeterminado.

log_level

String

Para configurar el nivel de registro del agente, agrega los niveles de registro. Los niveles de registro disponibles son los siguientes:
  • DEBUG
  • INFO
  • WARNING
  • ERROR
El valor predeterminado es INFO. No cambies el nivel de registro, a menos que lo indique la Atención al cliente de Cloud.
log_to_cloud

Boolean

Para redireccionar los registros del agente a Cloud Logging, especifica true. El valor predeterminado es true.

disable_log_usage

Boolean

Para inhabilitar el registro de las métricas de estado del agente, especifica true. El valor predeterminado es false.

remote_collection

Boolean

Especifica true para indicar que el agente está realizando la recopilación de datos de forma remota. El valor predeterminado es false.

credential_configuration[].sql_configurations[].user_name

String

Especifica la cuenta de usuario que se usa para consultar la instancia de SQL Server. Para configurar los permisos de la cuenta, revisa los permisos necesarios en la secuencia de comandos de permisos y otórgalos según tus políticas internas.

Nota: Si usas la autenticación de Windows, asegúrate de especificar el nombre de usuario en el siguiente formato: domain-name\\user-name

credential_configuration[].sql_configurations[].host

String

El nombre de host de SQL Server.

credential_configuration[].sql_configurations[].secret_name

String

Para proporcionar de forma segura la contraseña de la cuenta de usuario de la base de datos que el agente usa para consultar SQL Server, especifica el nombre del secreto en Secret Manager que contiene las credenciales de seguridad de la cuenta de usuario de la base de datos.

Nota: El secreto y la instancia de VM del host deben existir en el mismo proyecto de Google Cloud.

credential_configuration[].sql_configurations[].port_number

Int

Especifica el puerto en el que la instancia de SQL Server acepta consultas.

credential_configuration[].remote_win.server_name

String

Dirección IP o FQDN de la VM remota

credential_configuration[].remote_win.guest_user_name

String

Especifica la cuenta de usuario que se usa para conectarse de forma remota a la VM.

credential_configuration[].remote_win.guest_secret_name

String

Para proporcionar de forma segura la contraseña de la cuenta de usuario que el agente usa para conectarse de forma remota a la VM, especifica el nombre del secreto en Secret Manager que contiene las credenciales de seguridad de la cuenta de usuario.

Nota: El secreto y la instancia de VM del host deben existir en el mismo proyecto de Google Cloud.

credential_configuration[].remote_linux.server_name

String

Dirección IP o FQDN de la VM remota

credential_configuration[].remote_linux.guest_user_name

String

Especifica la cuenta de usuario que se usa para conectarse de forma remota a la VM.

credential_configuration[].remote_linux.guest_port_number

Int

Especifica el número de puerto SSH de la VM remota.

credential_configuration[].remote_linux.linux_ssh_private_key_path

String

Es la ruta de acceso al archivo de clave privada SSH.

credential_configuration[].instance_name

String

Especifica el nombre de tu instancia de VM de Compute Engine.

Nota: Es opcional para la colección local.

credential_configuration[].instance_id

String

Especifica el ID de tu instancia de VM de Compute Engine.

Nota: Es opcional para la colección local.

En el siguiente ejemplo, se muestra un archivo de configuración del agente para SQL Server:

Recopilación local

{
"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
}

Recopilación remota

{
"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
}

Verifica la instalación del agente

Windows

  1. Conéctate a la instancia de VM de Windows con RDP.
  2. Ejecuta el siguiente comando desde PowerShell como administrador:

    $(Get-Service -Name 'google-cloud-sql-server-agent' -ErrorAction Ignore).Status

    Si el agente está en ejecución, el estado muestra Running.

Linux

  1. Establece una conexión SSH con la VM del host.
  2. Ejecuta el siguiente comando:

    systemctl status google-cloud-sql-server-agent

    Si el agente funciona de forma correcta, el resultado contendrá active (running). Por ejemplo:

    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
    

Verifica la versión del agente

Para ver la versión de tu agente, completa los siguientes pasos:

Windows

  1. Usa RDP para conectarte a la máquina anfitrión.
  2. Como administrador, ejecuta el siguiente comando desde PowerShell:
    googet installed google-cloud-sql-server-agent

RHEL

  1. Usa SSH para conectarte a la máquina anfitrión.
  2. Ejecuta el siguiente comando:
    yum info google-cloud-sql-server-agent

SUSE

  1. Usa SSH para conectarte a la máquina anfitrión.
  2. Ejecuta el siguiente comando:
    zypper info google-cloud-sql-server-agent

Reinicia el agente

Si el agente para SQL Server deja de funcionar o actualizas su configuración, reinicia el agente.

Selecciona tu sistema operativo y, luego, sigue estos pasos:

Windows

  1. Usa RDP para conectarte a la máquina anfitrión.
  2. Como administrador, ejecuta el siguiente comando desde PowerShell:
    Restart-Service -Name 'google-cloud-sql-server-agent' -Force

Linux

  1. Usa SSH para conectarte a la máquina anfitrión.
  2. Ejecuta el siguiente comando:
    sudo systemctl restart google-cloud-sql-server-agent

Actualiza el agente

Para asegurarte de tener la versión más reciente del agente, debes verificar si hay actualizaciones periódicamente y actualizar el agente.

Comprueba actualizaciones

Selecciona tu sistema operativo y, luego, sigue estos pasos:

Windows

  1. Usa RDP para conectarte a la máquina anfitrión.
  2. Como administrador, ejecuta el siguiente comando desde PowerShell:
    googet latest google-cloud-sql-server-agent

RHEL

  1. Usa SSH para conectarte a la máquina anfitrión.
  2. Ejecuta el siguiente comando:
    sudo yum check-update google-cloud-sql-server-agent

SLES

  1. Usa SSH para conectarte a la máquina anfitrión.
  2. Ejecuta el siguiente comando:
    sudo zypper list-updates -r google-cloud-sql-server-agent

Instala una actualización

Selecciona tu sistema operativo y, luego, sigue estos pasos:

Windows

  1. Usa RDP para conectarte a la máquina anfitrión.
  2. Como administrador, ejecuta el siguiente comando desde PowerShell:
    googet install google-cloud-sql-server-agent

RHEL

  1. Usa SSH para conectarte a la máquina anfitrión.
  2. Ejecuta el siguiente comando:
    sudo yum --nogpgcheck update google-cloud-sql-server-agent

SLES

  1. Usa SSH para conectarte a la máquina anfitrión.
  2. Ejecuta el siguiente comando:
    sudo zypper --no-gpg-checks update google-cloud-sql-server-agent

Visualiza los registros del agente en Cloud Logging

De forma predeterminada, los registros del agente para SQL Server se redireccionan de tus instancias de VM a Cloud Logging.

Para ver los registros del agente en Logging, sigue estos pasos:

  1. En la consola de Google Cloud, ve a la página Explorador de registros.

    Ir al Explorador de registros

  2. Ve al panel Consulta.

  3. En el menú desplegable Recursos, selecciona Global y, luego, haz clic en Aplicar.

  4. En el Editor de consultas, ingresa google-cloud-sql-server-agent.

  5. Haz clic en Ejecutar consulta.

    Deberías ver los registros que generaron las instancias de agente que se ejecutan en todas tus instancias de VM. Para filtrar los registros de una máquina específica, usa los filtros disponibles en la interfaz.

Inhabilita los registros del agente en Cloud Logging

Para inhabilitar el redireccionamiento predeterminado de los registros del agente a Cloud Logging, sigue estos pasos:

  1. Establece una conexión RDP o SSH con la instancia de VM del host.

  2. Reemplaza el archivo de configuración del agente:

    Windows

    %ProgramFiles%\Google\google-cloud-sql-server-agent\configuration.json

    Linux

    /etc/google-cloud-sql-server-agent/configuration.json

  3. Para la propiedad log_to_cloud, actualiza el valor a false.

  4. Guarda el archivo de configuración.

  5. Reinicia el agente para que se aplique este cambio.

Soluciona problemas

En las siguientes secciones, se proporciona información sobre problemas habituales relacionados con el uso del agente para SQL Server, sus causas y la resolución.

Permisos de autenticación insuficientes

Problema: Si limitas los permisos de acceso en la instancia de VM de host, los registros del Agente para SQL Server pueden mostrar un error de permisos de IAM insuficiente.

  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

Causa: El agente para SQL Server requiere permisos de acceso mínimos a la API de Cloud en la instancia de VM del host.

Resolución: Para resolver este problema, habilita los alcances de acceso requeridos.

No se pudo cargar el archivo de configuración

Problema: Si el archivo de configuración tiene valores no válidos, verás el siguiente error.

"Failed to load configuration","pid":3524,"error":"proto: (line 19:42): unknown
field "{field_name}"

Solución: Para resolver este problema, actualiza el archivo de configuración con los detalles que se indican en Propiedades de configuración.

No se pudo inicializar la recopilación de datos

Problema: Si no se actualiza el archivo de configuración después de instalar el agente, verás el siguiente error:

"Failed to initialize guest collection","pid":2112,"error":"invalid value for "user_name" "secret_name"

Resolución: Para resolver este problema, inicializa la configuración de credenciales con Configuration properties.

¿Qué sigue?