Configurar el agente para Microsoft SQL Server

Workload Manager para Microsoft SQL Server usa el agente de cargas de trabajo de Compute de Google Cloudpara detectar y recoger metadatos con el fin de evaluar tus configuraciones de SQL Server.

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:

Para añadir un rol obligatorio a tu cuenta de servicio, sigue estos pasos:

  1. En la consola, ve a la página Gestión de identidades y accesos. Google Cloud

    Ir a IAM

  2. Selecciona tu proyecto de Google Cloud .

  3. 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.
  4. Selecciona el rol necesario en la lista de roles disponibles:

    • Compute Engine > Lector de Compute
    • Secret Manager > Lector de recursos de Secret Manager
  5. 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:

  1. Conéctate a la instancia de VM de Windows mediante RDP.
  2. 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
    
  3. 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.
  4. 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 llamado google-cloud-workload-agent.
  • Habilita e inicia el servicio google-cloud-workload-agent.

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

  1. Establece una conexión SSH con tu máquina virtual host.
  2. 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
    

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

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

String

Para definir el nivel de registro del agente, añade 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 te lo indique el equipo de Asistencia de Google Cloud.
log_to_cloud

Boolean

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

common_discovery.collection_frequency

Duration

Frecuencia de recogida del servicio de descubrimiento común, en segundos.
El valor predeterminado es 10800s.

agent_properties.log_usage_metrics

Boolean

Para habilitar el registro de métricas de estado del agente, asigna el valor true. El valor predeterminado es false.

sqlserver_configuration.enabled

Boolean

Para habilitar la recogida de métricas de SQL Server en el agente, asigna el valor true. El valor predeterminado es false.

sqlserver_configuration.collection_configuration.collect_guest_os_metrics

Boolean

Para habilitar la recogida de métricas del SO, defina el valor como true. El valor predeterminado es true.
No definas sqlserver_configuration.collection_configuration.collect_guest_os_metrics como false a menos que te lo indique el equipo de Cloud Customer Care.

sqlserver_configuration.collection_configuration.collect_sql_metrics

Boolean

Para habilitar la recogida de métricas de SQL Server, especifique true. El valor predeterminado es true.
No definas sqlserver_configuration.collection_configuration.collect_sql_metrics como false a menos que te lo indique el equipo de Cloud Customer Care.

sqlserver_configuration.collection_configuration.collection_frequency

Duration

Frecuencia de recogida de métricas de Agent for Compute Workloads, en segundos. El valor predeterminado es 3600s (ADMITE VALORES NULL). Puede actualizar la frecuencia de recogida. Sin embargo, te recomendamos que mantengas el valor predeterminado.

sqlserver_configuration.credential_configurations[].connection_parameters[].host

String

Nombre de host de SQL Server.

sqlserver_configuration.credential_configurations[].connection_parameters[].username

String

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

sqlserver_configuration.credential_configurations[].connection_parameters[].secret.project_id

String

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

String

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

Int

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

sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.host

String

Dirección IP o FQDN de la VM de Windows remota

sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.username

String

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

String

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

Boolean

Especifica true para indicar que el agente está recogiendo datos locales. El valor predeterminado es true.

sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.host

String

Dirección IP o FQDN de la máquina virtual Linux remota.

sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.username

String

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

Int

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

String

Especifica la ruta al archivo de clave privada SSH.

sqlserver_configuration.credential_configurations[].vm_properties.instance_name

String

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

String

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

Nota: Es opcional para las colecciones locales.

sqlserver_configuration.collection_timeout

Duration

Tiempo de espera de la recogida de métricas, en segundos. El valor predeterminado es `10s`.

sqlserver_configuration.max_retries

Int

Número máximo de reintentos cuando se produce un error en la recogida. El valor predeterminado es `3`.

sqlserver_configuration.retry_frequency

Duration

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

Boolean

Especifica true para indicar que el agente está recogiendo datos de forma remota. El valor predeterminado es false.

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

  1. Conéctate a la instancia de VM de Windows mediante RDP.
  2. 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

  1. Establece una conexión SSH con tu instancia de VM host.
  2. 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

  1. Usa RDP para conectarte al equipo host.
  2. Como administrador, ejecuta el siguiente comando desde PowerShell:
    googet installed google-cloud-workload-agent

RHEL - 6, 7

  1. Usa SSH para conectarte a la máquina host.
  2. Ejecuta el siguiente comando:
    yum info google-cloud-workload-agent

SUSE

  1. Usa SSH para conectarte a la máquina host.
  2. Ejecuta el siguiente comando:
    zypper info google-cloud-workload-agent

Debian

  1. Usa SSH para conectarte a la máquina host.
  2. 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

  1. Usa RDP para conectarte al equipo host.
  2. Como administrador, ejecuta el siguiente comando desde PowerShell:
    Restart-Service -Name 'google-cloud-workload-agent' -Force

Linux

  1. Usa SSH para conectarte a la máquina host.
  2. 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

  1. Usa RDP para conectarte al equipo host.
  2. Como administrador, ejecuta el siguiente comando desde PowerShell:
    googet latest google-cloud-workload-agent

RHEL - 6, 7

  1. Usa SSH para conectarte a la máquina host.
  2. Ejecuta el siguiente comando:
    sudo yum check-update google-cloud-workload-agent

SLES

  1. Usa SSH para conectarte a la máquina host.
  2. Ejecuta el siguiente comando:
    sudo zypper list-updates -r google-cloud-workload-agent

Debian

  1. Usa SSH para conectarte a la máquina host.
  2. Ejecuta el siguiente comando:
    sudo apt list google-cloud-workload-agent

Instalar una actualización

Selecciona tu sistema operativo y sigue los pasos:

Windows

  1. Usa RDP para conectarte al equipo host.
  2. Como administrador, ejecuta el siguiente comando desde PowerShell:
    googet install google-cloud-workload-agent

RHEL - 6, 7

  1. Usa SSH para conectarte a la máquina host.
  2. Ejecuta el siguiente comando:
    sudo yum --nogpgcheck update google-cloud-workload-agent

SLES

  1. Usa SSH para conectarte a la máquina host.
  2. Ejecuta el siguiente comando:
    sudo zypper --no-gpg-checks update google-cloud-workload-agent

Debian

  1. Usa SSH para conectarte a la máquina host.
  2. 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:

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

    Ir a Explorador de registros

  2. Ve al panel Consulta.

  3. En el menú desplegable Recursos, selecciona Global y, a continuación, haz clic en Aplicar.

  4. En el editor de consultas, escribe google-cloud-workload-agent.

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

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

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

  3. En 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.

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.

Siguientes pasos