SQL İçgörüleri (önizleme) sorunlarını giderme
Şunlar için geçerlidir: Azure SQL Veritabanı Azure SQL Yönetilen Örneği
Önemli
SQL İçgörüleri (önizleme) 31 Aralık 2024'te kullanımdan kaldırılacaktır. Bu tarihe kadar Azure SQL için veritabanı izleyicisine (önizleme) veya başka bir veritabanı izleme çözümüne geçmenizi öneririz.
Veritabanı izleyicisi, düşük veri toplama gecikmesi, varlık düzeyinde izleme, sorgu düzeyi ayrıntıları da dahil olmak üzere kapsamlı izleme verileri ve toplanan izleme verileri üzerinde gelişmiş analiz desteği gerektiren senaryolar için önerilen izleme çözümüdür. Şu anda veritabanı izleyicisi Azure SQL Veritabanı ve Azure SQL Yönetilen Örneği destekler.
31 Aralık 2024'tan sonra SQL Insights (önizleme) desteklenmez ve Azure portalında kullanılamaz. SQL Insights tarafından toplanan mevcut izleme verilerini Log Analytics çalışma alanınızda saklarsınız.
SQL Insights'ta (önizleme) veri toplama sorunlarını gidermek için Profili yönet sekmesinde izleme makinesinin durumunu denetleyin. Durumlar şunlardır:
- Toplama
- Toplenmiyor
- Hatalarla toplama
Sorunu çözmenize yardımcı olabilecek günlükleri ve diğer ayrıntıları görmek için durumu seçin.
Durum: Toplenmiyor
son 10 dakika içinde SQL için InsightsMetrics'te veri yoksa izleme makinesi Toplamıyor durumuna sahiptir.
Desteklenen bir SQL sürümünden veri toplamaya çalıştığınızdan emin olun. Örneğin, geçerli bir profil ve bağlantı dizesi ancak desteklenmeyen bir Azure SQL Veritabanı sürümünden veri toplamaya çalışmak Toplanıyor durumuna neden olur.
SQL Insights (önizleme), bu bilgileri almak için aşağıdaki sorguyu kullanır:
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'
Telegraf'tan gelen günlüklerin sorunun kök nedenini belirlemeye yardımcı olup olmadığını denetleyin. Günlük girdileri varsa, Toplanıyor'ı seçip sık karşılaşılan sorunlar için günlükleri ve sorun giderme bilgilerini kontrol edebilirsiniz.
Günlük girdisi yoksa, iki sanal makine uzantısı tarafından yüklenen aşağıdaki hizmetler için izleme sanal makinesindeki günlükleri denetleyin:
Microsoft.Azure.Monitor.AzureMonitorLinuxAgent
- Hizmet: mdsd
Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension
- Hizmet: wli
- Hizmet: telegraf
- Hizmet: fluent bit
- Yükleme hatalarını denetlemek için uzantı günlüğü:
/var/log/azure/Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension/wlilogs.log
wli hizmet günlükleri
Hizmet günlükleri: /var/log/wli.log
Son günlükleri görmek için: tail -n 100 -f /var/log/wli.log
Aşağıdaki hata günlüğünü görürseniz, hizmetle mdsd
ilgili bir sorun vardır: 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
.
Telegraf hizmet günlükleri
Hizmet günlükleri: /var/log/telegraf/telegraf.log
Son günlükleri görmek için: tail -n 100 -f /var/log/ms-telegraf/telegraf.log
Son hata ve uyarı günlüklerini görmek için: tail -n 1000 /var/log/ms-telegraf/telegraf.log | grep "E\!\|W!"
Telegraf'ın kullandığı yapılandırma wli hizmeti tarafından oluşturulur ve içine yerleştirilir: /etc/ms-telegraf/telegraf.d/wli
Hatalı bir yapılandırma oluşturulursa ms-telegraf hizmeti başlatılamaz. Şu komutu kullanarak ms-telegraf hizmetinin çalışıp çalışmadığını denetleyin: service ms-telegraf status
Telegraf hizmetinden gelen hata iletilerini görmek için aşağıdaki komutu kullanarak el ile çalıştırın:
/usr/bin/ms-telegraf --config /etc/ms-telegraf/telegraf.conf --config-directory /etc/ms-telegraf/telegraf.d/wli --test
mdsd hizmet günlükleri
Azure İzleyici aracısı için önkoşulları denetleyin.
Azure monitoring Agent v1.12'ye başlamadan önce mdsd hizmet günlükleri şu konumda bulunuyordu:
/var/log/mdsd.err
/var/log/mdsd.warn
/var/log/mdsd.info
v1.12'den itibaren hizmet günlükleri şu konumda bulunur:
/var/opt/microsoft/azuremonitoragent/log/
/etc/opt/microsoft/azuremonitoragent/
Son hataları görmek için: tail -n 100 -f /var/log/mdsd.err
Desteğe başvurmanız gerekiyorsa aşağıdaki bilgileri toplayın:
- Oturum açar
/var/log/azure/Microsoft.Azure.Monitor.AzureMonitorLinuxAgent/
/var/log/waagent.log
dosyasında günlüğe kaydetme- içindeki
/var/log/mdsd*
veya ve/etc/opt/microsoft/azuremonitoragent/
içindeki/var/opt/microsoft/azuremonitoragent/log/
günlükleri günlüğe kaydeder. - içindeki dosyalar
/etc/mdsd.d/
- Dosya
/etc/default/mdsd
Geçersiz izleme sanal makine yapılandırması
Toplanmıyor durumunun bir nedeni, izleme sanal makinesi için geçersiz bir yapılandırmadır. Yapılandırmanın en basit biçimi aşağıdadır:
{
"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": [
]
}
}
Bu yapılandırma, izleme sanal makinenizdeki profil yapılandırmasında kullanılacak yedek belirteçleri belirtir. Ayrıca Azure Key Vault'tan gizli dizilere başvurmanıza da olanak tanır, böylece gizli dizi değerlerini herhangi bir yapılandırmada tutmanız gerekmez (bunu kesinlikle öneririz).
Bu yapılandırmada veritabanı bağlantı dizesi bir $telegrafPassword
değiştirme belirteci içerir. SQL Insights, bu belirteci Key Vault'tan alınan SQL kimlik doğrulama parolası ile değiştirir. Key Vault URI'si altındaki secrets
yapılandırma bölümünde belirtilirtelegrafPassword
.
Gizli Diziler
Gizli diziler, değerleri bir Azure anahtar kasasından çalışma zamanında alınan belirteçlerdir. Gizli dizi, anahtar kasası URI'si ve gizli dizi adı içeren bir değer çifti tarafından tanımlanır. Bu tanım, SQL Insights'ın gizli dizi değerini çalışma zamanında almasına ve aşağı akış yapılandırmasında kullanmasına olanak tanır.
Birden çok anahtar kasasında depolanan gizli diziler de dahil olmak üzere gerektiği kadar gizli dizi tanımlayabilirsiniz.
"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>"
}
}
Anahtar kasasına erişim izni, izleme sanal makinesindeki yönetilen bir kimliğe sağlanır. Bu yönetilen kimliğe izleme profili yapılandırmasında başvurulan tüm Key Vault gizli dizilerinde Alma izni verilmelidir. Bu işlem Azure portalından, PowerShell'den, Azure CLI'dan veya bir Azure Resource Manager şablonundan yapılabilir.
Parametreler
Parametreler, JSON şablonları aracılığıyla profil yapılandırmasında başvurulabilen belirteçlerdir. Parametrelerin bir adı ve değeri vardır. Değerler, nesneler ve diziler de dahil olmak üzere herhangi bir JSON türü olabilir. Profil yapılandırmasında şu kural kullanılarak bir parametreye adıyla başvurulur: .Parameters.<name>
.
Parametreler aynı kuralı kullanarak Key Vault'taki gizli dizilere başvurabilir. Örneğin, sqlAzureConnections
kuralını $telegrafPassword
kullanarak gizli diziye telegrafPassword
başvurur.
Çalışma zamanında tüm parametreler ve gizli diziler çözümlenir ve makinede kullanılacak gerçek yapılandırmayı oluşturmak için profil yapılandırmasıyla birleştirilir.
Not
Bazıları için bağlantı dizesi sağlamasanız bile, , ve sqlManagedInstanceConnections
parametrelerinin tümü sqlAzureConnections
sqlVmConnections
yapılandırmada gereklidir.
Durum: Hatalarla toplama
en az bir son InsightsMetrics günlüğü varsa ancak tabloda da hatalar Operation
varsa izleme makinesi Hatalarla toplanıyor durumuna sahip olur.
SQL Insights bu bilgileri almak için aşağıdaki sorguları kullanır:
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')
Not
içinde WorkloadDiagnosticLogs
veri görmüyorsanız izleme profilinizi güncelleştirmeniz gerekebilir. Azure portalında SQL Insights'ın içinden Profili yönet Profili>>düzenle Güncelleştirme izleme profili'ne tıklayın.
Yaygın durumlar için günlükler görünümümüzde sorun giderme ipuçları sağlıyoruz:
Bilinen sorunlar
SQL Insights önizlemesi sırasında aşağıdaki bilinen sorunlarla karşılaşabilirsiniz.
Sunucuya veya veritabanına bağlanırken 'Oturum açma başarısız oldu' hatası
İzleme VM yapılandırmasına veya Key Vault'a kaydedilen SQL kimlik doğrulama parolalarında belirli özel karakterlerin kullanılması, izleme VM'sinin bir SQL sunucusuna veya veritabanına bağlanmasını engelleyebilir. Bu karakter kümesi parantezler, kare ve küme ayraçları, dolar işareti, ileri ve geri eğik çizgileri ve nokta (
[ { ( ) } ] $ \ / .
) içerir.Veritabanı bağlantı dizesi özniteliklerindeki boşluklar özel karakterlerle değiştirilip veritabanı bağlantı hatalarına yol açabilir. Örneğin, öznitelikteki
User Id
alan özel bir karakterle değiştirilirse, '' kullanıcısı için oturum açma başarısız oldu hatasıyla bağlantılar başarısız olur. Sorunu çözmek için izleme profili yapılandırmasını düzenleyin ve boşluk yerine görünen tüm özel karakterleri silin. Bazı özel karakterler boşluktan ayırt edilemez görünebilir, bu nedenle her boşluk karakterini silmek, yeniden yazmak ve yapılandırmayı kaydetmek isteyebilirsiniz.İzleme VM'sinin işletim sistemi bilgisayar adı izleme VM adından farklıysa veri toplama ve görselleştirme çalışmayabilir.
"Bu makinedeki WLI uzantısı önerilen [...] sürümünün altında" iletisi, WLI uzantısı güncel olduğunda bile yanlış görünebilir.
SQL Server'ın yüklü olduğu VM'nin işletim sistemi bilgisayar adı SQL Server meta verilerindeki sunucu adıyla eşleşmiyorsa veri toplama ve görselleştirme çalışmayabilir. Daha fazla bilgi için bkz . SQL Server'ın tek başına örneğini barındıran bir bilgisayarı yeniden adlandırma.
En iyi yöntemler
İzleme VM'sinden Key Vault'a erişimin olduğundan emin olun. SQL kimlik doğrulama parolalarını depolamak için Key Vault kullanıyorsanız (kesinlikle önerilir), ağ ve güvenlik yapılandırmasının izleme VM'sinin Key Vault'a erişmesine izin verdiğinden emin olmanız gerekir. Daha fazla bilgi için bkz . Güvenlik duvarının arkasındaki Azure Key Vault'a erişme ve Azure Key Vault ağ ayarlarını yapılandırma. İzleme VM'sinin Key Vault'a erişebildiğini doğrulamak için, VM'ye bağlı bir SSH oturumundan aşağıdaki komutları yürütebilirsiniz. Erişim belirtecini ve gizli diziyi başarıyla alabilmeniz gerekir. ,
[YOUR-KEY-VAULT-SECRET]
ve[YOUR-KEY-VAULT-ACCESS-TOKEN]
değerlerini gerçek değerlerle değiştirin[YOUR-KEY-VAULT-URL]
.# 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]"
İzleme VM'sinde yazılımı güncelleştirin. İzleme VM'sinde işletim sistemini ve uzantıları düzenli aralıklarla güncelleştirmenizi kesinlikle öneririz. Uzantı otomatik yükseltmeyi destekliyorsa bu seçeneği etkinleştirin.
Önceki yapılandırmaları kaydedin. İzleme profilinde veya izleme VM yapılandırmasında değişiklik yapmak istiyorsanız, önce yapılandırma verilerinizin çalışan bir kopyasını kaydetmenizi öneririz. Azure portalındaki SQL Insights sayfasında Profili yönet Profili> düzenle'yi seçin ve Geçerli İzleme Profili Yapılandırması'ndaki metni bir dosyaya kopyalayın. Benzer şekilde, İzleme VM'sinde profili>yönet Yapılandır'ı seçin ve Geçerli izleme yapılandırmasındaki metni bir dosyaya kopyalayın. Yapılandırma değişikliklerinden sonra veri toplama hataları oluşursa, koleksiyonu etkileyebilecek değişiklikleri bulmanıza yardımcı olmak için bir metin fark aracı kullanarak yeni yapılandırmayı bilinen çalışma yapılandırmasıyla karşılaştırabilirsiniz.
İlgili içerik
- SQL Insights'ı etkinleştirme (önizleme) hakkında ayrıntılı bilgi edinin.