Поделиться через


Устранение неполадок подключения к службе обработки данных и конечным точкам телеметрии

Область применения:SQL Server

Помимо обычных конечных точек расширение Azure Arc для SQL Server подключается к двум другим конечным точкам:

  • Конечная точка службы обработки данных (DPS)

    Собранные сведения о экземплярах SQL Server, базах данных, группах доступности и данных об использовании для выставления счетов отправляются в эту конечную точку.

  • Конечная точка телеметрии

    Журналы агента подключенного компьютера Azure, расширение Azure для журналов SQL Server и данные динамических административных представлений (DMV) отправляются в эту конечную точку.

Обмен данными с этими конечными точками использует ПРОТОКОЛ HTTPS с SSL/TLS и портом TCP/443 для зашифрованных безопасных подключений. Агент инициирует отправку данных в Azure. Azure никогда не инициирует обмен данными. Таким образом, подключение к этим конечным точкам является одним из способов.

При блокировке связи с этими конечными точками служба имеет следующие симптомы:

  • Экземпляры SQL Server не отображаются в портале Azure. Конечная точка DPS заблокирована.
  • Вы не видите данные в представлении панелей мониторинга производительности экземпляра SQL Server. Если конечная точка DPS разблокирована, но конечная точка телеметрии заблокирована.
  • Вы видите ошибку в статусе расширения Azure для SQL Server в портале Azure. Проверьте состояние расширения Azure для SQL Server в портале Azure.
  • В журнале SQL Server вы видите ошибку в расширении Azure. Просмотрите расширение Azure для журналов SQL Server.

Текущее состояние расширения Azure

Текущее состояние расширения Azure для SQL Server можно просмотреть на портале. Состояние обновляется каждые 15 минут.

Работоспособное состояние:

Снимок экрана: портал расширения Azure для SQL Server в работоспособном состоянии.

Неработоспособное состояние:

Снимок экрана: портал расширения Azure для SQL Server в неработоспособном состоянии.

Проверьте, возникла ли проблема с подключением к конечным точкам DPS или телеметрии

Существует два способа проверить наличие проблем с подключением к конечным точкам DPS или телеметрии.

Проверьте состояние расширения Azure для SQL Server в портале Azure

Если сервер подключен к Azure, расширение Azure для SQL Server сообщает о своем состоянии в портале Azure.

  • Перейдите к разделу Машины — Azure Arc на портале Azure, найдите машину по имени и выберите её.
  • Выберите Расширения.
  • Выберите WindowsAgent.SqlServer или LinuxAgent.SqlServer, чтобы открыть сведения.
  • Просмотрите сообщение о статусе и uploadStatus значение. Если что-либо отличается от ОК, возникла проблема с подключением к DPS. Если это 0так, скорее всего, брандмауэр блокирует связь с конечной точкой DPS. Дополнительные сведения можно получить в сообщении о состоянии или uploadStatus коде ошибки, который может предоставить аналитические сведения о проблеме подключения.

Проверка расширения Azure для журналов SQL Server

Файл журнала расширений находится по адресу:

C:\ProgramData\GuestConfig\extension_logs\Microsoft.AzureData.WindowsAgent.SqlServer\

Имя файла журнала зависит от версии расширения Azure для SQL Server. Для последней версии расширения Azure для SQL Server файл журнала:

unifiedagent.log

Для версии расширения 1.1.24724.69 и более ранних версий это файл журнала:

ExtensionLog_0.log

Проверьте записи журнала, указывающие на проблему подключения к конечным точкам DPS или телеметрии.

Проверьте конечные точки веб-сервера

Вы можете использовать различные средства для проверки конечных точек веб-сервера для DPS и телеметрии. Например, Invoke-WebRequest или curl.

В следующем примере используется Invoke-Webrequest.

Invoke-WebRequest telemetry.<region>.arcdataservices.com

Возможный код состояния ответа:

Invoke-WebRequest: Response status code does not indicate success: 401 (Unauthorized).

Ожидается 401, так как на конечной точке телеметрии нет неаутентифицированного маршрута.

Для DPS:

Invoke-WebRequest dataprocessingservice.<region>.arcdataservices.com

Замените arcdataservices.com на arcdataservices.azure.us для правительства США в штате Вирджиния. В этом примере будет следующее:

Invoke-WebRequest dataprocessingservice.<region>.arcdataservices.azure.us

Возможный код состояния ответа:

StatusCode        : 200

StatusDescription : OK

Ожидается 200, так как существует неаутентифицированный маршрут.

Тестирование связи со всеми регионами

Вы можете проверить подключение ко всем регионам с помощью скрипта PowerShell test-connectivity.ps1 .

Заметка

Для региона Вирджинии правительства США замените arcdataservices.com на arcdataservices.azure.us.

#This script repeatedly probes all regions for connectivity to the Azure Arc data services/Arc-enabled SQL Server endpoints for telemetry and the data processing service.
#The script will output the status of the connectivity to the console.
#The script will run indefinitely until stopped by the user.
#The script will iterate through all regions in the $regions array.
#The list of regions are updated as of June 7,2024 to reflect all publicly available, supported Azure regions for Arc-enabled SQL Server.

$regions = @(
    "East US",
    "East US 2",
    "West US 2",
    "West US 3",
    "Central US",
    "North Central US",
    "South Central US",
    "West Central US",
    "Canada Central",
    "Canada East",
    "UK South",
    "UK West",
    "France Central",
    "West Europe",
    "North Europe",
    "Switzerland North",
    "Central India",
    "Brazil South",
    "South Africa North",
    "UAE North",
    "Japan East",
    "Korea Central",
    "Southeast Asia",
    "Australia East",
    "Sweden Central",
    "Norway East"
)

$regions = $regions | ForEach-Object { $_.Replace(" ", "") }

do{
    $regions | ForEach-Object {
        $dps_url =  "dataprocessingservice.$_.arcdataservices.com"
        $ti_url =  "telemetry.$_.arcdataservices.com"
        try{
            $dps_response_time = Measure-Command { $response = Invoke-WebRequest -Uri $dps_url -Method Get }
            $dps_result = ($response).StatusCode
        }catch{
            $dps_result = $_.Exception.Message
        }
        try{
            $ti_response_time = Measure-Command { $response = Invoke-WebRequest -Uri $ti_url -Method Get -SkipHttpErrorCheck }
        }catch{
            if($_.Exception.Message -like "*401*"){
                $ti_result = "Expected"
            }
            else {
                $ti_result = $_.Exception.Message
            }
        }
        if ($ti_response_time.TotalSeconds -gt 3 -or $dps_response_time.TotalSeconds -gt 3 -or $dps_result -ne 200 -or $ti_result -ne "Expected") {
            Write-Host $dps_result "($dps_response_time) " $ti_result " ($ti_response_time) :: $_" -ForegroundColor Red
        }
        elseif ($ti_response_time.TotalSeconds -gt 1 -or $dps_response_time.TotalSeconds -gt 1) {
            Write-Host $dps_result "($dps_response_time) " $ti_result " ($ti_response_time) :: $_" -ForegroundColor Yellow
        }
        else
        {
            Write-Host $dps_result "($dps_response_time) " $ti_result " ($ti_response_time) :: $_"
        }
    }
    Write-Host "====================================================================="
} while($true)

Проверка совместимости версий TLS

Конечная точка службы обработки данных поддерживает следующие версии TLS: TLS 1.2 и 1.3. Windows Server 2012 и более ранних версий не поддерживаются.

Для конечных точек телеметрии Windows Server 2012 R2 и более ранних версий не поддерживаются.

Если используется неподдерживаемая версия TLS, в журнале может появиться ошибка.

<date time>|ERROR|SqlServerExtension.Service|Request failed with exception 'System.Net.Http.HttpRequestException: The SSL connection could not be established, see inner exception.

---> System.Security.Authentication.AuthenticationException: Authentication failed because the remote party sent a TLS alert: 'HandshakeFailure'.

---> System.ComponentModel.Win32Exception (0x80090326): The message received was unexpected or badly formatted.

Ссылка на конечную точку

Для подключения к Azure конечные точки используют *.arcdataservices.com.

Дополнительный фон

Расширение Azure для SQL Server использует следующие конечные точки:

  • DPS: dataprocessingservice.<region>.arcdataservices.comили для региона *.<region>.arcdataservices.azure.usВирджинии правительства США.
  • Телеметрия telemetry.<region>.arcdataservices.com

Замените <region> коротким именем региона Azure, где находится ресурс компьютера Arc. Короткое имя образуется из имени региона Azure без пробелов и в нижнем регистре.

Например, если ресурс компьютера Arc расположен в восточной части США 2 , то короткое имя региона— eastus2 и конечная точка телеметрии:

telemetry.eastus2.arcdataservices.com

Если расширение выпущено ранее 11 марта 2024 г., оно может использовать старые конечные точки. Обновите расширение, чтобы использовать текущую конечную точку.

Заметка

Значения конечной точки перед *.arcdataservices.com подлежат изменению.

Использование прокси-сервера HTTPS для исходящего подключения

Если вашей сети требуется использовать прокси-сервер HTTPS для исходящего подключения, см. дополнительные сведения о настройке в разделе "Обновление" или "Удаление параметров прокси-сервера".

Выполнить запрос в Azure Resource Graph для получения статистики загрузки телеметрии

Используйте Azure Resource Graph для запроса статуса загрузки для вашей среды.

resources
    | where type =~ 'microsoft.hybridcompute/machines/extensions'
    | where properties.type in ('WindowsAgent.SqlServer','LinuxAgent.SqlServer')
    | parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
    | parse properties with * 'uploadStatus : ' uploadStatus ';' *
    | project uploadStatus, subscriptionId, resourceGroup, machineName
    | where uploadStatus !in ('OK') //comment this out to see all upload stats
    | order by uploadStatus desc

Поиск расширений SQL, которые не подключены к DPS в течение длительного времени

Запрос azure Resource Graph для поиска расширений, которые недавно не подключены к DPS.

resources
    | where type =~ 'microsoft.hybridcompute/machines/extensions'
    | where properties.type in ('WindowsAgent.SqlServer','LinuxAgent.SqlServer')
    | parse id with * '/providers/Microsoft.HybridCompute/machines/' machineName '/extensions/' *
    | parse properties with * 'timestampUTC : ' timestampUTC ';' *
    | project timestampUTC, subscriptionId, resourceGroup, machineName
    | order by timestampUTC desc

Коды ошибок

В следующей таблице показаны некоторые распространенные значения статуса отправки DPS и то, что вы можете сделать для дальнейшего поиска и устранения неполадок.

Значение состояния загрузки DPS Код ошибки HTTP Предложения по устранению неполадок
0 Скорее всего, брандмауэр блокирует передачу данных в DPS. Откройте брандмауэр для конечной точки DNS для DPS (TCP, порт: 443).
OK 200 Подключение работает должным образом.
Bad request 400 Возможная причина. Имя ресурса (экземпляр SQL Server или имя базы данных) не соответствует соглашениям об именовании ресурсов Azure. Например, если имя базы данных является зарезервированным словом.
Unauthorized 401 Скорее всего, это расширение настроено для отправки данных через HTTP-прокси, требующий проверки подлинности. Использование HTTP-прокси, требующего проверки подлинности, в настоящее время не поддерживается. Используйте прокси-сервер HTTP без проверки подлинности или вовсе без прокси.
Forbidden Ошибка 403: Доступ запрещён Убедитесь, что Microsoft.AzureArcData поставщик ресурсов зарегистрирован в подписке. Если агент подключенного компьютера Azure в остальном работает должным образом, и эта ошибка не устраняется после перезагрузки, откройте запрос в службу поддержки Майкрософт через портал Azure.
NotFound 404 Конечная точка, к которому пытается подключиться расширение, не существует.

Чтобы проверить, к какой конечной точке пытается подключиться, выполните поиск по журналам dataprocessingservice. Эта ситуация может возникнуть, если агент подключенной машины Azure был развернут и подключен к региону Azure, в котором поставщик ресурсов Microsoft.AzureArcData еще недоступен. Повторно разверните агент Azure для подключенных машин в регионе, где доступен поставщик ресурсов для SQL сервера, включенного с помощью Azure Arc. См. также доступность региона.
Возможно, кэш резолвера DNS не обновляется для вашего компьютера. Обновите:
— При запуске Windows: ipconfig /flushdns
— в Linux (если systemd используется) выполните следующую команду: sudo resolvectl flush-caches
Conflict 409 Вероятно, причина: временная ошибка, возникаемая внутри DPS. Если это не устраняется, создайте вариант поддержки с помощью службы поддержки Майкрософт на портале Azure.
InternalServerError 500 Это ошибка, которая происходит внутри DPS. Создайте запрос на поддержку в службу поддержки Майкрософт через портал Azure.