次の方法で共有


データ処理サービスとテレメトリ エンドポイントへの接続のトラブルシューティング

適用対象:SQL Server

通常のエンドポイントに加えて、SQL Server 用の Azure Arc 拡張機能は他の 2 つのエンドポイントに接続します。

  • データ処理サービス (DPS) エンドポイント

    収集された SQL Server インスタンス、データベース、可用性グループ、請求のため利用状況データに関するインベントリ情報が、このエンドポイントに送信されます。

  • テレメトリ エンドポイント

    Azure Connected Machine Agent ログ、SQL Server 用 Azure 拡張機能ログ、動的管理ビュー (DMV) データがこのエンドポイントに送信されます。

これらのエンドポイントへの通信は SSL/TLS と TCP ポート 443 を使用する HTTPS で暗号化し、セキュリティを確保します。 エージェントは通信を開始して、データを Azure 送信します。 Azure が通信を開始することはありません。 そのため、これらのエンドポイントへの接続は一方通行となります。

これらのエンドポイントへの通信がブロックされると、サービスに次のような症状が発生します。

  • Azure portal には SQL Server インスタンスが表示されません。 DPS エンドポイントがブロックされています。
  • SQL Server インスタンスのパフォーマンス ダッシュボード ビューにデータが表示されません。 DPS エンドポイントのブロックが解除されているが、テレメトリ エンドポイントがブロックされている場合。
  • Azure portal の SQL Server 用 Azure 拡張機能のステータスにエラーが表示されます。 Azure portal で Azure Extension for SQL Server のステータスを確認してください。
  • Azure Extension for SQL Server のログにエラーが表示されます。 Azure Extension for SQL Server のログを確認してください。

Azure 拡張機能の現在の状態

ポータルで SQL Server 用 Azure 拡張機能の現在の状態を表示できます。 状態は 15 分ごとに更新されます。

正常な状態

正常な状態の SQL Server 用 Azure 拡張機能のポータルのスクリーンショット。

異常な状態

異常な状態の SQL Server 用 Azure 拡張機能のポータルのスクリーンショット。

DPS またはテレメトリ エンドポイントへの接続に問題があるか確認する

DPS またはテレメトリ エンドポイントへの接続に問題があるか確認するには 2 つの方法があります。

Azure portal で SQL Server 用 Azure 拡張機能のステータスを確認する

通常、SQL Server 用 Azure 拡張機能が Azure に接続されている場合、そのステータスを Azure portal に報告します。

  • Azure portal で [マシン - Azure Arc] ビューに移動し、マシンを名前で見つけて選択します。
  • 拡張子を選択します。
  • [WindowsAgent.SqlServer] または [LinuxAgent.SqlServer] を選択して詳細を表示します。
  • ステータス メッセージuploadStatus の値を確認します。 OK でない場合は DPS への接続に問題があります。 0 の場合は、ファイアウォールによって DPS エンドポイントへの通信がブロックされている可能性があります。 ステータス メッセージまたは uploadStatus エラー コードには、接続の問題に関する分析情報を提供できる詳細情報が含まれている可能性があります。

Azure 拡張機能の SQL Server ログを確認する

拡張機能ログ ファイルは次の場所にあります。

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

ログ ファイル名は、Azure Extension for SQL Server のバージョンによって異なります。 最新バージョンの Azure Extension for SQL Server のログ ファイルは次のとおりです。

unifiedagent.log

拡張機能のバージョンが 1.1.24724.69 以前の場合、ログ ファイルは次のようになります。

ExtensionLog_0.log

DPS エンドポイントまたはテレメトリ エンドポイントへの接続に問題があることを示すログ エントリを確認します。

Web サーバーエンドポイントをプローブ

さまざまなツールを使用して、DPS と利用統計情報の Web サーバーエンドポイントをプローブできます。 たとえば、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.comarcdataservices.azure.usに置き換えます。 この例は次のようになります。

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

考えられる応答状態コードは以下のとおりです。

StatusCode        : 200

StatusDescription : OK

認証されていないルートがあるため、200 が期待されています。

すべてのリージョンへのプローブ接続

test-connectivity.ps1 PowerShell スクリプトを使用して、すべてのリージョンへの接続をプローブできます。

手記

米国政府機関バージニアリージョンの場合は、 arcdataservices.comarcdataservices.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 1.2 と 1.3 の TLS バージョンがサポートされています。 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を使用します。

その他の背景

2024年 3 月 12 日 以降、Azure Extension for SQL Server では次のエンドポイントが使用されます。

  • DPS: dataprocessingservice.<region>.arcdataservices.com、または米国政府バージニアリージョンの場合は、 *.<region>.arcdataservices.azure.us
  • テレメトリ telemetry.<region>.arcdataservices.com

<region> を、Arc マシン リソースが配置されている Azure リージョンの短縮名に置き換えます。 短い名前は Azure リージョン名からスペースを除き、すべて小文字にしたものです。

たとえば、Arc マシン リソースが米国東部 2 にある場合、リージョンの短縮名は eastus2 で、テレメトリ エンドポイントは次のようになります。

telemetry.eastus2.arcdataservices.com

拡張機能が 2024 年 3 月 11 日より古い場合は、古いエンドポイントが使用される可能性があります。 現在のエンドポイントを使用するように拡張機能を更新します。

手記

*.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

長い間 DPS に接続されていない SQL 拡張機能を検索する

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 へのデータの送信をブロックしていることです。 DPS の DNS エンドポイント (TCP、ポート: 443) へのファイアウォールを開きます。
OK 200 接続は想定どおりに動作しています。
Bad request 400 考えられる原因: リソース名 (SQL Server インスタンスまたはデータベース名) が Azure リソースの名前付け規則に準拠していません。 たとえば、データベース名が予約語の場合です。
Unauthorized 401 原因として考えられるのは、拡張機能が、認証を必要とする HTTP プロキシ経由でデータを送信するように構成されていることです。 認証を必要とする HTTP プロキシの使用は、現在サポートされていません。 認証されていない HTTP プロキシを使用するか、プロキシを使用しないようにします。
Forbidden 403 Microsoft.AzureArcData リソース プロバイダーがサブスクリプションに登録されていることを確認します。 Azure Connected Machine Agent が想定どおりに動作していて、再起動後にこのエラーが解決しない場合は、Azure portal を使用して、Microsoft サポートでサポート ケースを作成します。
NotFound 404 拡張機能が接続しようとしているエンドポイントが存在しません。

接続先のエンドポイントを確認するには、ログで dataprocessingserviceを検索します。 この状況は、Azure Connected Machine エージェントがデプロイされ、Microsoft.AzureArcData リソース プロバイダーがまだ使用できない Azure リージョンに接続されている場合に発生する可能性があります。 Azure Arc によって有効になっている SQL Server の リソース プロバイダーが使用可能なリージョンに Microsoft.AzureArcData利用可能なリージョンに関するページも参照してください。

DNS リゾルバー キャッシュがマシンで更新されない可能性があります。 更新するには、次の手順に従います。
- Windows では、次のコマンドを実行します。ipconfig /flushdns
- Linux (systemd が使用されている場合) では、次のコマンドを実行します。sudo resolvectl flush-caches
Conflict 409 原因として考えられるのは、DPS 内で一時的なエラーが発生していることです。 これが解決しない場合は、Azure portal を使用して、Microsoft サポートでサポート ケースを作成します。
InternalServerError 500 これは DPS 内で発生しているエラーです。 Azure portal を使用して、Microsoft サポートでサポート ケースを作成します。