Configurar o agente para cargas de trabalho computacionais

O Workload Manager para Microsoft SQL Server usa o agente do Google Cloudpara cargas de trabalho de computação para detectar e coletar metadados para avaliar as configurações do SQL Server.

Este documento mostra como instalar, configurar e verificar o Agente para cargas de trabalho do Compute Engine 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, é necessário garantir que os pré-requisitos a seguir sejam atendidos e criar uma avaliação de carga de trabalho do SQL Server.

Conceder papéis do IAM à conta de serviço

O agente deGoogle Cloudpara cargas de trabalho de computação usa a conta de serviço do Identity and Access Management (IAM) anexada à VM para autenticação com Google Cloud e permissão para acessar recursos Google Cloud . Para a coleta de métricas de validação do Workload Manager, use uma nova conta de serviço que inclua os seguintes papéis do IAM:

Para adicionar um papel necessário à conta de serviço, siga estas etapas:

  1. No console do Google Cloud, abra a página IAM.

    Acessar o IAM

  2. Selecione seu projeto do Google Cloud.

  3. Identifique a conta de serviço em que você quer incluir um papel.

    • Se a conta de serviço ainda não estiver na lista de principais, ela não terá nenhum papel atribuído a ela. Clique em Adicionar e digite o endereço de e-mail da conta do serviço.
    • Se a conta de serviço estiver na lista de principais, a conta de serviço já terá papéis. Clique no botão Editar da conta de serviço que você quer editar.
  4. Selecione o papel necessário na lista de papéis disponíveis:

    • Compute Engine > Visualizador do Compute
    • Secret Manager > Acessador de secrets do Secret Manager
  5. Clique em Adicionar ou Salvar para aplicar os papéis à conta de serviço.

Ativar o acesso às APIs Google Cloud

O Compute Engine recomenda configurar as instâncias de VM para permitir todos os escopos de acesso a todas as APIs do Cloud e usar apenas as permissões do IAM da conta de serviço da instância para controlar o acesso aos Google Cloud recursos. Para mais informações, consulte Criar uma VM que usa uma conta de serviço gerenciada pelo usuário.

Se você limitar o acesso às APIs do Cloud, o Agente para cargas de trabalho de computação exigirá os seguintes escopos mínimos de acesso da API Cloud na instância da VM do host:

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

Para mais informações, consulte Práticas recomendadas de escopos.

Se você estiver executando aplicativos do SQL Server em uma instância de VM que não tenha um endereço IP externo, ative o Acesso privado do Google na sub-rede da VM para que o agente para cargas de trabalho de computação possa acessar as APIs e os serviços do Google. Para saber como ativar o Acesso privado do Google em uma sub-rede, consulte Como configurar o Acesso privado do Google.

Permissões necessárias no SQL Server

Use o script abaixo para atribuir as permissões necessárias à conta de usuário 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'' '

Instalar o agente

Para instalar a versão mais recente do agente para cargas de trabalho de computação, siga estas etapas:

Windows

No Windows, instale o agente para cargas de trabalho de computação usando o comando de gerenciamento de pacotes GooGet, googet. O comando de gerenciamento de pacotes conclui as seguintes tarefas:

  • Faz o download da versão mais recente do Agente para cargas de trabalho computacionais.
  • Cria um serviço do Windows chamado google-cloud-workload-agent e uma tarefa programada que é executada a cada minuto para verificar se o serviço ainda está em execução e, se necessário, reiniciá-lo.

Para instalar o agente em uma VM, siga estas etapas:

  1. Conecte-se à instância da VM do Windows usando o RDP.
  2. Como administrador, execute os seguintes comandos no 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. Revise o arquivo de configuração localizado em %ProgramFiles%\Google\google-cloud-workload-agent\conf e atualize-o usando os detalhes em Propriedades de configuração.
  4. Reinicie o agente para que essa alteração entre em vigor.

Linux

No Linux, instale o Agente para cargas de trabalho de computação usando os comandos padrão de gerenciamento de pacotes do sistema operacional:

  • No RHEL, use o comando yum.
  • No SLES, use o comando zypper.
  • No Debian, use o comando apt.

O comando de gerenciamento de pacotes conclui as seguintes tarefas:

  • Faz o download da versão mais recente do agente para cargas de trabalho computacionais.
  • Cria o agente como um serviço systemd do Linux, chamado google-cloud-workload-agent.
  • Ativa e inicia o serviço google-cloud-workload-agent.

Para instalar o agente em uma VM, siga estas etapas:

  1. Estabeleça uma conexão SSH com a VM do host.
  2. No seu terminal, instale o agente executando o comando específico para seu sistema operacional:

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
  1. Revise o arquivo de configuração localizado em \etc\google-cloud-workload-agent e atualize-o usando os detalhes em Propriedades de configuração.
  2. Reinicie o agente para que essa alteração entre em vigor.

Propriedades de configuração

A tabela a seguir descreve as propriedades do arquivo de configuração do agente.

Propriedades
log_level

String

Para definir o nível de geração de registros do agente, adicione-os. Os níveis de registro disponíveis são os seguintes:
  • DEBUG
  • INFO
  • WARNING
  • ERROR
O padrão é INFO. Não altere o nível de geração de registros, a menos que seja instruído pelo Cloud Customer Care.
log_to_cloud

Boolean

Para redirecionar os registros do agente para o Cloud Logging, especifique true. O padrão é true.

common_discovery.collection_frequency

Duration

Frequência de coleta do serviço de descoberta comum, em segundos.
O valor padrão é 10800s.

agent_properties.log_usage_metrics

Boolean

Para ativar a geração de registros das métricas de integridade do agente, defina o valor como true. O padrão é false.

sqlserver_configuration.enabled

Boolean

Para ativar a coleta de métricas do SQL Server no agente, defina o valor como true. O padrão é false.

sqlserver_configuration.collection_configuration.collect_guest_os_metrics

Boolean

Para ativar a coleta de métricas do SO, defina o valor como true. O padrão é true.
Não defina sqlserver_configuration.collection_configuration.collect_guest_os_metrics como false, a menos que isso seja orientado pelo Cloud Customer Care.

sqlserver_configuration.collection_configuration.collect_sql_metrics

Boolean

Para ativar a coleta de métricas do SQL Server, especifique true. O padrão é true.
Não defina sqlserver_configuration.collection_configuration.collect_sql_metrics como false, a menos que isso seja orientado pelo Cloud Customer Care.

sqlserver_configuration.collection_configuration.collection_frequency

Duration

Frequência de coleta de métricas do agente para cargas de trabalho computacionais em segundos. O padrão é 3600s. Você pode atualizar a frequência de coleta. No entanto, recomendamos manter o valor padrão.

sqlserver_configuration.credential_configurations[].connection_parameters[].host

String

O nome do host do SQL Server.

sqlserver_configuration.credential_configurations[].connection_parameters[].username

String

Especifique a conta de usuário usada para consultar a instância do SQL Server. Para configurar as permissões da conta, revise as permissões necessárias no script da permissão e conceda-as de acordo com as políticas internas.

Observação:se você estiver usando a autenticação do Windows, especifique o nome de usuário no seguinte formato: domain-name\\user-name

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

String

O ID do projeto em que o segredo está armazenado. Defina-o como uma string vazia ("") se o secret e a instância de VM do host existirem no mesmo projeto do Google Cloud.

sqlserver_configuration.credential_configurations[].connection_parameters[].secret.secret_name

String

Para fornecer com segurança a senha da conta de usuário do banco de dados que o agente usa para consultar o SQL Server, especifique o nome do secret no Secret Manager que contém as credenciais de segurança para a conta de usuário do banco de dados.

Observação:o secret e a instância de VM do host precisam existir no mesmo projeto do Google Cloud.

sqlserver_configuration.credential_configurations[].connection_parameters[].port

Int

Especifique a porta em que a instância do SQL Server aceita consultas.

sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.host

String

Endereço IP ou FQDN da VM remota do Windows

sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.username

String

Especifique a conta de usuário usada para se conectar remotamente à VM do Windows.

sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.secret.secret_name

String

Para fornecer com segurança a senha da conta de usuário do Windows que o agente usa para se conectar remotamente à VM, especifique o nome do secret no Secret Manager que contém as credenciais de segurança da conta de usuário do banco de dados.

Observação:o secret e a instância de VM do host precisam existir no mesmo projeto do Google Cloud.

sqlserver_configuration.credential_configurations[].local_collection

Boolean

Especifique true para indicar que o agente está fazendo a coleta de dados local. O padrão é true.

sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.host

String

Endereço IP ou FQDN da VM Linux remota.

sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.username

String

Especifique a conta de usuário usada para se conectar remotamente à VM do Linux.

sqlserver_configuration.credential_configurations[].remote_linux.connection_parameter.port

Int

Especifique o número da porta SSH para a VM Linux remota.

sqlserver_configuration.credential_configurations[].remote_linux.linux_ssh_private_key_path

String

Especifique o caminho para o arquivo de chave privada SSH.

sqlserver_configuration.credential_configurations[].vm_properties.instance_name

String

Especifique o nome da sua instância de VM do Compute Engine.

Observação:opcional para a coleta local.

sqlserver_configuration.credential_configurations[].vm_properties.instance_id

String

Especifique o ID da sua instância de VM do Compute Engine.

Observação:opcional para a coleta local.

sqlserver_configuration.collection_timeout

Duration

O tempo limite para a coleta de métricas, em segundos. O padrão é "10s".

sqlserver_configuration.max_retries

Int

O número máximo de novas tentativas quando ocorre uma coleta com falha. O valor padrão é "3".

sqlserver_configuration.retry_frequency

Duration

Especifique a frequência com que o agente precisa tentar novamente quando uma coleta falha. O valor padrão é "3600s".

sqlserver_configuration.remote_collection

Boolean

Especifique true para indicar que o agente está fazendo a coleta de dados remota. O padrão é false.

O exemplo a seguir mostra um arquivo de configuração do Agente para cargas de trabalho de computação:

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

Coleta 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 a instalação do agente

Windows

  1. Conecte-se à instância da VM do Windows usando o RDP.
  2. Execute o seguinte comando no PowerShell como administrador:

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

    Se o agente estiver em execução, o status mostrará Running.

Linux

  1. Estabeleça uma conexão SSH com a instância de VM do host.
  2. Execute este comando:

    systemctl status google-cloud-workload-agent

    Se o agente estiver funcionando corretamente, a saída conterá active (running). 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
    

Verificar a versão do agente

Para acessar a versão do agente, siga estas etapas:

Windows

  1. Use o RDP para se conectar à máquina host.
  2. Como administrador, emita o seguinte comando no PowerShell:
    googet installed google-cloud-workload-agent

RHEL

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    yum info google-cloud-workload-agent

SUSE

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    zypper info google-cloud-workload-agent

Debian

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    dpkg -s google-cloud-workload-agent | grep version

Reinicie o agente.

Se o agente para cargas de trabalho do Compute parar de funcionar ou você atualizar a configuração, reinicie o agente.

Selecione seu sistema operacional e siga estas etapas:

Windows

  1. Use o RDP para se conectar à máquina host.
  2. Como administrador, emita o seguinte comando no PowerShell:
    Restart-Service -Name 'google-cloud-workload-agent' -Force

Linux

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    sudo systemctl restart google-cloud-workload-agent

Atualizar o agente

Para garantir que você tenha a versão mais recente do agente, é necessário verificar se há atualizações periodicamente e atualizar o agente.

Verificar se há atualizações

Selecione seu sistema operacional e siga estas etapas:

Windows

  1. Use o RDP para se conectar à máquina host.
  2. Como administrador, emita o seguinte comando no PowerShell:
    googet latest google-cloud-workload-agent

RHEL

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    sudo yum check-update google-cloud-workload-agent

SLES

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    sudo zypper list-updates -r google-cloud-workload-agent

Debian

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    sudo apt list google-cloud-workload-agent

Instalar uma atualização

Selecione seu sistema operacional e siga estas etapas:

Windows

  1. Use o RDP para se conectar à máquina host.
  2. Como administrador, emita o seguinte comando no PowerShell:
    googet install google-cloud-workload-agent

RHEL

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    sudo yum --nogpgcheck update google-cloud-workload-agent

SLES

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    sudo zypper --no-gpg-checks update google-cloud-workload-agent

Debian

  1. Use o SSH para se conectar à máquina host.
  2. Execute este comando:
    sudo apt-get install google-cloud-workload-agent

Ver os registros do agente no Cloud Logging

Por padrão, os registros do agente para cargas de trabalho de computação são redirecionados das instâncias de VM para o Cloud Logging.

Para ver os registros do agente no Logging, siga estas etapas:

  1. No console do Google Cloud, acesse a página do Explorador de registros.

    Acessar o "Explorador de registros"

  2. Acesse o painel Consulta.

  3. No menu suspenso Recursos, selecione Global e clique em Aplicar.

  4. No editor de consultas, insira google-cloud-workload-agent.

  5. Clique em Executar consulta.

    Você vai encontrar os registros gerados pelas instâncias do agente em execução em todas as instâncias de VM. Para filtrar os registros de uma máquina específica, use os filtros disponíveis na interface.

Desativar os registros do agente no Cloud Logging

Para desativar o redirecionamento padrão dos registros do agente para o Cloud Logging, siga estas etapas:

  1. Estabeleça uma conexão RDP ou SSH com a instância de VM do host.

  2. Abra o arquivo de configuração do agente:

    Windows

    %ProgramFiles%\Google\google-cloud-workload-agent\conf\configuration.json

    Linux

    /etc/google-cloud-workload-agent/configuration.json

  3. Para a propriedade log_to_cloud, atualize o valor para false.

  4. Salve o arquivo de configuração.

  5. Reinicie o agente para que essa alteração entre em vigor.

Solução de problemas

As seções a seguir fornecem informações sobre problemas comuns relacionados ao uso do Agente para cargas de trabalho de computação, suas causas e resolução.

Escopos de autenticação insuficientes

Problema:se você limitar os escopos de acesso na instância de VM do host, o agente para registros de cargas de trabalho do Compute poderá mostrar um erro de permissões 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:o agente para cargas de trabalho de computação exige escopos de acesso mínimos da API Cloud na instância da VM do host.

Solução:para resolver esse problema, ative os escopos de acesso necessários.

Falha ao carregar o arquivo de configuração

Problema:se o arquivo de configuração tiver valores inválidos, o seguinte erro vai aparecer.

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

Solução:para resolver esse problema, atualize o arquivo de configuração usando os detalhes em Propriedades de configuração.

Falha ao inicializar a coleta de dados

Problema:depois de instalar o agente, se o arquivo de configuração não for atualizado, você vai receber o seguinte erro:

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

Solução:para resolver esse problema, inicialize a configuração de credenciais usando as Propriedades de configuração.

A seguir