SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Database Watcher のデータストアに Free ADX を設定する (2025/01 版)

leave a comment

本投稿と同様の事象が発生した場合の 2025/01/27 時点の暫定対応方法です。SR で確認中のため今後、本投稿の対応は不要となる可能性があります。

Azure SQL のワークロード監視をする機能として、Database Watcher があります。

Database Watcher では、Azure Data Explorer (ADX) ベースの環境をデータストアとして使用し、Azure SQL の各種状態を保存します。

データベース ウォッチャーの価格 に記載されていますが、Database Watcher 自体は無償で利用でき、Free  Azure Data Explorer (ADX) Cluster を使用した場合、ADX には 機能の比較 に記載されている制限がありますが、データストアについても無償で使用することが可能です。

以前は Azure Portal から Free ADX Cluster を使用する設定ができていたのですが、私の環境では設定することができず、他の方法で設定する必要があったのでその際の作業内容を残しておきます。

Azure Portal を使用しないデータストアの設定方法

発生している事象

Database Watcher のデータストアとして Free ADX Cluster を使用する設定は、Azure Portal で選択肢として提供されています。

しかし、私の環境では「Free レベル」を選択しても、データベースの選択のローディングが延々と続いてしまい、次のステップに写ることができないという事象が発生し、Azure Portal から設定することができなくなっていました。

image

 

Database Watcher の操作でサポートされる方法

投稿時点で、Database Watcher の操作については、PowerShell または Azure CLI を使用して Watcher を作成して構成できますか? に記載されているように、管理コマンドからの直接の操作はサポートされておらず、Bicep / REST API 等を使用する必要があります。

今回はサポートされる操作方法の中で Database watcher REST API を使用して暫定的な対応を行っています。

 

REST API を使用したデータストアの設定

前述のとおり、投稿時点の私の環境では Azure Portal から Free ADX Cluster を設定することができませんでした。

代替として REST API を直接呼び出すことで設定を行うことができたのですが、API Version としては「2023-09-01-preview」を指定する必要がありました。

投稿時点では 「2023-09-01-preview」「2024-07-19-preview」の 2 つのバージョンを使用することができますが、「2024-07-19-preview」では設定を行うことができませんでした。

今回の対応では PowerShell を使用しているのですが、PowerShell の場合は、次のようなスクリプトで設定を行うことができます。

$subscriptionId = "<Subscription Id>"
$resourceGroupName = "<Resource Group Name>"
$resourceName = "<Database Watcher Resoruce Name>"

$clusterName = "<ADX Cluster Name>"
$databaseName = "<ADX Database Name>"
$region ="australiaeast"  # ADX Region
$apiVersion = "2023-09-01-preview"

Connect-AzAccount -DeviceCode

$token = (Get-AzAccessToken).Token

$Header = @{
    "Authorization" = "Bearer $token"
    "Content-Type" = "application/json"
}

$body = @"
{
    "identity": {
        "type": "SystemAssigned"
    },
    "properties": {
        "datastore": {
            "kustoClusterDisplayName": "ADX Free Cluster",
            "kustoDatabaseName": "$databaseName",
            "kustoClusterUri": "https://${clusterName}.${region}.kusto.windows.net",
            "kustoDataIngestionUri": "https://ingest-clusterName.${region}.kusto.windows.net",
            "kustoManagementUrl": "https://portal.azure.com/",
            "kustoOfferingType": "free"
        }
    }
}

"@
Invoke-RestMethod `
    -Uri "https://management.azure.com/subscriptions/${subscriptionId}/resourceGroups/${resourceGroupName}/providers/Microsoft.DatabaseWatcher/watchers/${resourceName}/?api-version=${apiVersion}" `
    -Headers $Header `
    -Method PATCH `
    -Body $body

 

Azure Portal を使用せず、「2023-09-01-preview」のバージョンの REST API を直接呼び出すことで、Free ADX Cluster をデータストアとして使用することができました。

Share

Written by Masayuki.Ozawa

1月 27th, 2025 at 11:38 pm

Leave a Reply