En este documento se muestra cómo instalar, configurar y verificar el agente para cargas de trabajo de Compute en instancias de Compute Engine que ejecutan SQL Server.
Requisitos previos para instalar el agente
Antes de instalar Agent for Compute Workloads, debes asegurarte de que se cumplen los siguientes requisitos previos y de crear una evaluación de la carga de trabajo de SQL Server.
Asigna roles de gestión de identidades y accesos a la cuenta de servicio
El agente deGoogle Cloudpara cargas de trabajo de Compute usa la cuenta de servicio de Gestión de Identidades y Accesos (IAM) asociada a la VM para autenticarse con Google Cloud y para obtener permiso para acceder a los recursos de Google Cloud . Para recoger las métricas de validación de Workload Manager, usa una cuenta de servicio que incluya los siguientes roles de gestión de identidades y accesos:
- Lector de Compute (
roles/compute.viewer
) - Lector de recursos de Secret Manager (
roles/secretmanager.secretAccessor
) - Administrador de Workload Manager (
roles/workloadmanager.admin
) - Escritor de registros (
roles/logging.logWriter
), si usas la función Cloud Logging
Para añadir un rol obligatorio a tu cuenta de servicio, sigue estos pasos:
En la consola, ve a la página Gestión de identidades y accesos. Google Cloud
Selecciona tu proyecto de Google Cloud .
Identifica la cuenta de servicio a la que quieras añadir un rol.
- Si la cuenta de servicio aún no está en la lista de principales, no tiene ningún rol asignado. Haz clic en Añadir e introduce la dirección de correo de la cuenta de servicio.
- Si la cuenta de servicio ya está en la lista de principales, significa que ya tiene roles. Haz clic en el botón Editar de la cuenta de servicio que quieras modificar.
Selecciona el rol necesario en la lista de roles disponibles:
- Compute Engine > Lector de Compute
- Secret Manager > Lector de recursos de Secret Manager
Haz clic en Añadir o Guardar para aplicar los roles a la cuenta de servicio.
Habilitar el acceso a las Google Cloud APIs
Compute Engine recomienda configurar las instancias de VM para que permitan todos los permisos de acceso a todas las APIs de Cloud y usar solo los permisos de gestión de identidades y accesos de la cuenta de servicio de la instancia para controlar el acceso a los recursos. Google Cloud Para obtener más información, consulta Crear una VM que use una cuenta de servicio gestionada por el usuario.
Si limitas el acceso a las APIs de Cloud, el agente para cargas de trabajo de Compute requiere los siguientes permisos de acceso mínimos a las APIs de Cloud en la instancia de VM host:
https://www.googleapis.com/auth/cloud-platform
Para obtener más información, consulta el artículo Prácticas recomendadas sobre los ámbitos.
Si ejecutas aplicaciones de SQL Server en una instancia de VM que no tiene una dirección IP externa, debes habilitar el acceso privado de Google en la subred de la VM para que el agente de Compute Workloads pueda acceder a las APIs y los servicios de Google. Para saber cómo habilitar Acceso privado de Google en una subred, consulta el artículo Configurar Acceso privado de 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'' '
Instalar el agente
Para instalar la versión más reciente del agente de cargas de trabajo de Compute, sigue estos pasos:
Windows
En Windows, puedes instalar el agente para cargas de trabajo de Compute mediante el comando de gestión de paquetes de GooGet, googet
. El comando de gestión de paquetes completa las siguientes tareas:
- Descarga la versión más reciente de Agent for Compute Workloads.
- Crea un servicio de Windows llamado
google-cloud-workload-agent
y una tarea programada que se ejecuta cada minuto para comprobar si el servicio sigue en funcionamiento y, si es necesario, reiniciarlo.
Para instalar el agente en una VM, sigue estos pasos:
- Conéctate a la instancia de VM de Windows mediante RDP.
- Como administrador, ejecuta los siguientes comandos desde PowerShell:
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
- Revisa el archivo de configuración que se encuentra en
%ProgramFiles%\Google\google-cloud-workload-agent\conf
y actualízalo con los detalles de Propiedades de configuración. - Reinicia el agente para que se aplique este cambio.
Linux
En Linux, puedes instalar el agente para cargas de trabajo de Compute mediante los comandos de gestión de paquetes estándar del sistema operativo:
- En RHEL, usa el comando
yum
- En SLES, usa el comando
zypper
- En Debian, usa el comando
apt
El comando de gestión de paquetes completa las siguientes tareas:
- Descarga la versión más reciente de Agent for Compute Workloads.
- Crea el agente como un servicio de Linux
systemd
llamadogoogle-cloud-workload-agent
. - Habilita e inicia el servicio
google-cloud-workload-agent
.
Para instalar el agente en una VM, sigue estos pasos:
- Establece una conexión SSH con tu máquina virtual host.
En el terminal, instala el agente ejecutando el comando específico de tu sistema operativo:
RHEL - 6, 7
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
SLES
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
Debian
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
Revisa el archivo de configuración que se encuentra en
\etc\google-cloud-workload-agent
y actualízalo con los detalles de Propiedades de configuración.Reinicia el agente para que se aplique este cambio.
Propiedades de configuración
En la siguiente tabla se describen las propiedades del archivo de configuración del agente.
Propiedades | |
---|---|
log_level |
INFO . No cambies el nivel de registro
a menos que te lo indique el equipo de Asistencia de Google Cloud.
|
log_to_cloud |
Para redirigir los registros del agente a Cloud Logging,
especifica |
common_discovery.collection_frequency |
Frecuencia de recogida del servicio de descubrimiento común, en segundos. |
agent_properties.log_usage_metrics |
Para habilitar el registro de métricas de estado del agente, asigna el valor |
sqlserver_configuration.enabled |
Para habilitar la recogida de métricas de SQL Server en el agente, asigna el valor |
sqlserver_configuration.collection_configuration.collect_guest_os_metrics |
Para habilitar la recogida de métricas del SO, defina el valor como |
sqlserver_configuration.collection_configuration.collect_sql_metrics |
Para habilitar la recogida de métricas de SQL Server, especifique |
sqlserver_configuration.collection_configuration.collection_frequency |
Frecuencia de recogida de métricas de Agent for Compute Workloads, en segundos.
El valor predeterminado es |
sqlserver_configuration.credential_configurations[].connection_parameters[].host |
Nombre de host de SQL Server. |
sqlserver_configuration.credential_configurations[].connection_parameters[].username |
Especifica la cuenta de usuario que se utiliza para consultar la instancia de SQL Server. Para configurar los permisos de la cuenta, consulta los permisos necesarios en el script de permisos y concédelos de acuerdo con tus políticas internas. Nota: Si usas la autenticación de Windows, asegúrate de especificar el nombre de usuario con el siguiente formato:
|
sqlserver_configuration.credential_configurations[].connection_parameters[].secret.project_id |
El ID del proyecto en el que se almacena el secreto. Asigna una cadena vacía ("") si el secreto y la instancia de VM del host se encuentran en el mismo proyecto Google Cloud . |
sqlserver_configuration.credential_configurations[].connection_parameters[].secret.secret_name |
Para proporcionar de forma segura la contraseña de la cuenta de usuario de la base de datos que usa el agente 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 host deben estar en el mismo proyecto Google Cloud . |
sqlserver_configuration.credential_configurations[].connection_parameters[].port |
Especifica el puerto en el que tu instancia de SQL Server acepta consultas. |
sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.host |
Dirección IP o FQDN de la VM de Windows remota |
sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.username |
Especifica la cuenta de usuario que se usa para conectarse de forma remota a la VM de Windows. |
sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.secret.secret_name |
Para proporcionar de forma segura la contraseña de la cuenta de usuario de Windows que usa el agente 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 de la base de datos. Nota: El secreto y la instancia de VM host deben estar en el mismo proyecto Google Cloud . |
sqlserver_configuration.credential_configurations[].local_collection |
Especifica |
sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.host |
Dirección IP o FQDN de la máquina virtual Linux remota. |
sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.username |
Especifica la cuenta de usuario que se usa para conectarse de forma remota a la VM Linux. |
sqlserver_configuration.credential_configurations[].remote_linux.connection_parameter.port |
Especifica el número de puerto SSH de la máquina virtual Linux remota. |
sqlserver_configuration.credential_configurations[].remote_linux.linux_ssh_private_key_path |
Especifica la ruta al archivo de clave privada SSH. |
sqlserver_configuration.credential_configurations[].vm_properties.instance_name |
Especifica el nombre de la instancia de VM de Compute Engine. Nota: Es opcional para las colecciones locales. |
sqlserver_configuration.credential_configurations[].vm_properties.instance_id |
Especifica el ID de tu instancia de VM de Compute Engine. Nota: Es opcional para las colecciones locales. |
sqlserver_configuration.collection_timeout |
Tiempo de espera de la recogida de métricas, en segundos. El valor predeterminado es `10s`. |
sqlserver_configuration.max_retries |
Número máximo de reintentos cuando se produce un error en la recogida. El valor predeterminado es `3`. |
sqlserver_configuration.retry_frequency |
Especifica la frecuencia con la que el agente debe volver a intentarlo cuando falle una colección. El valor predeterminado es `3600s`. |
sqlserver_configuration.remote_collection |
Especifica |
En el ejemplo siguiente se muestra un archivo de configuración de Agent for Compute Workloads:
Recogida local
{ "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" } }
Recogida remota
{ "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 } }
Verificar la instalación del agente
Windows
- Conéctate a la instancia de VM de Windows mediante RDP.
Ejecuta el siguiente comando desde PowerShell como administrador:
$(Get-Service -Name 'google-cloud-workload-agent' -ErrorAction Ignore).Status
Si el agente está en ejecución, el estado muestra
Running
.
Linux
- Establece una conexión SSH con tu instancia de VM host.
Ejecuta el siguiente comando:
systemctl status google-cloud-workload-agent
Si el agente funciona correctamente, la salida contiene
active (running)
. Por ejemplo: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
Comprobar la versión del agente
Para comprobar la versión de tu agente, sigue estos pasos:
Windows
- Usa RDP para conectarte al equipo host.
- Como administrador, ejecuta el siguiente comando desde PowerShell:
googet installed google-cloud-workload-agent
RHEL - 6, 7
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
yum info google-cloud-workload-agent
SUSE
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
zypper info google-cloud-workload-agent
Debian
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
dpkg -s google-cloud-workload-agent | grep version
Reiniciar el agente
Si Agent for Compute Workloads deja de funcionar o actualiza su configuración, reinicie el agente.
Selecciona tu sistema operativo y sigue los pasos:
Windows
- Usa RDP para conectarte al equipo host.
- Como administrador, ejecuta el siguiente comando desde PowerShell:
Restart-Service -Name 'google-cloud-workload-agent' -Force
Linux
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
sudo systemctl restart google-cloud-workload-agent
Actualizar el agente
Para asegurarte de que tienes la versión más reciente del agente, debes comprobar si hay actualizaciones periódicamente y actualizar el agente.
Buscar actualizaciones
Selecciona tu sistema operativo y sigue los pasos:
Windows
- Usa RDP para conectarte al equipo host.
- Como administrador, ejecuta el siguiente comando desde PowerShell:
googet latest google-cloud-workload-agent
RHEL - 6, 7
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
sudo yum check-update google-cloud-workload-agent
SLES
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
sudo zypper list-updates -r google-cloud-workload-agent
Debian
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
sudo apt list google-cloud-workload-agent
Instalar una actualización
Selecciona tu sistema operativo y sigue los pasos:
Windows
- Usa RDP para conectarte al equipo host.
- Como administrador, ejecuta el siguiente comando desde PowerShell:
googet install google-cloud-workload-agent
RHEL - 6, 7
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
sudo yum --nogpgcheck update google-cloud-workload-agent
SLES
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
sudo zypper --no-gpg-checks update google-cloud-workload-agent
Debian
- Usa SSH para conectarte a la máquina host.
- Ejecuta el siguiente comando:
sudo apt-get install google-cloud-workload-agent
Ver los registros del agente en Cloud Logging
De forma predeterminada, los registros de Agente para cargas de trabajo de Compute se redirigen desde tus instancias de VM a Cloud Logging.
Para ver los registros del agente en Logging, sigue estos pasos:
En la Google Cloud consola, ve a la página Explorador de registros.
Ve al panel Consulta.
En el menú desplegable Recursos, selecciona Global y, a continuación, haz clic en Aplicar.
En el editor de consultas, escribe
google-cloud-workload-agent
.Haz clic en Realizar una consulta.
Deberías ver los registros generados por las instancias del 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.
Inhabilitar los registros del agente en Cloud Logging
Para inhabilitar la redirección predeterminada de los registros del agente a Cloud Logging, sigue estos pasos:
Establece una conexión RDP o SSH con la instancia de VM host.
Abre el archivo de configuración del agente:
Windows
%ProgramFiles%\Google\google-cloud-workload-agent\conf\configuration.json
Linux
/etc/google-cloud-workload-agent/configuration.json
En la propiedad
log_to_cloud
, actualiza el valor afalse
.Guarda el archivo de configuración.
Reinicia el agente para que se aplique este cambio.
Solución de problemas
En las siguientes secciones se proporciona información sobre los problemas habituales relacionados con el uso de Agent for Compute Workloads, sus causas y cómo solucionarlos.
Ámbitos de autenticación insuficientes
Problema: si limitas los ámbitos de acceso en tu instancia de VM host, es posible que los registros del agente para cargas de trabajo de Compute muestren un error de permisos de IAM insuficientes.
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 de cargas de trabajo de Compute requiere ámbitos de acceso mínimos a la API de Cloud en la instancia de VM host.
Solución: para solucionar este problema, habilita los ámbitos de acceso necesarios.
No se ha podido cargar el archivo de configuración
Problema: si el archivo de configuración tiene valores no válidos, aparece el siguiente error.
"Failed to load configuration","pid":3524,"error":"proto: (line 19:42): unknown field "{field_name}"
Resolución: para solucionar este problema, actualice el archivo de configuración con los detalles de Propiedades de configuración.
No se ha podido inicializar la recogida de datos
Problema: después de instalar el agente, si el archivo de configuración no se actualiza, aparece el siguiente error:
"Failed to initialize guest collection","pid":2112,"error":"invalid value for "user_name" "secret_name"
Solución: Para resolver este problema, inicializa la configuración de las credenciales con las propiedades de configuración.