Menyiapkan Agen untuk SQL Server

Workload Manager untuk Microsoft SQL Server menggunakan Agent Google Clouduntuk SQL Server guna mendeteksi dan mengumpulkan metadata untuk mengevaluasi konfigurasi SQL Server Anda. Agen untuk SQL Server diperlukan di semua VM yang menjalankan SQL Server.

Dokumen ini menunjukkan cara menginstal, mengonfigurasi, dan memverifikasi Agen Google Clouduntuk SQL Server.

Prasyarat untuk menginstal agen

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

Memberikan peran IAM ke akun layanan

AgenGoogle Clouduntuk SQL Server 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 SQL Server 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 SQL Server 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

Windows

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

  • Mendownload versi terbaru Agen untuk SQL Server.
  • Membuat layanan Windows bernama google-cloud-sql-server-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-sql-server-agent-windows  https://packages.cloud.google.com/yuck/repos/google-cloud-sql-server-agent-windows
    googet install google-cloud-sql-server-agent
    
  3. Tinjau file konfigurasi yang terletak di bagian %ProgramFiles%\Google\google-cloud-sql-server-agent dan perbarui bagian credential_configuration menggunakan detail di Properti konfigurasi.
  4. Mulai ulang agen agar perubahan ini diterapkan.

Linux

Di Linux, Anda menginstal Agen untuk SQL Server menggunakan perintah pengelolaan paket sistem operasi standar:

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

Perintah pengelolaan paket akan menyelesaikan tugas berikut:

  • Mendownload versi terbaru Agen untuk SQL Server.
  • Membuat agen sebagai layanan systemd Linux, yang bernama google-cloud-sql-server-agent.
  • Mengaktifkan dan memulai layanan, google-cloud-sql-server-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-sql-server-agent.repo << EOM
[google-cloud-sql-server-agent]
name=Google Cloud Agent for SQL Server
baseurl=https://packages.cloud.google.com/yum/repos/google-cloud-sql-server-agent-el$(cat /etc/redhat-release | cut -d . -f 1 | tr -d -c 0-9)
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-sql-server-agent

SLES 15

sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-sql-server-agent-sles15 google-cloud-sql-server-agent
sudo zypper install google-cloud-sql-server-agent

SLES 12

sudo zypper addrepo --refresh https://packages.cloud.google.com/yum/repos/google-cloud-sql-server-agent-sles12 google-cloud-sql-server-agent
sudo zypper install google-cloud-sql-server-agent
  1. Tinjau file konfigurasi yang terletak di bagian \etc\google-cloud-sql-server-agent dan perbarui bagian credential_configuration menggunakan detail di Properti konfigurasi.
  2. Mulai ulang agen agar perubahan ini diterapkan.

Properti konfigurasi

Tabel berikut menjelaskan properti untuk file konfigurasi agen.

Properti
collection_configuration.collect_guest_os_metrics

Boolean

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

collection_configuration.guest_os_metrics_collection_interval_in_seconds

Int

Frekuensi pengumpulan metrik OS Workload Manager dalam hitungan detik. Defaultnya adalah 3600 detik. Anda dapat memperbarui frekuensi pengumpulan. Namun, sebaiknya tetap gunakan nilai default.

collection_configuration.collect_sql_metrics

Boolean

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

collection_configuration.collect_sql_metrics_collection_interval_in_seconds

Int

Frekuensi pengumpulan metrik SQL Server Workload Manager dalam hitungan detik. Defaultnya adalah 3600 detik. Anda dapat memperbarui frekuensi pengumpulan. Namun, sebaiknya tetap gunakan nilai default.

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. Defaultnya adalah true.

disable_log_usage

Boolean

Untuk menonaktifkan logging metrik kesehatan agen, tentukan true. Defaultnya adalah false.

remote_collection

Boolean

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

credential_configuration[].sql_configurations[].user_name

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

credential_configuration[].sql_configurations[].host

String

Nama host SQL Server.

credential_configuration[].sql_configurations[].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.

credential_configuration[].sql_configurations[].port_number

Int

Tentukan port tempat instance SQL Server Anda menerima kueri.

credential_configuration[].remote_win.server_name

String

Alamat IP atau FQDN VM jarak jauh

credential_configuration[].remote_win.guest_user_name

String

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

credential_configuration[].remote_win.guest_secret_name

String

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

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

credential_configuration[].remote_linux.server_name

String

Alamat IP atau FQDN VM jarak jauh

credential_configuration[].remote_linux.guest_user_name

String

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

credential_configuration[].remote_linux.guest_port_number

Int

Tentukan nomor port SSH untuk VM jarak jauh.

credential_configuration[].remote_linux.linux_ssh_private_key_path

String

Jalur ke file kunci pribadi SSH.

credential_configuration[].instance_name

String

Tentukan nama instance VM Compute Engine Anda.

Catatan: Opsional untuk pengumpulan lokal.

credential_configuration[].instance_id

String

Tentukan ID instance VM Compute Engine Anda.

Catatan: Opsional untuk pengumpulan lokal.

Contoh berikut menunjukkan file konfigurasi untuk Agen untuk SQL Server:

Pengumpulan Lokal

{
"collection_configuration": {
  "collect_guest_os_metrics":true,
  "guest_os_metrics_collection_interval_in_seconds":3600,
  "collect_sql_metrics":true,
  "sql_metrics_collection_interval_in_seconds":3600
},
"credential_configuration": [
  {
    "sql_configurations": [
      {
        "host":".",
        "user_name":"db_user_name",
        "secret_name":"db_pwd_secret_name",
        "port_number":1433
      }
    ],
  }
],
"log_level":"INFO",
"log_to_cloud":true,
"collection_timeout_seconds":10,
"max_retries":5,
"retry_interval_in_seconds":3600
}

Pengumpulan Jarak Jauh

{
"collection_configuration": {
  "collect_guest_os_metrics":true,
  "guest_os_metrics_collection_interval_in_seconds":3600,
  "collect_sql_metrics":true,
  "sql_metrics_collection_interval_in_seconds":3600
},
"credential_configuration": [
  {
    "sql_configurations": [
      {
        "host":"sql_server_instance",
        "user_name":"db_user_name",
        "secret_name":"db_pwd_secret_name",
        "port_number":1433
      }
    ],
    "remote_win":{
      "server_name":"sql_server_instance",
      "guest_user_name":"user_name",
      "guest_secret_name":"pwd_secret_name"
    },
    "instance_name":"db01",
    "instance_id":"9999999999999999999"
  }
],
"remote_collection":true,
"log_level":"INFO",
"log_to_cloud":true,
"collection_timeout_seconds":10,
"max_retries":5,
"retry_interval_in_seconds":3600
}

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-sql-server-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-sql-server-agent

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

    google-cloud-sql-server-agent.service - Google Cloud Agent for SQL Server
    Loaded: loaded (/usr/lib/systemd/system/google-cloud-sql-server-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-sql-server-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-sql-server-agent

RHEL

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

SUSE

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

Memulai ulang agen

Jika Agen untuk SQL Server 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-sql-server-agent' -Force

Linux

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    sudo systemctl restart google-cloud-sql-server-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-sql-server-agent

RHEL

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

SLES

  1. Menggunakan SSH untuk terhubung ke mesin host.
  2. Jalankan perintah berikut:
    sudo zypper list-updates -r google-cloud-sql-server-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-sql-server-agent

RHEL

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

SLES

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

Lihat log agen di Cloud Logging

Secara default, log untuk Agen untuk SQL Server 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-sql-server-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-sql-server-agent\configuration.json

    Linux

    /etc/google-cloud-sql-server-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 Agen untuk SQL Server, penyebabnya, dan penyelesaiannya.

Cakupan autentikasi tidak memadai

Masalah: Jika Anda membatasi cakupan akses pada instance VM host, log Agen untuk SQL Server 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 SQL Server 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 selanjutnya