SQL Analizler (önizleme) sorunlarını giderme

Şunlar için geçerlidir:Azure SQL Veritabanı Azure SQL Yönetilen Örneği

SQL Analizler 'de (ö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.

İzleme makinesi durumunu gösteren ekran görüntüsü.

Durum: Toplenmiyor

son 10 dakika içinde SQL için Analizler Metrics'te veri yoksa, izleme makinesinin Durumu Toplenmiyor şeklindedir.

Not

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 Analizler (ö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 Analizler bu belirteci Key Vault'tan alınan SQL kimlik doğrulama parolası ile değiştirir. Key Vault URI'si altındaki secretsyapı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 Analizler çalışma zamanında gizli dizi değerini 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ı $telegrafPasswordkullanarak 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ü sqlAzureConnectionssqlVmConnectionsyapılandırmada gereklidir.

Durum: Hatalarla toplama

İzleme makinesi, en az bir son Analizler Metrics günlüğü varsa ancak tabloda da hatalar Operation varsa Hatalarla toplanıyor durumuna sahip olur.

SQL Analizler 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 WorkloadDiagnosticLogsveri görmüyorsanız izleme profilinizi güncelleştirmeniz gerekebilir. Azure portalındaki SQL Analizler 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:

Azure portalında SQL günlüklerinde sorun giderme için Azure İzleyici sayfasının ekran görüntüsü.

Bilinen sorunlar

SQL Analizler ö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 Analizler 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.

Sonraki adımlar