Azure SQL Analytics を使用して Azure SQL Database を監視する (プレビュー)
適用対象: Azure SQL Database、Azure SQL Managed Instance
注意事項
Azure SQL Analytics (プレビュー) は Azure Monitor との統合であり、多くの監視ソリューションがアクティブに開発されなくなっています。 その他の監視オプションについては、Azure SQL Database と Azure SQL Managed Instance の監視とパフォーマンスのチューニングに関するページを参照してください。
Azure SQL Analytics (プレビュー) は、すべての Azure SQL データベースのパフォーマンスを大規模かつ複数のサブスクリプションにわたって 1 つのビューで監視するための高度なクラウド監視ソリューションです。 Azure SQL Analytics で組み込みのインテリジェンスを使用して重要なパフォーマンス メトリックを収集し、視覚化することによって、パフォーマンスのトラブルシューティングを行うことができます。
これらの収集されたメトリックを使用して、カスタム監視ルールとアラートを作成できます。 Azure SQL Analytics は、アプリケーション スタックの各レイヤーで問題を特定するのに役立ちます。 Azure SQL Analytics では、Azure Diagnostics メトリックと Azure Monitor ビューを使用して、すべての Azure SQL データベースに関するデータを 1 つの Log Analytics ワークスペースに表示します。 Azure Monitor は、構造化データと非構造化データを収集、関連付け、視覚化するのに役立ちます。
Azure SQL Analytics は、すべての Azure SQL データベースの診断テレメトリのストリーミングをサポートするクラウド専用の監視ソリューションです。 Azure SQL Analytics ではエージェントを使用して Azure Monitor に接続しないため、オンプレミスまたは仮想マシンでホストされている SQL Server の監視はサポートされていません。
接続されたソース | サポートされています | 説明 |
---|---|---|
診断設定 | はい | Azure メトリックとログ データは、Azure によって直接 Azure Monitor ログに送信されます。 |
Azure Storage アカウント | いいえ | Azure Monitor はストレージ アカウントからデータを読み取りません。 |
Windows エージェント | いいえ | 直接 Windows エージェントは、Azure SQL Analytics では使用されません。 |
Linux エージェント | いいえ | 直接 Linux エージェントは、Azure SQL Analytics では使用されません。 |
System Center Operations Manager の管理グループ | いいえ | Operations Manager エージェントから Azure Monitor への直接接続は、Azure SQL Analytics では使用されません。 |
次の表は、Azure SQL Analytics ダッシュボードの 2 つのバージョン (1 つは Azure SQL Database 用、もう 1 つは Azure SQL Managed Instance データベース用) でサポートされるオプションの概要を示しています。
Azure SQL Analytics オプション | 説明 | SQL Database のサポート | SQL Managed Instance のサポート |
---|---|---|---|
種類別のリソース | 監視されているすべてのリソースをカウントするパースペクティブ。 | イエス | イエス |
洞察 力 | Intelligent Insights に階層的にドリルダウンしてパフォーマンスを分析します。 | イエス | イエス |
エラー | データベースで発生した SQL エラーへの階層的なドリルダウンを提供します。 | イエス | イエス |
Timeouts | データベースで発生した SQL タイムアウトへの階層的なドリルダウンを提供します。 | イエス | いいえ |
ブロッキング | データベースで発生した SQL ブロックへの階層的なドリルダウンを提供します。 | イエス | いいえ |
データベース待機 | データベース レベルの SQL 待機統計への階層的なドリルダウンを提供します。 合計待機時間と待機の種類ごとの待機時間の概要が含まれます。 | イエス | いいえ |
クエリ期間 | クエリの実行統計情報 (クエリ期間、CPU 使用率、データ IO 使用率、ログ IO 使用率など) に階層的なドリルダウンを提供します。 | イエス | イエス |
クエリ待機 | 待機カテゴリ別のクエリ待機統計への階層的なドリルダウンを提供します。 | イエス | イエス |
ソリューション ギャラリー から Azure Monitor ソリューションを追加する で説明されているプロセスを使用して、Azure SQL Analytics (プレビュー) を Log Analytics ワークスペースに追加します。
ワークスペースに Azure SQL Analytics ソリューションを作成したら、監視する各 リソースを構成、診断テレメトリを Azure SQL Analytics にストリーミングする必要があります。 このページの詳細な手順に従います。
- データベースの Azure Diagnostics を有効化し、診断テレメトリを Azure SQL Analytics にストリーミングします。
上記のページでは、1 つの Azure SQL Analytics ワークスペースから複数の Azure サブスクリプションを 1 つのウィンドウとして監視するためのサポートを有効にする方法についても説明します。
Log Analytics ワークスペースの レガシ ソリューション ページから SQL Analytics デプロイに移動します。
Azure SQL Analytics には、SQL Database を監視するためのビューと SQL Managed Instance を監視するためのビューの 2 つのビューが用意されています。
ダッシュボードには、さまざまな観点から監視されているすべてのデータベースの概要が含まれています。 さまざまなパースペクティブを機能させるには、SQL リソースの適切なメトリックまたはログを Log Analytics ワークスペースにストリーミングできるようにする必要があります。
一部のメトリックまたはログが Azure Monitor にストリーミングされない場合、Azure SQL Analytics のタイルには監視情報が設定されません。
データベースの Azure SQL Analytics タイルが選択されると、監視ダッシュボードが表示されます。
タイルのいずれかを選択すると、特定のパースペクティブにドリルダウン レポートが開きます。 パースペクティブを選択すると、ドリルダウン レポートが開きます。
このビューの各パースペクティブには、サブスクリプション、サーバー、エラスティック プール、およびデータベース レベルの概要が表示されます。 さらに、各パースペクティブは、右側のレポートに固有のパースペクティブを示しています。 一覧からサブスクリプション、サーバー、プール、またはデータベースを選択すると、ドリルダウンが続行されます。
データベースの Azure SQL Analytics タイルが選択されると、監視ダッシュボードが表示されます。
タイルのいずれかを選択すると、特定のパースペクティブにドリルダウン レポートが開きます。 パースペクティブを選択すると、ドリルダウン レポートが開きます。
SQL Managed Instance ビューを選択すると、マネージド インスタンス全体で実行されるクエリのインスタンス使用率、インスタンス データベース、テレメトリの詳細が表示されます。
Azure SQL Database Intelligent Insights を使用すると、すべての Azure SQL データベースのパフォーマンスで何が起こっているかを知ることができます。 収集されたすべての Intelligent Insights は、Insights の観点から視覚化およびアクセスできます。
エラスティック プールとデータベースには、指定された時間内にリソースに対して収集されたすべてのデータを表示する独自のレポートがあります。
クエリ期間とクエリ待機の観点から、クエリ レポートを使用してクエリのパフォーマンスを関連付けることができます。 このレポートでは、異なるデータベース間でクエリのパフォーマンスが比較され、選択したクエリを適切に実行するデータベースと低速なデータベースを簡単に特定できます。
Azure SQL Analytics (プレビュー) を使用するには、ユーザーに Azure の閲覧者ロールの最小アクセス許可を付与する必要があります。 ただし、このロールでは、ユーザーがクエリ テキストを表示したり、自動チューニング アクションを実行したりすることはできません。 Azure SQL Analytics を最大限に使用できる、Azure のより緩やかなロールは、所有者、共同作成者、SQL DB 共同作成者、または SQL Server 共同作成者です。 また、Azure SQL Analytics を使用するためにのみ必要な特定のアクセス許可を持ち、他のリソースを管理するアクセス権を持たないカスタム ロールをポータルで作成することを検討することもできます。
注意
Azure Az PowerShell モジュールを使用して Azure と対話することをお勧めします。 作業を開始するには、Azure PowerShell のインストールに関する記事を参照してください。 Az PowerShell モジュールに移行する方法については、「Azure PowerShell を AzureRM から Azに移行する」を参照してください。
一部の組織が Azure で厳密なアクセス許可制御を適用していることを認識し、Azure SQL Analytics を最大限に使用するために必要な最小限の読み取りおよび書き込みアクセス許可を持つカスタム ロール "SQL Analytics 監視オペレーター" を Azure portal で作成できる次の PowerShell スクリプトを見つけます。
次のスクリプトの "{SubscriptionId}" を Azure サブスクリプション ID に置き換え、Azure で所有者または共同作成者ロールとしてログインしたスクリプトを実行します。
Connect-AzAccount
Select-AzSubscription {SubscriptionId}
$role = Get-AzRoleDefinition -Name Reader
$role.Name = "SQL Analytics Monitoring Operator"
$role.Description = "Lets you monitor database performance with Azure SQL Analytics as a reader. Does not allow change of resources."
$role.IsCustom = $true
$role.Actions.Add("Microsoft.SQL/servers/databases/read");
$role.Actions.Add("Microsoft.SQL/servers/databases/topQueries/queryText/*");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/read");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/write");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/read");
$role.Actions.Add("Microsoft.Sql/servers/databases/advisors/recommendedActions/write");
$role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/read");
$role.Actions.Add("Microsoft.Sql/servers/databases/automaticTuning/write");
$role.Actions.Add("Microsoft.Sql/servers/advisors/read");
$role.Actions.Add("Microsoft.Sql/servers/advisors/write");
$role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/read");
$role.Actions.Add("Microsoft.Sql/servers/advisors/recommendedActions/write");
$role.Actions.Add("Microsoft.Resources/deployments/write");
$role.AssignableScopes = "/subscriptions/{SubscriptionId}"
New-AzRoleDefinition $role
新しいロールが作成されたら、Azure SQL Analytics を使用するためのカスタム アクセス許可を付与する必要がある各ユーザーにこのロールを割り当てます。
Azure SQL Analytics のデータ分析は、カスタムのクエリとレポート用 Log Analytics 言語 に基づいています。 カスタム クエリ用にデータベース リソースから収集された使用可能なデータの説明については、使用可能なメトリックとログ参照してください。
Azure SQL Analytics での自動アラートは、条件が満たされた場合にアラートをトリガーする Log Analytics クエリの記述に基づいています。 Azure SQL Analytics でアラートを設定できる Log Analytics クエリの例をいくつか以下に示します。
データが Azure SQL Database リソースから来るアラートを簡単に作成できます。 ログ アラートで使用できるログ クエリ 便利な例を次に示します。
AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/DATABASES/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart
注意
- このアラートを設定する事前要件は、監視対象データベースが、Azure SQL Analytics で使用される Log Analytics ワークスペースに基本的なメトリックをストリーミングすることです。
- 代わりに、
cpu_percent
MetricName 値をdtu_consumption_percent
に置き換えて、高い DTU 結果を取得します。
AzureMetrics
| where ResourceProvider=="MICROSOFT.SQL"
| where ResourceId contains "/ELASTICPOOLS/"
| where MetricName=="cpu_percent"
| summarize AggregatedValue = max(Maximum) by bin(TimeGenerated, 5m)
| render timechart
注意
- このアラートを設定する事前要件は、監視対象データベースが、Azure SQL Analytics で使用される Log Analytics ワークスペースに Basic メトリックをストリーミングすることです。
- 代わりに、
cpu_percent
MetricName 値をdtu_consumption_percent
に置き換えて、高い DTU 結果を取得します。
let time_range = 1h;
let storage_threshold = 95;
AzureMetrics
| where ResourceId contains "/DATABASES/"
| where MetricName == "storage_percent"
| summarize max_storage = max(Average) by ResourceId, bin(TimeGenerated, time_range)
| where max_storage > storage_threshold
| distinct ResourceId
注意
- このアラートを設定する事前要件は、監視対象データベースが、Azure SQL Analytics で使用される Log Analytics ワークスペースに基本的なメトリックをストリーミングすることです。
- このクエリでは、クエリの結果 (> 0 件の結果) がある場合にアラートを起動するようにアラート ルールを設定する必要があります。これは、条件が一部のデータベースに存在することを示します。 出力は、定義された
time_range
内のstorage_threshold
の上にあるデータベース リソースの一覧です。 - 出力は、定義された
time_range
内のstorage_threshold
の上にあるデータベース リソースの一覧です。
重要
データベースのパフォーマンスが良好で、Intelligent Insights が生成されていない場合、このクエリはエラー メッセージで失敗します:rootCauseAnalysis_s
という名前のスカラー式を解決できませんでした。 この動作は、データベースのインテリジェントな分析情報が存在しないすべての場合に想定されます。
let alert_run_interval = 1h;
let insights_string = "hitting its CPU limits";
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| where TimeGenerated > ago(alert_run_interval)
| where rootCauseAnalysis_s contains insights_string
| distinct ResourceId
注意
- このアラートを設定する事前要件は、監視対象データベースが SQLInsights 診断ログを Azure SQL Analytics で使用される Log Analytics ワークスペースにストリーミングすることです。
- このクエリでは、重複する結果を回避するために、
alert_run_interval
と同じ頻度で実行するようにアラート ルールを設定する必要があります。 クエリの結果 (> 0 件の結果) がある場合にアラートを起動するようにルールを設定する必要があります。 -
alert_run_interval
をカスタマイズして、SQLInsights ログを Azure SQL Analytics にストリーミングするように構成されたデータベースで条件が発生したかどうかを確認する時間範囲を指定します。 - insights_stringをカスタマイズして、Insights の根本原因分析テキストの出力をキャプチャします。 これは、既存の分析情報から使用できるのと同じテキストが Azure SQL Analytics の UI に表示されます。 または、以下のクエリを使用して、サブスクリプションで生成されたすべての Insights のテキストを表示することもできます。 クエリの出力を使用して、Insights でアラートを設定するための個別の文字列を取得します。
AzureDiagnostics
| where Category == "SQLInsights" and status_s == "Active"
| distinct rootCauseAnalysis_s
let storage_percentage_threshold = 90;
AzureDiagnostics
| where Category =="ResourceUsageStats"
| summarize (TimeGenerated, calculated_storage_percentage) = arg_max(TimeGenerated, todouble(storage_space_used_mb_s) *100 / todouble (reserved_storage_mb_s))
by ResourceId
| where calculated_storage_percentage > storage_percentage_threshold
注意
- このアラートを設定する前提条件は、監視対象のマネージド インスタンスで、Azure SQL Analytics によって使用される Log Analytics ワークスペースに対して ResourceUsageStats ログのストリーミングが有効になっているということです。
- このクエリでは、クエリから結果 (> 0 の結果) が存在する場合にアラートを起動するようにアラート ルールを設定する必要があります。これは、条件がマネージド インスタンスに存在することを示します。 出力は、マネージド インスタンスでのストレージ使用量の割合です。
let cpu_percentage_threshold = 95;
let time_threshold = ago(1h);
AzureDiagnostics
| where Category == "ResourceUsageStats" and TimeGenerated > time_threshold
| summarize avg_cpu = max(todouble(avg_cpu_percent_s)) by ResourceId
| where avg_cpu > cpu_percentage_threshold
注意
- このアラートを設定する前提条件は、監視対象のマネージド インスタンスで、Azure SQL Analytics によって使用される Log Analytics ワークスペースに対して ResourceUsageStats ログのストリーミングが有効になっているということです。
- このクエリでは、クエリから結果 (> 0 の結果) が存在する場合にアラートを起動するようにアラート ルールを設定する必要があります。これは、条件がマネージド インスタンスに存在することを示します。 出力は、マネージド インスタンスで定義された期間の平均 CPU 使用率の使用率です。
Azure SQL Analytics (プレビュー) は無料で使用できますが、毎月割り当てられる無料のデータ インジェストユニットを超える診断テレメトリの使用には料金が発生します。Log Analytics の価格については を参照してください。 提供されるデータ インジェストの無料の単位により、毎月複数のデータベースを無料で監視できます。 ワークロードが重いアクティブなデータベースは、アイドル状態のデータベースに比べてもっと多くのデータを取り込みます。 Azure SQL Analytics のナビゲーション メニューで OMS ワークスペースを選択し、[使用量] と [推定コスト] を選択することで、Azure SQL Analytics でのデータ インジェストの消費量を簡単に監視できます。
- Azure Monitor で ログ クエリを使用して、詳細な Azure SQL データを表示します。
- Azure SQL データを表示 独自のダッシュボードを作成します。
- 特定の Azure SQL イベントが発生したときに アラートを作成します。
- Azure Monitor を使用して Azure SQL Database を監視する
- Azure Monitor を使用して Azure SQL Managed Instance を監視する