Este documento mostra como instalar, configurar e validar o agente para cargas de trabalho de computação em instâncias do Compute Engine que executam o SQL Server.
Pré-requisitos para instalar o agente
Antes de instalar o agente para cargas de trabalho de computação, tem de garantir que os seguintes pré-requisitos são cumpridos, juntamente com a criação de uma avaliação da carga de trabalho do SQL Server.
Conceda funções do IAM à conta de serviço
O agente doGoogle Cloudpara cargas de trabalho do Compute usa a conta de serviço de gestão de identidade e de acesso (IAM) anexada à VM para autenticação com o Google Cloud e para autorização de acesso Google Cloud a recursos. Para a recolha de métricas de validação do Workload Manager, use uma nova conta de serviço que inclua as seguintes funções do IAM:
- Compute Viewer (
roles/compute.viewer
) - Secret Manager Secret Accessor (
roles/secretmanager.secretAccessor
) - Administrador do Workload Manager (
roles/workloadmanager.admin
) - Escritor de registos (
roles/logging.logWriter
), se usar a funcionalidade do Cloud Logging
Para adicionar uma função obrigatória à sua conta de serviço, siga estes passos:
Na Google Cloud consola, aceda à página IAM.
Selecione o seu projeto do Google Cloud .
Identifique a conta de serviço à qual quer adicionar uma função.
- Se a conta de serviço ainda não estiver na lista de responsáveis, significa que não lhe foram atribuídas funções. Clique em Adicionar e introduza o endereço de email da conta de serviço.
- Se a conta de serviço já estiver na lista de responsáveis, significa que tem funções existentes. Clique no botão Editar para a conta de serviço que quer editar.
Selecione a função necessária na lista de funções disponíveis:
- Compute Engine > Compute Viewer
- Secret Manager > Secret Manager Secret Accessor
Clique em Adicionar ou Guardar para aplicar as funções à conta de serviço.
Ative o acesso às Google Cloud APIs
O Compute Engine recomenda que configure as suas instâncias de MV para permitir todos os âmbitos de acesso a todas as APIs Cloud e usar apenas as autorizações do IAM da conta de serviço da instância para controlar o acesso aos Google Cloud recursos. Para mais informações, consulte o artigo Crie uma VM que use uma conta de serviço gerida pelo utilizador.
Se limitar o acesso às APIs Cloud, o agente para cargas de trabalho de computação requer os seguintes âmbitos de acesso à API Cloud mínimos na instância de VM do anfitrião:
https://www.googleapis.com/auth/cloud-platform
Para mais informações, consulte o artigo Práticas recomendadas de âmbitos.
Se estiver a executar aplicações SQL Server numa instância de VM que não tenha um endereço IP externo, tem de ativar o acesso privado à Google na sub-rede da VM para que o agente para cargas de trabalho do Compute possa aceder às APIs e aos serviços Google. Para saber como ativar o acesso privado à Google numa sub-rede, consulte o artigo Configurar o acesso privado à Google.
Autorizações necessárias no SQL Server
Use o seguinte script para atribuir as autorizações necessárias à conta de utilizador configurada no 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'' '
Instale o agente
Para instalar a versão mais recente do agente para cargas de trabalho de computação, conclua os passos seguintes:
Windows
No Windows, instala o agente para cargas de trabalho de computação através do comando de gestão de pacotes GooGet, googet
. O comando de gestão de pacotes conclui as seguintes tarefas:
- Transfere a versão mais recente do agente para cargas de trabalho de computação.
- Cria um serviço do Windows denominado
google-cloud-workload-agent
e uma tarefa agendada que é executada todos os minutos para verificar se o serviço ainda está em execução e, se necessário, reiniciá-lo.
Para instalar o agente numa VM, siga estes passos:
- Estabeleça ligação à instância de VM do Windows através do RDP.
- Como administrador, execute os seguintes comandos a partir do 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
- Reveja o ficheiro de configuração localizado em
%ProgramFiles%\Google\google-cloud-workload-agent\conf
e atualize o ficheiro de configuração com os detalhes em Propriedades de configuração. - Reinicie o agente para que esta alteração entre em vigor.
Linux
No Linux, instala o agente para cargas de trabalho do Compute Engine através dos comandos de gestão de pacotes do sistema operativo padrão:
- No RHEL, use o comando
yum
- No SLES, use o comando
zypper
- No Debian, use o comando
apt
O comando de gestão de pacotes conclui as seguintes tarefas:
- Transfere a versão mais recente do agente para cargas de trabalho de computação.
- Cria o agente como um serviço Linux denominado
google-cloud-workload-agent
.systemd
- Ativa e inicia o serviço
google-cloud-workload-agent
.
Para instalar o agente numa VM, siga estes passos:
- Estabeleça uma ligação SSH à sua VM de anfitrião.
No terminal, instale o agente executando o comando específico do seu sistema operativo:
RHEL
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
Reveja o ficheiro de configuração localizado em
\etc\google-cloud-workload-agent
e atualize o ficheiro de configuração com os detalhes em Propriedades de configuração.Reinicie o agente para que esta alteração entre em vigor.
Propriedades de configuração
A tabela seguinte descreve as propriedades do ficheiro de configuração do agente.
Propriedades | |
---|---|
log_level |
INFO . Não altere o nível de registo, a menos que
receba instruções do apoio técnico ao cliente da nuvem.
|
log_to_cloud |
Para redirecionar os registos do agente para o Cloud Logging,
especifique |
common_discovery.collection_frequency |
Frequência de recolha para o serviço de descoberta comum, em segundos. |
agent_properties.log_usage_metrics |
Para ativar o registo de métricas de saúde do agente, defina o valor como |
sqlserver_configuration.enabled |
Para ativar as recolhas de métricas do SQL Server no agente, defina o valor como |
sqlserver_configuration.collection_configuration.collect_guest_os_metrics |
Para ativar a recolha de métricas do SO, defina o valor como |
sqlserver_configuration.collection_configuration.collect_sql_metrics |
Para ativar a recolha de métricas do SQL Server, especifique |
sqlserver_configuration.collection_configuration.collection_frequency |
Agente para a frequência de recolha de métricas de cargas de trabalho de computação, em segundos.
A predefinição é |
sqlserver_configuration.credential_configurations[].connection_parameters[].host |
O nome de anfitrião do SQL Server. |
sqlserver_configuration.credential_configurations[].connection_parameters[].username |
Especifique a conta de utilizador que é usada para consultar a instância do SQL Server. Para configurar as autorizações da conta, reveja as autorizações necessárias no script de autorizações e conceda-as de acordo com as suas políticas internas. Nota: se estiver a usar a autenticação do Windows, certifique-se de que especifica o nome de utilizador no
seguinte formato:
|
sqlserver_configuration.credential_configurations[].connection_parameters[].secret.project_id |
O ID do projeto onde o segredo está armazenado. Defina-o como uma string vazia ("") se o segredo e a instância de VM do anfitrião existirem no mesmo Google Cloud projeto. |
sqlserver_configuration.credential_configurations[].connection_parameters[].secret.secret_name |
Para fornecer de forma segura a palavra-passe da conta de utilizador da base de dados que o agente usa para consultar o SQL Server, especifique o nome do segredo no Secret Manager que contém as credenciais de segurança da conta de utilizador da base de dados. Nota: o segredo e a instância de VM anfitriã têm de existir no mesmo Google Cloud projeto. |
sqlserver_configuration.credential_configurations[].connection_parameters[].port |
Especifique a porta na qual a instância do SQL Server aceita consultas. |
sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.host |
Endereço IP ou FQDN da VM do Windows remota |
sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.username |
Especifique a conta de utilizador que é usada para estabelecer ligação remotamente à VM do Windows. |
sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.secret.secret_name |
Para fornecer de forma segura a palavra-passe da conta de utilizador do Windows que o agente usa para se ligar remotamente à VM, especifique o nome do segredo no Secret Manager que contém as credenciais de segurança da conta de utilizador da base de dados. Nota: o segredo e a instância de VM anfitriã têm de existir no mesmo Google Cloud projeto. |
sqlserver_configuration.credential_configurations[].local_collection |
Especifique |
sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.host |
Endereço IP ou FQDN da VM Linux remota. |
sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.username |
Especifique a conta de utilizador que é usada para estabelecer ligação remotamente à VM do Linux. |
sqlserver_configuration.credential_configurations[].remote_linux.connection_parameter.port |
Especifique o número da porta SSH para a VM Linux remota. |
sqlserver_configuration.credential_configurations[].remote_linux.linux_ssh_private_key_path |
Especifique o caminho para o ficheiro de chave privada de SSH. |
sqlserver_configuration.credential_configurations[].vm_properties.instance_name |
Especifique o nome da instância de VM do Compute Engine. Nota: opcional para recolha local. |
sqlserver_configuration.credential_configurations[].vm_properties.instance_id |
Especifique o ID da instância de VM do Compute Engine. Nota: opcional para recolha local. |
sqlserver_configuration.collection_timeout |
O limite de tempo para a recolha de métricas, em segundos. A predefinição é "10s". |
sqlserver_configuration.max_retries |
O número máximo de novas tentativas quando ocorre uma recolha falhada. O valor predefinido é "3". |
sqlserver_configuration.retry_frequency |
Especifique a frequência com que o agente deve tentar novamente quando uma recolha falha. O valor predefinido é `3600s`. |
sqlserver_configuration.remote_collection |
Especifique |
O exemplo seguinte mostra um ficheiro de configuração para o agente para cargas de trabalho de computação:
Coleção 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" } }
Recolha 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 } }
Valide a instalação do agente
Windows
- Estabeleça ligação à instância de VM do Windows através do RDP.
Execute o seguinte comando a partir do PowerShell como administrador:
$(Get-Service -Name 'google-cloud-workload-agent' -ErrorAction Ignore).Status
Se o agente estiver em execução, o estado mostra
Running
.
Linux
- Estabeleça uma ligação SSH com a instância de VM do anfitrião.
Execute o seguinte comando:
systemctl status google-cloud-workload-agent
Se o agente estiver a funcionar corretamente, a saída contém
active (running)
. Por exemplo: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
Verifique a versão do agente
Para verificar a versão do seu agente, conclua os seguintes passos:
Windows
- Use o RDP para estabelecer ligação à máquina anfitriã.
- Como administrador, execute o seguinte comando a partir do PowerShell:
googet installed google-cloud-workload-agent
RHEL
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
yum info google-cloud-workload-agent
SUSE
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
zypper info google-cloud-workload-agent
Debian
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
dpkg -s google-cloud-workload-agent | grep version
Reinicie o agente
Se o agente para cargas de trabalho de computação parar de funcionar ou atualizar a respetiva configuração, reinicie o agente.
Selecione o seu sistema operativo e, em seguida, siga os passos:
Windows
- Use o RDP para estabelecer ligação à máquina anfitriã.
- Como administrador, execute o seguinte comando a partir do PowerShell:
Restart-Service -Name 'google-cloud-workload-agent' -Force
Linux
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
sudo systemctl restart google-cloud-workload-agent
Atualize o agente
Para garantir que tem a versão mais recente do agente, tem de verificar periodicamente se existem atualizações e atualizar o agente.
Procure atualizações
Selecione o seu sistema operativo e, em seguida, siga os passos:
Windows
- Use o RDP para estabelecer ligação à máquina anfitriã.
- Como administrador, execute o seguinte comando a partir do PowerShell:
googet latest google-cloud-workload-agent
RHEL
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
sudo yum check-update google-cloud-workload-agent
SLES
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
sudo zypper list-updates -r google-cloud-workload-agent
Debian
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
sudo apt list google-cloud-workload-agent
Instale uma atualização
Selecione o seu sistema operativo e, em seguida, siga os passos:
Windows
- Use o RDP para estabelecer ligação à máquina anfitriã.
- Como administrador, execute o seguinte comando a partir do PowerShell:
googet install google-cloud-workload-agent
RHEL
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
sudo yum --nogpgcheck update google-cloud-workload-agent
SLES
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
sudo zypper --no-gpg-checks update google-cloud-workload-agent
Debian
- Use o SSH para se ligar à máquina anfitriã.
- Execute o seguinte comando:
sudo apt-get install google-cloud-workload-agent
Veja os registos do agente em Registos na nuvem
Por predefinição, os registos do agente para cargas de trabalho de computação são redirecionados das suas instâncias de VM para o Cloud Logging.
Para ver os registos do agente no Logging, siga estes passos:
Na Google Cloud consola, aceda à página Explorador de registos.
Aceda ao painel Consulta.
No menu pendente Recursos, selecione Global e, de seguida, clique em Aplicar.
No editor de consultas, introduza
google-cloud-workload-agent
.Clique em Executar consulta.
Deverá ver os registos gerados pelas instâncias do agente em execução em todas as suas instâncias de VM. Para filtrar os registos de uma máquina específica, use os filtros disponíveis na interface.
Desative os registos do agente no Cloud Logging
Para desativar o redirecionamento predefinido dos registos do agente para o Cloud Logging, siga estes passos:
Estabeleça uma ligação RDP ou SSH com a instância da VM do anfitrião.
Abra o ficheiro de configuração do agente:
Windows
%ProgramFiles%\Google\google-cloud-workload-agent\conf\configuration.json
Linux
/etc/google-cloud-workload-agent/configuration.json
Para a propriedade
log_to_cloud
, atualize o valor parafalse
.Guarde o ficheiro de configuração.
Reinicie o agente para que esta alteração entre em vigor.
Resolução de problemas
As secções seguintes fornecem informações sobre problemas comuns relacionados com a utilização do agente para cargas de trabalho de computação, as respetivas causas e resolução.
Âmbitos de autenticação insuficientes
Problema: se limitar os âmbitos de acesso na instância de VM do anfitrião, os registos do agente para cargas de trabalho do Compute podem apresentar um erro de autorizações do 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: o agente para cargas de trabalho de computação requer âmbitos de acesso mínimos da API Cloud na instância de VM do anfitrião.
Resolução: para resolver este problema, ative os âmbitos de acesso necessários
Falha ao carregar o ficheiro de configuração
Problema: se o ficheiro de configuração tiver valores inválidos, é apresentado o seguinte erro.
"Failed to load configuration","pid":3524,"error":"proto: (line 19:42): unknown field "{field_name}"
Resolução: para resolver este problema, atualize o ficheiro de configuração com os detalhes em Propriedades de configuração
Falha ao inicializar a recolha de dados
Problema: após a instalação do agente, se o ficheiro de configuração não for atualizado, é apresentado o seguinte erro:
"Failed to initialize guest collection","pid":2112,"error":"invalid value for "user_name" "secret_name"
Resolução: para resolver este problema, inicialize a configuração das credenciais usando propriedades de configuração
O que se segue?
- Saiba mais sobre as avaliações da carga de trabalho.