Ignite / PASS で発表された Azure Arc 対応 SQL Server (Azure Arc Enabled SQL Server) の新機能となる、モニターによるメトリック収集 (パフォーマンスダッシュボード) について情報を残しておきたいと思います。
Contents
使用可能な SQL Server
本機能を使用できる SQL Server については、前提条件 に記載されていますが利用形態に制約があります。
Azure Arc 対応 SQL Server で監視データを収集するには、以下の条件を満たす必要があります。
- Azure Extension for SQL Server (WindowsAgent.SqlServer) のバージョンは、11 月以降のリリースに更新されます。 (リリース ノートを参照してください)
- Azure Arc 対応 SQL Server は Windows オペレーティング システムで実行されています
- Azure Arc 対応 SQL Server は、Standard または Enterprise Edition です
- Azure Arc 対応 SQL Server のライセンスの種類は、「ソフトウェア アシュアランスを使用したライセンス」または「従量課金制」に設定されています
SA または PAYG の利用形態でのみ使用することができ、ライセンス購入 (ライセンスのみ) の SQL Server では使用することができません。
Azure Arc 対応 SQL Server では利用形態によって機能制限がかかるものがいくつかあり、ライセンスの種類に応じて利用できる機能 で情報がまとめられています。
運用の自動化 / 効率化につなげるための機能については、SA / PAYG でのみ使用することができるようになっているケースが多いため、機能を使用する際には、使用するライセンスには注意する必要があります。
機能の使用方法
今回追加された機能を使用し、対応したライセンスの SQL Server を使用している場合は、Azure Arc から該当する SQL Server のブレードを表示すると「パフォーマンス ダッシュボード」の機能を使用することができるようになります。
取得されている情報については、Azure Arc 対応 SQL Server の監視 (プレビュー) に記載されており、SQL Server の各種情報が取得されています。
取得に使用されているクエリについては、「SqlServerExtension.Service.exe」から、接続文字列のプログラム名が「SQLExternalMonitoring」で実行されていますので、具体的なクエリについては、このプログラムから実行されているクエリの情報を取得することで確認することができます。
現状、取得しているメトリックの確認方法ですがポータルからの確認のみとなるようで、他の方法での利用は想定されていないようです。
ポータルでは次のような方法で、メトリックの情報を取得しているようですが、ドキュメントで公開されている方法ではなく、このような方法での情報取得は想定されていないものとなっているようです。
$subscription = "Subscription Id"
$resourcegroup = "Resource Group Name"
$server = "Server Name"
Connect-AzAccount
$token = Get-AzAccessToken
$headers = @{
Authorization = "Bearer " + $token.Token
"Content-Type" = "application/json"
"Accept" = "application/json"
}
$body = @{
datasetName="DatabaseStorageUtilization"
startTime="$((Get-Date).AddHours(-1).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ"))"
endTime="$((Get-Date).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ss.fffZ"))"
interval="PT1M"
aggregationType="Maximum"
}
$result = Invoke-WebRequest `
-Uri "https://eastus2euap.management.azure.com/subscriptions/$subscription/resourceGroups/$resourcegroup/providers/Microsoft.AzureArcData/SqlServerInstances/$server/getTelemetry?api-version=2023-11-01-preview" `
-Headers $headers -Method Post `
-Body ($body | ConvertTo-Json)
$ret = Invoke-WebRequest -Uri $result.Headers.Location[0] -Headers $headers
$ret.Content
Azure Monitor 等で取得されているデータを活用できるとアラートルールとして利用することができたのですが、現状はポータルからのデータ確認しか取得されているデータを活用する方法はなさそうです。
Azure Monitor / KQL で情報を使用できるようになると活用方法に幅が出るかと思いますので、 https://feedback.azure.com/d365community/idea/5131f0c1-a790-ee11-a81c-0022484c92b1 でフィードバックは上げてみました。