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:
- Visualizador de Compute (
roles/compute.viewer
) - Descriptor de acceso de secretos de Secret Manager (
roles/secretmanager.secretAccessor
) - Administrador de Workload Manager (
roles/workloadmanager.admin
) - Logs Writer (
roles/logging.logWriter
), si usas la función de Cloud Logging
Para agregar un rol necesario a tu cuenta de servicio, sigue estos pasos:
En la consola de Google Cloud, ve a la página IAM.
Selecciona tu proyecto de Google Cloud.
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.
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
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:
- Conéctate a la instancia de VM de Windows con RDP.
- 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
- Revisa el archivo de configuración ubicado en
%ProgramFiles%\Google\google-cloud-sql-server-agent
y actualiza la seccióncredential_configuration
con los detalles que se indican en Propiedades de configuración. - 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, llamadogoogle-cloud-sql-server-agent
. - Habilita e inicia el servicio,
google-cloud-sql-server-agent
.
Para instalar el agente en una VM, sigue estos pasos:
- Establece una conexión SSH a tu VM host.
- 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
- Revisa el archivo de configuración ubicado en
\etc\google-cloud-sql-server-agent
y actualiza la seccióncredential_configuration
con los detalles que se indican en Propiedades de configuración. - 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 |
Para habilitar la recopilación de métricas del SO, establece el valor como |
collection_configuration.guest_os_metrics_collection_interval_in_seconds |
Frecuencia de recopilación de métricas del SO de Workload Manager en segundos.
El valor predeterminado es |
collection_configuration.collect_sql_metrics |
Para habilitar la recopilación de métricas de SQL Server, especifica |
collection_configuration.collect_sql_metrics_collection_interval_in_seconds |
Frecuencia de recopilación de métricas de SQL Server de Workload Manager en segundos.
El valor predeterminado es |
log_level |
INFO . No cambies el nivel de registro, a menos que lo indique la Atención al cliente de Cloud.
|
log_to_cloud |
Para redireccionar los registros del agente a Cloud Logging, especifica |
disable_log_usage |
Para inhabilitar el registro de las métricas de estado del agente, especifica |
remote_collection |
Especifica |
credential_configuration[].sql_configurations[].user_name |
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: |
credential_configuration[].sql_configurations[].host |
El nombre de host de SQL Server. |
credential_configuration[].sql_configurations[].secret_name |
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 |
Especifica el puerto en el que la instancia de SQL Server acepta consultas. |
credential_configuration[].remote_win.server_name |
Dirección IP o FQDN de la VM remota |
credential_configuration[].remote_win.guest_user_name |
Especifica la cuenta de usuario que se usa para conectarse de forma remota a la VM. |
credential_configuration[].remote_win.guest_secret_name |
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 |
Dirección IP o FQDN de la VM remota |
credential_configuration[].remote_linux.guest_user_name |
Especifica la cuenta de usuario que se usa para conectarse de forma remota a la VM. |
credential_configuration[].remote_linux.guest_port_number |
Especifica el número de puerto SSH de la VM remota. |
credential_configuration[].remote_linux.linux_ssh_private_key_path |
Es la ruta de acceso al archivo de clave privada SSH. |
credential_configuration[].instance_name |
Especifica el nombre de tu instancia de VM de Compute Engine. Nota: Es opcional para la colección local. |
credential_configuration[].instance_id |
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
- Conéctate a la instancia de VM de Windows con RDP.
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
- Establece una conexión SSH con la VM del host.
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
- Usa RDP para conectarte a la máquina anfitrión.
- Como administrador, ejecuta el siguiente comando desde PowerShell:
googet installed google-cloud-sql-server-agent
RHEL
- Usa SSH para conectarte a la máquina anfitrión.
- Ejecuta el siguiente comando:
yum info google-cloud-sql-server-agent
SUSE
- Usa SSH para conectarte a la máquina anfitrión.
- 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
- Usa RDP para conectarte a la máquina anfitrión.
- Como administrador, ejecuta el siguiente comando desde PowerShell:
Restart-Service -Name 'google-cloud-sql-server-agent' -Force
Linux
- Usa SSH para conectarte a la máquina anfitrión.
- 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
- Usa RDP para conectarte a la máquina anfitrión.
- Como administrador, ejecuta el siguiente comando desde PowerShell:
googet latest google-cloud-sql-server-agent
RHEL
- Usa SSH para conectarte a la máquina anfitrión.
- Ejecuta el siguiente comando:
sudo yum check-update google-cloud-sql-server-agent
SLES
- Usa SSH para conectarte a la máquina anfitrión.
- 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
- Usa RDP para conectarte a la máquina anfitrión.
- Como administrador, ejecuta el siguiente comando desde PowerShell:
googet install google-cloud-sql-server-agent
RHEL
- Usa SSH para conectarte a la máquina anfitrión.
- Ejecuta el siguiente comando:
sudo yum --nogpgcheck update google-cloud-sql-server-agent
SLES
- Usa SSH para conectarte a la máquina anfitrión.
- 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:
En la consola de Google Cloud, ve a la página Explorador de registros.
Ve al panel Consulta.
En el menú desplegable Recursos, selecciona Global y, luego, haz clic en Aplicar.
En el Editor de consultas, ingresa
google-cloud-sql-server-agent
.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:
Establece una conexión RDP o SSH con la instancia de VM del host.
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
Para la propiedad
log_to_cloud
, actualiza el valor afalse
.Guarda el archivo de configuración.
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?
- Obtén más información sobre las evaluaciones de cargas de trabajo.