Menyiapkan Agen untuk Workload Komputasi

Workload Manager untuk Microsoft SQL Server menggunakan Agent untuk Compute Workloads Google Clouduntuk mendeteksi dan mengumpulkan metadata guna mengevaluasi konfigurasi SQL Server Anda.

Dokumen ini menunjukkan cara menginstal, mengonfigurasi, dan memverifikasi Agent for Compute Workloads di instance Compute Engine yang menjalankan SQL Server.

Prasyarat untuk menginstal agen

Sebelum menginstal Agen untuk Beban Kerja Compute, Anda harus memastikan bahwa prasyarat berikut terpenuhi beserta membuat evaluasi beban kerja SQL Server.

Memberikan peran IAM ke akun layanan

AgenGoogle Clouduntuk Compute Workloads menggunakan akun layanan Identity and Access Management (IAM) yang dilampirkan ke VM untuk autentikasi dengan Google Cloud dan untuk izin mengakses resource Google Cloud . Untuk pengumpulan metrik validasi Workload Manager, gunakan akun layanan baru yang menyertakan peran IAM berikut:

Untuk menambahkan peran yang diperlukan ke akun layanan Anda, ikuti langkah-langkah berikut:

  1. Di Konsol Google Cloud, buka halaman IAM.

    Buka IAM

  2. Pilih project Google Cloud Anda.

  3. Identifikasi akun layanan tempat Anda ingin menambahkan peran.

    • Jika akun layanan belum ada dalam daftar akun utama, akun layanan tidak memiliki peran yang ditetapkan pada akun tersebut. Klik Add, lalu masukkan alamat email akun layanan.
    • Jika akun layanan sudah ada di daftar utama, berarti akun tersebut sudah memiliki peran. Klik tombol Edit untuk akun layanan yang ingin diedit.
  4. Pilih peran yang diperlukan dari daftar peran yang tersedia:

    • Compute Engine > Viewer Compute
    • Secret Manager > Secret Manager Secret Accessor
  5. Klik Add atau Save untuk menerapkan peran ke akun layanan.

Mengaktifkan akses ke Google Cloud API

Compute Engine merekomendasikan konfigurasi instance VM Anda untuk mengizinkan semua cakupan akses ke semua Cloud API dan hanya menggunakan izin IAM dari akun layanan instance untuk mengontrol akses ke resource Google Cloud . Untuk mengetahui informasi selengkapnya, lihat Membuat VM yang menggunakan akun layanan yang dikelola pengguna.

Jika Anda membatasi akses ke Cloud API, Agen untuk Compute Workloads memerlukan cakupan akses Cloud API minimum berikut pada instance VM host:

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

Untuk mengetahui informasi selengkapnya, lihat Praktik terbaik cakupan.

Jika Anda menjalankan aplikasi SQL Server pada instance VM yang tidak memiliki alamat IP eksternal, Anda harus mengaktifkan Akses Google Pribadi di subnet VM agar Agen untuk Compute Workloads dapat mengakses Google API dan layanan Google. Untuk mempelajari cara mengaktifkan Akses Google Pribadi di subnet, lihat Mengonfigurasi Akses Google Pribadi.

Izin yang diperlukan di SQL Server

Gunakan skrip berikut untuk menetapkan izin yang diperlukan ke akun pengguna yang dikonfigurasi di agen.

    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'' '

Menginstal agen

Untuk menginstal Agen untuk Compute Workloads versi terbaru, selesaikan langkah-langkah berikut:

Windows

Di Windows, instal Agen untuk Workload Komputasi menggunakan perintah pengelolaan paket GooGet, googet. Perintah pengelolaan paket akan menyelesaikan tugas-tugas berikut:

  • Mendownload versi terbaru Agen untuk Workload Komputasi.
  • Membuat layanan Windows bernama google-cloud-workload-agent dan tugas terjadwal yang berjalan setiap menit untuk memeriksa apakah layanan masih berjalan dan, jika perlu, memulai ulang layanan.

Untuk menginstal agen di VM, ikuti langkah-langkah berikut:

  1. Hubungkan ke instance VM Windows menggunakan RDP.
  2. Sebagai administrator, jalankan perintah berikut dari 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. Tinjau file konfigurasi yang terletak di bagian %ProgramFiles%\Google\google-cloud-workload-agent\conf dan perbarui file konfigurasi menggunakan detail di Properti konfigurasi.
  4. Mulai ulang agen agar perubahan ini diterapkan.

Linux

Di Linux, Anda dapat menginstal Agen untuk Compute Workloads menggunakan perintah pengelolaan paket sistem operasi standar:

  • Di RHEL, gunakan perintah yum
  • Di SLES, gunakan perintah zypper
  • Di Debian, gunakan perintah apt

Perintah pengelolaan paket akan menyelesaikan tugas berikut:

  • Mendownload versi terbaru Agen untuk Workload Komputasi.
  • Membuat agen sebagai layanan systemd Linux, yang bernama google-cloud-workload-agent.
  • Mengaktifkan dan memulai layanan, google-cloud-workload-agent.

Untuk menginstal agen di VM, ikuti langkah-langkah berikut:

  1. Buat koneksi SSH ke VM host Anda.
  2. Di terminal, instal agen dengan menjalankan perintah khusus untuk sistem operasi Anda:

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. Tinjau file konfigurasi yang terletak di bagian \etc\google-cloud-workload-agent dan perbarui file konfigurasi menggunakan detail di Properti konfigurasi.
  2. Mulai ulang agen agar perubahan ini diterapkan.

Properti konfigurasi

Tabel berikut menjelaskan properti untuk file konfigurasi agen.

Properti
log_level

String

Untuk menetapkan level logging agen, tambahkan level log. Level log yang tersedia adalah sebagai berikut:
  • DEBUG
  • INFO
  • WARNING
  • ERROR
Default-nya adalah INFO. Jangan ubah level logging kecuali jika Anda diarahkan oleh Cloud Customer Care.
log_to_cloud

Boolean

Untuk mengalihkan log agen ke Cloud Logging, tentukan true. Jumlah defaultnya adalah true

common_discovery.collection_frequency

Duration

Frekuensi pengumpulan untuk layanan penemuan umum, dalam hitungan detik.
Nilai defaultnya adalah 10800s.

agent_properties.log_usage_metrics

Boolean

Untuk mengaktifkan logging metrik kesehatan agen, tetapkan nilai sebagai true. Default-nya adalah false.

sqlserver_configuration.enabled

Boolean

Untuk mengaktifkan pengumpulan metrik SQL Server dalam agen, tetapkan nilai sebagai true. Default-nya adalah false.

sqlserver_configuration.collection_configuration.collect_guest_os_metrics

Boolean

Untuk mengaktifkan pengumpulan metrik OS, tetapkan nilai sebagai true. Default-nya adalah true.
Jangan tetapkan sqlserver_configuration.collection_configuration.collect_guest_os_metrics ke false kecuali jika Anda diarahkan oleh Cloud Customer Care.

sqlserver_configuration.collection_configuration.collect_sql_metrics

Boolean

Untuk mengaktifkan pengumpulan metrik SQL Server, tentukan true. Default-nya adalah true.
Jangan tetapkan sqlserver_configuration.collection_configuration.collect_sql_metrics ke false kecuali jika Anda diarahkan oleh Cloud Customer Care.

sqlserver_configuration.collection_configuration.collection_frequency

Duration

Frekuensi pengumpulan metrik Agen untuk Workload Komputasi, dalam hitungan detik. Default-nya adalah 3600s. Anda dapat memperbarui frekuensi pengumpulan. Namun, sebaiknya tetap gunakan nilai default.

sqlserver_configuration.credential_configurations[].connection_parameters[].host

String

Nama host SQL Server.

sqlserver_configuration.credential_configurations[].connection_parameters[].username

String

Tentukan akun pengguna yang digunakan untuk membuat kueri instance SQL Server. Untuk mengonfigurasi izin akun, tinjau izin yang diperlukan dalam skrip izin dan berikan izin tersebut sesuai dengan kebijakan internal Anda.

Catatan: Jika Anda menggunakan Windows Authentication, pastikan untuk menentukan nama pengguna dalam format berikut: domain-name\\user-name

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

String

ID project tempat secret disimpan. Tetapkan ke string kosong ("") jika secret dan instance VM host ada di project Google Cloud yang sama.

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

String

Untuk memberikan sandi dengan aman bagi akun pengguna database yang digunakan agen untuk mengkueri SQL Server, tentukan nama secret di Secret Manager yang berisi kredensial keamanan untuk akun pengguna database.

Catatan: Secret dan instance VM host harus ada di project Google Cloud yang sama.

sqlserver_configuration.credential_configurations[].connection_parameters[].port

Int

Tentukan port tempat instance SQL Server Anda menerima kueri.

sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.host

String

Alamat IP atau FQDN VM Windows jarak jauh

sqlserver_configuration.credential_configurations[].remote_win.connection_parameters.username

String

Tentukan akun pengguna yang digunakan untuk terhubung ke VM Windows dari jarak jauh.

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

String

Untuk memberikan sandi dengan aman bagi akun pengguna Windows yang digunakan agen untuk terhubung ke VM dari jarak jauh, tentukan nama secret di Secret Manager yang berisi kredensial keamanan untuk akun pengguna database.

Catatan: Secret dan instance VM host harus ada di project Google Cloud yang sama.

sqlserver_configuration.credential_configurations[].local_collection

Boolean

Tentukan true untuk menunjukkan bahwa agen melakukan pengumpulan data lokal. Default-nya adalah true.

sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.host

String

Alamat IP atau FQDN VM Linux jarak jauh.

sqlserver_configuration.credential_configurations[].remote_linux.connection_parameters.username

String

Tentukan akun pengguna yang digunakan untuk terhubung ke VM Linux dari jarak jauh.

sqlserver_configuration.credential_configurations[].remote_linux.connection_parameter.port

Int

Tentukan nomor port SSH untuk VM Linux jarak jauh.

sqlserver_configuration.credential_configurations[].remote_linux.linux_ssh_private_key_path

String

Tentukan jalur ke file kunci pribadi SSH.

sqlserver_configuration.credential_configurations[].vm_properties.instance_name

String

Tentukan nama instance VM Compute Engine Anda.

Catatan: Opsional untuk pengumpulan lokal.

sqlserver_configuration.credential_configurations[].vm_properties.instance_id

String

Tentukan ID instance VM Compute Engine Anda.

Catatan: Opsional untuk pengumpulan lokal.

sqlserver_configuration.collection_timeout

Duration

Waktu tunggu untuk pengumpulan metrik, dalam hitungan detik. Default-nya adalah `10s`.

sqlserver_configuration.max_retries

Int

Jumlah maksimum percobaan ulang saat pengumpulan gagal. Nilai defaultnya adalah `3`.

sqlserver_configuration.retry_frequency

Duration

Tentukan frekuensi saat agen harus mencoba lagi saat pengumpulan gagal. Nilai defaultnya adalah `3600s`.

sqlserver_configuration.remote_collection

Boolean

Tentukan true untuk menunjukkan bahwa agen melakukan pengumpulan data jarak jauh. Defaultnya adalah false.

Contoh berikut menunjukkan file konfigurasi untuk Agen untuk Compute Workloads:

Pengumpulan Lokal

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

Pengumpulan Jarak Jauh

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

Memverifikasi penginstalan agen

Windows

  1. Hubungkan ke instance VM Windows menggunakan RDP.
  2. Jalankan perintah berikut dari PowerShell sebagai administrator:

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

    Jika agen berjalan, statusnya akan menampilkan Running.

Linux

  1. Buat koneksi SSH dengan instance VM host Anda.
  2. Jalankan perintah berikut:

    systemctl status google-cloud-workload-agent

    Jika agen berfungsi dengan baik, output akan berisi active (running). Contoh:

    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
    

Memeriksa versi agen

Untuk memeriksa versi agen Anda, selesaikan langkah-langkah berikut:

Windows

  1. Menggunakan RDP untuk terhubung ke mesin host.
  2. Sebagai administrator, jalankan perintah berikut dari PowerShell:
    googet installed google-cloud-workload-agent

RHEL

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    yum info google-cloud-workload-agent

SUSE

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    zypper info google-cloud-workload-agent

Debian

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    dpkg -s google-cloud-workload-agent | grep version

Memulai ulang agen

Jika Agen untuk Beban Kerja Compute berhenti berfungsi atau Anda memperbarui konfigurasinya, mulai ulang agen.

Pilih sistem operasi Anda, lalu ikuti langkah-langkahnya:

Windows

  1. Menggunakan RDP untuk terhubung ke mesin host.
  2. Sebagai administrator, jalankan perintah berikut dari PowerShell:
    Restart-Service -Name 'google-cloud-workload-agent' -Force

Linux

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    sudo systemctl restart google-cloud-workload-agent

Mengupdate agen

Untuk memastikan Anda memiliki agen versi terbaru, Anda harus memeriksa update secara berkala dan mengupdate agen.

Memeriksa update

Pilih sistem operasi Anda, lalu ikuti langkah-langkahnya:

Windows

  1. Menggunakan RDP untuk terhubung ke mesin host.
  2. Sebagai administrator, jalankan perintah berikut dari PowerShell:
    googet latest google-cloud-workload-agent

RHEL

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    sudo yum check-update google-cloud-workload-agent

SLES

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    sudo zypper list-updates -r google-cloud-workload-agent

Debian

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    sudo apt list google-cloud-workload-agent

Menginstal update

Pilih sistem operasi Anda, lalu ikuti langkah-langkahnya:

Windows

  1. Menggunakan RDP untuk terhubung ke mesin host.
  2. Sebagai administrator, jalankan perintah berikut dari PowerShell:
    googet install google-cloud-workload-agent

RHEL

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    sudo yum --nogpgcheck update google-cloud-workload-agent

SLES

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    sudo zypper --no-gpg-checks update google-cloud-workload-agent

Debian

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    sudo apt-get install google-cloud-workload-agent

Lihat log agen di Cloud Logging

Secara default, log untuk Agen untuk Workload Komputasi dialihkan dari instance VM Anda ke Cloud Logging.

Untuk melihat log agen di Logging, ikuti langkah-langkah berikut:

  1. Di Konsol Google Cloud, buka halaman Logs Explorer.

    Buka Logs Explorer

  2. Buka panel Query.

  3. Dari menu drop-down Resources, pilih Global, lalu klik Apply.

  4. Di editor kueri, masukkan google-cloud-workload-agent.

  5. Klik Run query.

    Anda akan melihat log yang dihasilkan oleh instance agen yang berjalan di semua instance VM Anda. Untuk memfilter log dari mesin tertentu, gunakan filter yang tersedia di antarmuka.

Menonaktifkan log agen di Cloud Logging

Untuk menonaktifkan pengalihan default log agen ke Cloud Logging, ikuti langkah-langkah berikut:

  1. Buat koneksi RDP atau SSH dengan instance VM host Anda.

  2. Buka file konfigurasi agen:

    Windows

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

    Linux

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

  3. Untuk properti log_to_cloud, perbarui nilai menjadi false.

  4. Simpan file konfigurasi.

  5. Mulai ulang agen agar perubahan ini diterapkan.

Pemecahan masalah

Bagian berikut memberikan informasi tentang masalah umum terkait penggunaan Agent for Compute Workloads, penyebabnya, dan penyelesaiannya.

Cakupan autentikasi tidak memadai

Masalah: Jika Anda membatasi cakupan akses pada instance VM host, log Agen untuk Compute Workloads mungkin menampilkan error izin IAM yang tidak memadai.

  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

Penyebab: Agen untuk Compute Workloads memerlukan cakupan akses Cloud API minimum pada instance VM host.

Penyelesaian: Untuk mengatasi masalah ini, aktifkan cakupan akses yang diperlukan

Gagal memuat file konfigurasi

Masalah: Jika file konfigurasi memiliki nilai yang tidak valid, Anda akan melihat error berikut.

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

Penyelesaian: Untuk mengatasi masalah ini, perbarui file konfigurasi menggunakan detail di Properti konfigurasi

Gagal melakukan inisialisasi pengumpulan data

Masalah: Setelah menginstal agen, jika file konfigurasi tidak diperbarui, Anda akan melihat error berikut:

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

Penyelesaian: Untuk mengatasi masalah ini, lakukan inisialisasi konfigurasi kredensial menggunakan Properti konfigurasi

Langkah berikutnya