Udostępnij za pośrednictwem


Rozwiązywanie problemów z usługą SQL Insights (wersja zapoznawcza)

Dotyczy: Azure SQL Database Azure SQL Managed Instance

Ważne

Usługa SQL Insights (wersja zapoznawcza) zostanie wycofana 31 grudnia 2024 r. Zalecamy przejście do obserwatora bazy danych dla usługi Azure SQL (wersja zapoznawcza) lub innego rozwiązania do monitorowania bazy danych o tej dacie.

Obserwator bazy danych jest zalecanym rozwiązaniem do monitorowania scenariuszy wymagających małych opóźnień zbierania danych, monitorowania na poziomie majątku, kompleksowego monitorowania, w tym szczegółów na poziomie zapytania i obsługi zaawansowanej analizy zebranych danych monitorowania. Obecnie obserwator bazy danych obsługuje usługi Azure SQL Database i Azure SQL Managed Instance.

Po 31 grudnia 2024 r. usługa SQL Insights (wersja zapoznawcza) nie będzie obsługiwana i nie będzie dostępna w witrynie Azure Portal. Wszystkie istniejące dane monitorowania zebrane przez usługę SQL Insights będą przechowywane w obszarze roboczym usługi Log Analytics.

Aby rozwiązać problemy z zbieraniem danych w usłudze SQL Insights (wersja zapoznawcza), sprawdź stan maszyny monitorowania na karcie Zarządzanie profilem . Stanami są:

  • Zbieranie
  • Nie zbieraj
  • Zbieranie z błędami

Wybierz stan, aby wyświetlić dzienniki i więcej szczegółów, które mogą pomóc w rozwiązaniu problemu.

Zrzut ekranu przedstawiający stan maszyny monitorowania.

Stan: Brak zbierania

W ciągu ostatnich 10 minut maszyna monitorowania ma stan Brak zbierania danych w usłudze InsightsMetrics dla bazy danych SQL.

Upewnij się, że próbujesz zebrać dane z obsługiwanej wersji programu SQL. Na przykład próba zebrania danych z prawidłowym profilem i parametry połączenia, ale z nieobsługiwanej wersji usługi Azure SQL Database spowoduje, że stan Nie jest zbierany.

Usługa SQL Insights (wersja zapoznawcza) używa następującego zapytania do pobrania tych informacji:

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' 

Sprawdź, czy jakiekolwiek dzienniki z programu Telegraf pomagają zidentyfikować główną przyczynę problemu. Jeśli istnieją wpisy dziennika, możesz wybrać pozycję Nie zbierać i sprawdzać dzienniki oraz informacje dotyczące rozwiązywania typowych problemów.

Jeśli nie ma żadnych wpisów dziennika, sprawdź dzienniki na maszynie wirtualnej monitorowania dla następujących usług zainstalowanych przez dwa rozszerzenia maszyny wirtualnej:

  • Microsoft.Azure.Monitor.AzureMonitorLinuxAgent
    • Usługa: mdsd
  • Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension
    • Usługa: wli
    • Usługa: telegraf
    • Usługa: płynny bit
    • Dziennik rozszerzeń w celu sprawdzenia błędów instalacji: /var/log/azure/Microsoft.Azure.Monitor.Workloads.Workload.WLILinuxExtension/wlilogs.log

dzienniki usługi wli

Dzienniki usług: /var/log/wli.log

Aby wyświetlić najnowsze dzienniki: tail -n 100 -f /var/log/wli.log

Jeśli widzisz następujący dziennik błędów, występuje problem z usługą mdsd : 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 .

Dzienniki usługi Telegraf

Dzienniki usług: /var/log/telegraf/telegraf.log

Aby wyświetlić najnowsze dzienniki: tail -n 100 -f /var/log/ms-telegraf/telegraf.log

Aby wyświetlić najnowsze dzienniki błędów i ostrzeżeń: tail -n 1000 /var/log/ms-telegraf/telegraf.log | grep "E\!\|W!"

Konfiguracja używana przez program telegraf jest generowana przez usługę wli i umieszczona w: /etc/ms-telegraf/telegraf.d/wli

Jeśli zostanie wygenerowana nieprawidłowa konfiguracja, uruchomienie usługi ms-telegraf może zakończyć się niepowodzeniem. Sprawdź, czy usługa ms-telegraf jest uruchomiona przy użyciu tego polecenia: service ms-telegraf status

Aby wyświetlić komunikaty o błędach z usługi telegrafu, uruchom je ręcznie przy użyciu następującego polecenia:

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

Dzienniki usługi mdsd

Sprawdź wymagania wstępne dotyczące agenta usługi Azure Monitor.

Przed programem Azure Monitoring Agent w wersji 1.12 dzienniki usługi mdsd znajdowały się w:

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

W wersji 1.12 dzienniki usługi znajdują się w:

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

Aby wyświetlić ostatnie błędy: tail -n 100 -f /var/log/mdsd.err

Jeśli musisz skontaktować się z pomocą techniczną, zbierz następujące informacje:

  • Dzienniki w usłudze /var/log/azure/Microsoft.Azure.Monitor.AzureMonitorLinuxAgent/
  • Rejestrowanie w pliku /var/log/waagent.log
  • Dzienniki w /var/log/mdsd*usłudze lub dzienniki w /var/opt/microsoft/azuremonitoragent/log/ systemach i /etc/opt/microsoft/azuremonitoragent/.
  • Pliki w /etc/mdsd.d/
  • Plik /etc/default/mdsd

Nieprawidłowa konfiguracja maszyny wirtualnej monitorowania

Jedną z przyczyn braku zbierania stanu jest nieprawidłowa konfiguracja maszyny wirtualnej monitorowania. Oto najprostsza forma konfiguracji:

{
    "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": [
        ]
    }
}

Ta konfiguracja określa tokeny zastępcze, które mają być używane w konfiguracji profilu na maszynie wirtualnej monitorowania. Umożliwia również odwołanie się do wpisów tajnych z usługi Azure Key Vault, więc nie musisz przechowywać wartości wpisów tajnych w żadnej konfiguracji (co zdecydowanie zalecamy).

W tej konfiguracji baza danych parametry połączenia zawiera $telegrafPassword token zastępczy. Usługa SQL Insights zastępuje ten token hasłem uwierzytelniania SQL pobranym z usługi Key Vault. Identyfikator URI usługi Key Vault jest określony w telegrafPassword sekcji konfiguracji w obszarze secrets.

Wpisy tajne

Wpisy tajne to tokeny, których wartości są pobierane w czasie wykonywania z magazynu kluczy platformy Azure. Wpis tajny jest definiowany przez parę wartości, która zawiera identyfikator URI magazynu kluczy i nazwę wpisu tajnego. Ta definicja umożliwia usłudze SQL Insights uzyskanie wartości wpisu tajnego w czasie wykonywania i użycie jej w konfiguracji podrzędnej.

W razie potrzeby można zdefiniować tyle wpisów tajnych, w tym wpisów tajnych przechowywanych w wielu magazynach kluczy.

   "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>"
        }
    }

Uprawnienie dostępu do magazynu kluczy jest udostępniane tożsamości zarządzanej na maszynie wirtualnej monitorowania. Ta tożsamość zarządzana musi mieć uprawnienie Pobierz dla wszystkich wpisów tajnych usługi Key Vault, do których odwołuje się konfiguracja profilu monitorowania. Można to zrobić w witrynie Azure Portal, programie PowerShell, interfejsie wiersza polecenia platformy Azure lub szablonie usługi Azure Resource Manager.

Parametry

Parametry to tokeny, do których można odwoływać się w konfiguracji profilu za pośrednictwem szablonów JSON. Parametry mają nazwę i wartość. Wartości mogą być dowolnym typem JSON, w tym obiektami i tablicami. Parametr jest przywołyyny w konfiguracji profilu według jego nazwy, używając następującej konwencji: .Parameters.<name>.

Parametry mogą odwoływać się do wpisów tajnych w usłudze Key Vault przy użyciu tej samej konwencji. Na przykład sqlAzureConnections odwołuje się do wpisu tajnego telegrafPassword przy użyciu konwencji $telegrafPassword.

W czasie wykonywania wszystkie parametry i wpisy tajne zostaną rozpoznane i scalone z konfiguracją profilu w celu skonstruowania rzeczywistej konfiguracji, która ma być używana na maszynie.

Uwaga

Nazwy parametrów sqlAzureConnections, sqlVmConnectionsi sqlManagedInstanceConnections są wymagane w konfiguracji, nawet jeśli nie podasz parametry połączenia dla niektórych z nich.

Stan: Zbieranie z błędami

Komputer monitorujący będzie miał stan Zbieranie z błędami , jeśli istnieje co najmniej jeden ostatni dziennik InsightsMetrics , ale w Operation tabeli występują również błędy.

Usługa SQL Insights używa następujących zapytań do pobrania tych informacji:

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')

Uwaga

Jeśli nie widzisz żadnych danych w programie WorkloadDiagnosticLogs, może być konieczne zaktualizowanie profilu monitorowania. W usłudze SQL Insights w witrynie Azure Portal wybierz pozycję Zarządzaj profilem>Edytuj profil>Aktualizuj profil monitorowania.

W przypadku typowych przypadków udostępniamy porady dotyczące rozwiązywania problemów w widoku dzienników:

Zrzut ekranu przedstawiający stronę usługi Azure Monitor dotyczącą rozwiązywania problemów z dziennikami SQL w witrynie Azure Portal.

Znane problemy

Podczas korzystania z wersji zapoznawczej usługi SQL Insights mogą wystąpić następujące znane problemy.

  • Błąd "Logowanie nie powiodło się" podczas nawiązywania połączenia z serwerem lub bazą danych

    Używanie niektórych znaków specjalnych w hasłach uwierzytelniania SQL zapisanych w konfiguracji maszyny wirtualnej monitorowania lub w usłudze Key Vault może uniemożliwić monitorowanie maszyny wirtualnej nawiązywanie połączenia z serwerem SQL lub bazą danych. Ten zestaw znaków zawiera nawiasy, nawiasy kwadratowe i nawiasy klamrowe, znak dolara, ukośniki do przodu i pleców oraz kropkę ([ { ( ) } ] $ \ / .).

  • Spacje w bazie danych parametry połączenia atrybutów mogą zostać zastąpione znakami specjalnymi, co prowadzi do błędów połączenia z bazą danych. Jeśli na przykład miejsce w atrybucie User Id zostanie zastąpione znakiem specjalnym, połączenia nie powiedzą się z błędem Logowania użytkownika "". Aby rozwiązać ten problem, zmodyfikuj konfigurację profilu monitorowania i usuń każdy znak specjalny, który pojawia się zamiast spacji. Niektóre znaki specjalne mogą wyglądać nie do odróżnienia od spacji, dlatego można usunąć każdy znak spacji, wpisać go ponownie i zapisać konfigurację.

  • Zbieranie danych i wizualizacja mogą nie działać, jeśli nazwa komputera systemu operacyjnego maszyny wirtualnej monitorowania różni się od nazwy maszyny wirtualnej monitorowania.

  • Komunikat "Rozszerzenie WLI na tym komputerze jest poniżej zalecanej wersji [...]" może być niepoprawnie wyświetlany nawet wtedy, gdy rozszerzenie WLI jest aktualne.

  • Zbieranie danych i wizualizacja mogą nie działać, jeśli nazwa komputera systemu operacyjnego maszyny wirtualnej, na której zainstalowano program SQL Server, nie jest zgodna z nazwą serwera w metadanych programu SQL Server. Aby uzyskać więcej informacji, zobacz Zmienianie nazwy komputera, który hostuje autonomiczne wystąpienie programu SQL Server.

Najlepsze rozwiązania

  • Upewnij się, że dostęp do usługi Key Vault jest uzyskiwany z maszyny wirtualnej monitorowania. Jeśli używasz usługi Key Vault do przechowywania haseł uwierzytelniania SQL (zdecydowanie zalecane), upewnij się, że konfiguracja sieci i zabezpieczeń umożliwia maszynie wirtualnej monitorowania dostęp do usługi Key Vault. Aby uzyskać więcej informacji, zobacz Access Azure Key Vault behind a firewall (Uzyskiwanie dostępu do usługi Azure Key Vault za zaporą ) i Configure Azure Key Vault networking settings (Konfigurowanie ustawień sieci usługi Azure Key Vault). Aby sprawdzić, czy monitorowana maszyna wirtualna może uzyskać dostęp do usługi Key Vault, możesz wykonać następujące polecenia z sesji SSH połączonej z maszyną wirtualną. Powinno być możliwe pomyślne pobranie tokenu dostępu i wpisu tajnego. Zastąp [YOUR-KEY-VAULT-URL]wartości , [YOUR-KEY-VAULT-SECRET]i [YOUR-KEY-VAULT-ACCESS-TOKEN] wartościami rzeczywistymi.

    # 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]"
    
  • Aktualizowanie oprogramowania na maszynie wirtualnej monitorowania. Zdecydowanie zalecamy okresowe aktualizowanie systemu operacyjnego i rozszerzeń na maszynie wirtualnej monitorowania. Jeśli rozszerzenie obsługuje automatyczne uaktualnianie, włącz tę opcję.

  • Zapisz poprzednie konfiguracje. Jeśli chcesz wprowadzić zmiany w profilu monitorowania lub monitorować konfigurację maszyny wirtualnej, zalecamy najpierw zapisanie działającej kopii danych konfiguracji. Na stronie USŁUGI SQL Insights w witrynie Azure Portal wybierz pozycję Zarządzaj profilem Edytuj profil> i skopiuj tekst z bieżącej konfiguracji profilu monitorowania do pliku. Podobnie wybierz pozycję Zarządzaj profilem>Skonfiguruj dla maszyny wirtualnej monitorowania i skopiuj tekst z bieżącej konfiguracji monitorowania do pliku. Jeśli po zmianie konfiguracji wystąpią błędy zbierania danych, możesz porównać nową konfigurację ze znaną konfiguracją roboczą przy użyciu narzędzia różnic tekstu, aby ułatwić znalezienie wszelkich zmian, które mogły mieć wpływ na kolekcję.