Memecahkan masalah SQL Insight (pratinjau)

Berlaku untuk:Azure SQL DatabaseAzure SQL Managed Instance

Untuk memecahkan masalah pengumpulan data di SQL Insights (pratinjau), periksa status mesin pemantau pada tab Kelola profil. Statusnya adalah:

  • Mengumpulkan
  • Tidak mengumpulkan
  • Mengumpulkan dengan kesalahan

Pilih status untuk melihat log dan detail selengkapnya yang mungkin membantu Anda menyelesaikan masalah.

Cuplikan layar yang menampilkan status mesin pemantauan.

Status: Tidak mengumpulkan

Mesin pemantauan memiliki status Tidak mengumpulkan jika tidak ada data di InsightsMetrics untuk SQL dalam 10 menit terakhir.

Catatan

Pastikan bahwa Anda mencoba mengumpulkan data dari versi SQL yang didukung. Misalnya, mencoba mengumpulkan data dengan profil dan string koneksi yang valid tetapi dari versi Azure SQL Database yang tidak didukung akan menghasilkan status Tidak mengumpulkan.

SQL Insights (pratinjau) menggunakan kueri berikut untuk mengambil informasi ini:

InsightsMetrics 
    | extend Tags = todynamic(Tags) 
    | extend SqlInstance = tostring(Tags.sql_instance) 
    | where TimeGenerated > ago(10m) and isnotempty(SqlInstance) and Namespace == 'sqlserver_server_properties' and Name == 'uptime' 

Periksa apakah ada log dari Telegraf yang membantu mengidentifikasi akar penyebab masalah. Jika terdapat entri log, Anda dapat memilih Tidak mengumpulkan dan memeriksa log dan info pemecahan masalah untuk masalah umum.

Jika tidak ada entri log, periksa log pada mesin virtual pemantauan untuk layanan berikut yang dipasang oleh dua ekstensi mesin virtual:

  • Microsoft.Azure.Monitor.AzureMonitorLinuxAgent
    • Layanan: mdsd
  • Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension
    • Layanan: wli
    • Layanan: telegraf
    • Layanan: fasih-bit
    • Log ekstensi untuk memeriksa kegagalan penginstalan: /var/log/azure/Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension/wlilogs.log

Log layanan wli

Log layanan: /var/log/wli.log

Untuk melihat log terbaru: tail -n 100 -f /var/log/wli.log

Jika Anda melihat log kesalahan berikut, ada masalah dengan mdsd layanan: 2021-01-27T06:09:28Z [Error] Failed to get config data. Error message: dial unix /var/run/mdsd/default_fluent.socket: connect: no such file or directory .

Log layanan telegraf

Log layanan: /var/log/telegraf/telegraf.log

Untuk melihat log terbaru: tail -n 100 -f /var/log/ms-telegraf/telegraf.log

Untuk melihat log kesalahan dan peringatan terbaru: tail -n 1000 /var/log/ms-telegraf/telegraf.log | grep "E\!\|W!"

Konfigurasi yang digunakan oleh telegraf dihasilkan oleh layanan wli dan ditempatkan di: /etc/ms-telegraf/telegraf.d/wli

Jika konfigurasi yang buruk dihasilkan, layanan ms-telegraf mungkin gagal memulai. Periksa apakah layanan ms-telegraf berjalan dengan menggunakan perintah ini: service ms-telegraf status

Untuk melihat pesan kesalahan dari layanan telegraf, jalankan telegraf secara manual menggunakan perintah berikut:

/usr/bin/ms-telegraf --config /etc/ms-telegraf/telegraf.conf --config-directory /etc/ms-telegraf/telegraf.d/wli --test 

Log layanan mdsd

Periksa prasyarat untuk agen Azure Monitor.

Sebelum Azure Monitoring Agent v1.12, log layanan mdsd terletak di:

  • /var/log/mdsd.err
  • /var/log/mdsd.warn
  • /var/log/mdsd.info

Dari v1.12 dan seterusnya, log layanan terletak di:

  • /var/opt/microsoft/azuremonitoragent/log/
  • /etc/opt/microsoft/azuremonitoragent/

Untuk melihat kesalahan terbaru: tail -n 100 -f /var/log/mdsd.err

Jika Anda perlu menghubungi dukungan, kumpulkan informasi berikut:

  • Log di /var/log/azure/Microsoft.Azure.Monitor.AzureMonitorLinuxAgent/
  • Log di /var/log/waagent.log
  • Log di /var/log/mdsd*, atau log di /var/opt/microsoft/azuremonitoragent/log/ dan /etc/opt/microsoft/azuremonitoragent/.
  • File di /etc/mdsd.d/
  • File /etc/default/mdsd

Konfigurasi komputer virtual pemantauan tidak valid

Salah satu penyebab status Tidak mengumpulkan adalah konfigurasi untuk mesin virtual pemantauan tidak valid. Berikut bentuk konfigurasi paling sederhana:

{
    "version": 1,
    "secrets": {
        "telegrafPassword": {
            "keyvault": "https://mykeyvault.vault.azure.net/",
            "name": "sqlPassword"
        }
    },
    "parameters": {
        "sqlAzureConnections": [
            "Server=mysqlserver.database.windows.net;Port=1433;Database=mydatabase;User Id=telegraf;Password=$telegrafPassword;"
        ],
        "sqlVmConnections": [
        ],
        "sqlManagedInstanceConnections": [
        ]
    }
}

Konfigurasi ini menentukan token pengganti yang akan digunakan dalam konfigurasi profil pada komputer virtual pemantauan Anda. Hal ini juga memungkinkan Anda untuk mereferensikan rahasia dari Azure Key Vault, sehingga Anda tidak harus menyimpan nilai rahasia dalam konfigurasi apa pun (yang sangat disarankan).

Dalam konfigurasi ini, string koneksi database menyertakan token pengganti $telegrafPassword. SQL Insights menggantikan token ini dengan kata sandi autentikasi SQL yang diambil dari Key Vault. URI Key Vault ditentukan di bagian konfigurasi telegrafPassword di bawah secrets.

Rahasia

Rahasia adalah token yang nilainya diambil saat runtime dari brankas kunci Azure. Rahasia ditentukan oleh pasangan nilai yang menyertakan URI brankas kunci dan nama rahasia. Definisi ini memungkinkan SQL Insights untuk mendapatkan nilai rahasia saat runtime dan menggunakannya dalam konfigurasi hilir.

Anda dapat menentukan sebanyak mungkin rahasia yang diperlukan, termasuk rahasia yang disimpan di beberapa brankas kunci.

   "secrets": {
        "<secret-token-name-1>": {
            "keyvault": "<key-vault-uri>",
            "name": "<key-vault-secret-name>"
        },
        "<secret-token-name-2>": {
            "keyvault": "<key-vault-uri-2>",
            "name": "<key-vault-secret-name-2>"
        }
    }

Izin untuk mengakses brankas kunci disediakan untuk identitas terkelola pada mesin virtual pemantauan. Identitas terkelola ini harus diberikan Dapatkan izin semua rahasia Key Vault yang dirujuk dalam konfigurasi profil pemantauan. Ini dapat dilakukan dari portal Microsoft Azure, PowerShell, Azure CLI, atau templat Azure Resource Manager.

Parameter

Parameter adalah token yang dapat direferensikan dalam konfigurasi profil melalui templat JSON. Parameter memiliki nama dan nilai. Nilai dapat berupa semua jenis JSON, termasuk objek dan larik. Parameter direferensikan dalam konfigurasi profil dengan namanya, menggunakan konvensi ini: .Parameters.<name>.

Parameter dapat mereferensikan rahasia di Key Vault menggunakan konvensi yang sama. Misalnya, sqlAzureConnections mereferensikan telegrafPassword rahasia menggunakan konvensi $telegrafPassword.

Saat runtime, semua parameter dan rahasia akan diselesaikan dan digabungkan dengan konfigurasi profil untuk membangun konfigurasi aktual yang akan digunakan pada mesin.

Catatan

Nama parameter sqlAzureConnections, sqlVmConnections, dan sqlManagedInstanceConnections semuanya diperlukan dalam konfigurasi, meskipun Anda tidak menyediakan string koneksi untuk beberapa di antaranya.

Status: Mengumpulkan dengan kesalahan

Komputer pemantauan akan memiliki status Mengumpulkan dengan kesalahan jika setidaknya ada satu log InsightsMetrics terbaru tetapi ada juga kesalahan dalam Operation tabel.

SQL Insights menggunakan kueri berikut untuk mengambil informasi ini:

InsightsMetrics 
    | extend Tags = todynamic(Tags) 
    | extend SqlInstance = tostring(Tags.sql_instance) 
    | where TimeGenerated > ago(240m) and isnotempty(SqlInstance) and Namespace == 'sqlserver_server_properties' and Name == 'uptime' 
WorkloadDiagnosticLogs
| summarize Errors = countif(Status == 'Error')

Catatan

Jika Anda tidak melihat data apa pun di WorkloadDiagnosticLogs, Anda mungkin perlu memperbarui profil pemantauan. Dari dalam SQL Insights di portal Microsoft Azure, pilih Kelola profil>Edit profil>Perbarui profil pemantauan.

Untuk kasus umum, kami memberikan kiat pemecahan masalah dalam tampilan log kami:

Cuplikan layar halaman Azure Monitor untuk Memecahkan Masalah log SQL di portal Azure.

Masalah umum

Selama pratinjau SQL Insights, Anda mungkin mengalami masalah umum berikut ini.

  • Kesalahan 'Gagal masuk' saat menyambungkan ke server atau database

    Menggunakan karakter khusus tertentu dalam sandi autentikasi SQL yang disimpan dalam konfigurasi mesin virtual pemantauan atau di Key Vault dapat mencegah mesin virtual pemantauan tersambung ke server atau database SQL. Kumpulan karakter ini mencakup tanda kurung, kurung siku dan kurung kurawal, tanda dolar, garis miring ke depan dan belakang, dan titik ([ { ( ) } ] $ \ / .).

  • Spasi dalam atribut string koneksi database dapat diganti dengan karakter khusus, yang menyebabkan kegagalan koneksi database. Misalnya, jika spasi dalam atribut User Id diganti dengan karakter khusus, sambungan akan gagal dengan kesalahan Gagal masuk untuk pengguna ''. Untuk mengatasinya, edit konfigurasi profil pemantauan, dan hapus setiap karakter khusus yang muncul sebagai pengganti spasi. Beberapa karakter khusus mungkin terlihat tidak dapat dibedakan dari spasi, jadi Anda mungkin ingin menghapus setiap karakter spasi, mengetiknya lagi, dan menyimpan konfigurasi.

  • Pengumpulan dan visualisasi data mungkin tidak berfungsi jika nama komputer OS VM pemantauan berbeda dari nama VM pemantauan.

  • Pesan "Ekstensi WLI pada komputer ini berada di bawah versi yang direkomendasikan [...]" mungkin salah muncul bahkan ketika ekstensi WLI sudah diperbarui.

  • Pengumpulan dan visualisasi data mungkin tidak berfungsi jika nama komputer OS VM tempat SQL Server diinstal tidak cocok dengan nama server dalam metadata SQL Server. Untuk informasi selengkapnya, lihat Mengganti nama komputer yang menghosting instans SQL Server yang berdiri sendiri.

Praktik terbaik

  • Pastikan akses dari mesin virtual pemantauan ke Key Vault tersedia. Jika Anda menggunakan Key Vault untuk menyimpan kata sandi autentikasi SQL (yang sangat disarankan), Anda perlu memastikan bahwa konfigurasi jaringan dan keamanan memungkinkan mesin virtual pemantauan mengakses Key Vault. Untuk informasi selengkapnya, lihat Mengakses Azure Key Vault di balik firewall dan Mengonfigurasi pengaturan jaringan Azure Key Vault. Untuk memverifikasi bahwa mesin virtual pemantauan dapat mengakses Key Vault, Anda dapat menjalankan perintah berikut dari sesi SSH yang terhubung ke mesin virtual. Anda harus berhasil mengambil token akses dan rahasianya. Ganti [YOUR-KEY-VAULT-URL], [YOUR-KEY-VAULT-SECRET], dan [YOUR-KEY-VAULT-ACCESS-TOKEN] dengan nilai sebenarnya.

    # Get an access token for accessing Key Vault secrets
    curl 'http://[YOUR-KEY-VAULT-URL]/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true
    
    # Get Key Vault secret
    curl 'https://[YOUR-KEY-VAULT-URL]/secrets/[YOUR-KEY-VAULT-SECRET]?api-version=2016-10-01' -H "Authorization: Bearer [YOUR-KEY-VAULT-ACCESS-TOKEN]"
    
  • Perbarui perangkat lunak pada mesin virtual pemantauan. Kami sangat menyarankan agar Anda memperbarui sistem operasi dan ekstensi pada mesin virtual pemantauan secara berkala. Jika ekstensi mendukung peningkatan otomatis, aktifkan opsi tersebut.

  • Simpan konfigurasi sebelumnya. Jika ingin membuat perubahan pada profil pemantauan atau pemantauan konfigurasi mesin virtual, sebaiknya simpan salinan data konfigurasi yang sedang digunakan terlebih dahulu. Dari halaman SQL Insights di portal Microsoft Azure, pilih Kelola profil>Edit profil, dan salin teks dari Konfigurasi Profil Pemantauan Saat Ini ke file. Demikian pula, pilih Kelola profil>Konfigurasi untuk mesin virtual pemantauan, dan salin teks dari Konfigurasi pemantauan saat ini ke file. Jika kesalahan pengumpulan data terjadi setelah perubahan konfigurasi, Anda dapat membandingkan konfigurasi baru dengan konfigurasi kerja yang diketahui menggunakan alat perbedaan teks untuk membantu Anda menemukan perubahan apa pun yang mungkin memengaruhi pengumpulan.

Langkah berikutnya