Memecahkan masalah SQL Insight (pratinjau)
Berlaku untuk: Azure SQL Database Azure SQL Managed Instance
Penting
Wawasan SQL (pratinjau) akan dihentikan pada 31 Desember 2024. Sebaiknya Anda beralih ke pengamat database untuk Azure SQL (pratinjau) atau solusi pemantauan database lain pada tanggal tersebut.
Pengamat database adalah solusi pemantauan yang direkomendasikan untuk skenario yang memerlukan latensi pengumpulan data rendah, pemantauan tingkat estat, data pemantauan komprehensif termasuk detail tingkat kueri, dan dukungan untuk analitik tingkat lanjut pada data pemantauan yang dikumpulkan. Saat ini, pengamat database mendukung Azure SQL Database dan Azure SQL Managed Instance.
Setelah 31 Desember 2024, Wawasan SQL (pratinjau) tidak akan didukung dan tidak akan tersedia di portal Azure. Anda akan menyimpan data pemantauan yang ada yang dikumpulkan oleh SQL Insights di ruang kerja Analitik Log Anda.
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.
Status: Tidak mengumpulkan
Mesin pemantauan memiliki status Tidak mengumpulkan jika tidak ada data di InsightsMetrics untuk SQL dalam 10 menit terakhir.
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:
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.
Konten terkait
- Mendapatkan detail tentang mengaktifkan SQL Insights (pratinjau).