メトリックとアラートを使用して Azure SQL Database を監視する
適用対象: Azure SQL データベース
Azure Monitor メトリック を使用して、データベースとエラスティック プールのリソースの消費量と正常性を監視できます。 メトリック値が潜在的な問題を示している場合は、アラートを使用して通知を送信できます。
メトリック
メトリックは、一定の期間で測定される一連の数値です。多くの場合、単位 (count
、percent
、bytes
など) を使用します。メトリックの性質に応じて、集計 (total
、count
、average
、minimum
、maximum
など) を使用して、一定期間にわたってメトリック値を計算できます。 一部のメトリックは分析コードごとに分割できます。 各分析コードは、数値に追加のコンテキストを提供します。
使用可能な Azure SQL Database メトリックの例を次に示します: CPU percentage
、Data space used
、Deadlocks
、Tempdb Percent Log Used
。
Azure SQL Database で使用可能なすべてのメトリックについては、データベース メトリックスとエラスティック プール メトリックを参照してください。
Note
一部のメトリックは、特定の種類のデータベースまたはエラスティック プールにのみ適用されます。 使用が特定のデータベースまたはエラスティック プールの種類 (仮想コア、Hyperscale、サーバーレスなど) に制限されている場合、各メトリックの説明メンション。
Azure SQL Database ポータルでは、[概要] ページの [監視] タブに一般的に使用されるメトリックがいくつかグラフ化されています。 このメトリックにより、データベースまたはエラスティック プールのリソース消費量と正常性をひとめで評価できます。
[主要なメトリック] で、[すべてのメトリックスを表示] またはグラフ内の任意の場所を選択してメトリックス エクスプローラーを開きます。 [メトリックス] ページでは、データベースまたはエラスティック プール リソースで使用可能な他のすべてのメトリックスを表示できます。 メトリックス エクスプローラーでは、グラフの時間の範囲、粒度、集計の種類を変更したり、グラフの種類を変更したり、他の Azure リソースからのメトリックを含むようにスコープを展開したり、アラート ルールを作成したりできます。ソース メニューの [監視] の [メトリックス] メニュー項目を選択してメトリックス エクスプローラーを開くこともできます。
メトリックスを使用してデータベースとエラスティック プールを監視する
メトリックスを使用して、データベースとエラスティック プールのリソースの消費量と正常性を監視できます。 たとえば、次のようなことができます。
- アプリケーション ワークロードに合わせてデータベースまたはエラスティック プールのサイズを適切に設定する
- リソース消費量の段階的な増加を検出し、データベースまたはエラスティック プールを事前にスケールアップする
- パフォーマンスの問題を検出しトラブルシューティングする
次の表では、Azure SQL Database でよく使用されるメトリックスについて説明します。
メトリックの名前 | メトリック ID | 説明 |
---|---|---|
CPU 使用率 | cpu_percent |
このメトリックは、データベースまたはエラスティック プールのユーザー ワークロード制限に対する CPU 消費量をパーセンテージで示します。 詳細については、「ユーザー ワークロードと内部プロセスによるリソース使用量」を参照してください。 |
SQL インスタンスの CPU 使用率 | sql_instance_cpu_percent |
このメトリックは、ユーザーとシステムのワークロードによる CPU 消費量の合計をパーセンテージで示します。 このメトリックと CPU 使用率メトリックは異なるスケールで測定されるため、互いに直接比較することはできません。 詳細については、「ユーザー ワークロードと内部プロセスによるリソース使用量」を参照してください。 |
データ IO の割合 | physical_data_read_percent |
このメトリックは、データベースまたはエラスティック プールのユーザー ワークロード制限に対するデータ ファイル IO 消費量をパーセンテージで示します。 詳細については、「データ IO ガバナンス」に関するページを参照してください。 |
ログ IO の割合 | log_write_percent |
このメトリックは、データベースまたはエラスティック プールのユーザー ワークロード制限に対するトランザクション ログ書き込みスループットの消費量をパーセンテージで示します。 詳細については、「トランザクション ログ速度ガバナンス」を参照してください。 |
ワーカーの割合 | workers_percent |
このメトリックは、データベースまたはエラスティック プールの ユーザー ワークロード制限に対するワーカー スレッドの消費量をパーセンテージで示します。 |
DTU の割合 | dtu_consumption_percent |
このメトリックは、データベースまたはエラスティック プールのユーザー ワークロード制限に対する DTU 消費量をパーセンテージで示します。 DTU の割合は、CPU の割合、データ IO の割合、およびログ IO の割合という他の 3 つのメトリックから得られます。 任意の時点で、DTU の割合は、これら 3 つのメトリックの中で最も高い値と一致します。 |
使用された CPU | cpu_used |
このメトリックは、データベースまたはエラスティック プールのユーザー ワークロード制限に対する CPU 消費量を仮想コアの数として表します。 詳細については、「Azure SQL Database での高い CPU の診断とトラブルシューティング」を参照してください。 |
使用された DTU | dtu_used |
このメトリックは、データベースまたはエラスティック プールで使用される DTU の数を示します。 |
課金されるアプリ CPU | app_cpu_billed |
サーバーレス データベースの場合、このメトリックは課金されるコンピューティング (CPU とメモリ) の量を仮想コア秒数で示します。 詳細については、「サーバーレス コンピューティング レベルでの課金」を参照してください。 |
アプリ CPU の割合 | app_cpu_percent |
サーバーレス データベースの場合、このメトリックは、アプリ パッケージの最大仮想コア制限に対する CPU 消費量をパーセンテージで示します。 詳細については、「サーバーレス コンピューティング レベルでの監視」を参照してください。 |
アプリ メモリの割合 | app_memory_percent |
サーバーレス データベースの場合、このメトリックは、アプリ パッケージの最大メモリ制限に対するメモリ消費量をパーセンテージで示します。 詳細については、「サーバーレス コンピューティング レベルでの監視」を参照してください。 |
Sessions count (セッション数) | sessions_count |
このメトリックは、データベースまたはエラスティック プールに対して確立されたユーザー セッションの数を示します。 |
使用済みのデータ領域 | storage |
データベースの場合、このメトリックは、データベースのデータ ファイルで使用される記憶域スペースの量を示します。 |
使用済みのデータ領域 | storage_used |
エラスティック プールの場合、このメトリックは、エラスティック プール内のすべてのデータベースのデータ ファイルで使用される記憶域スペースの量を示します。 |
割り当て済みのデータ領域 | allocated_data_storage |
このメトリックは、データベースのデータ ファイルまたはエラスティック プール内のすべてのデータベースのデータ ファイルによって占有される記憶域スペースの量を示します。 データ ファイルには空のスペースが含まれている場合があります。 このため、割り当てられるデータ スペースは、同じデータベースまたはエラスティック プールに使用されるデータ スペースよりも多くなること多いです。 詳細については、「Manage file space for databases in Azure SQL Database」(Azure SQL Database でデータベースのファイル スペースを管理する) を参照してください。 |
使用済みのデータ スペースの割合 | storage_percent |
データベースの場合、このメトリックは、データベースのデータ サイズ制限に対するデータベースのデータ ファイルで使用される記憶域スペースの量を示します。 エラスティック プールの場合、エラスティック プール内のすべてのデータベースのデータ ファイルで使用される記憶域スペースの量が、エラスティック プールのデータ サイズ制限に対する割合で表されます。 データベースまたはエラスティック プールのデータ サイズ制限が、最大データ サイズ制限より低く構成されている可能性があります。 最大データ サイズの制限については、仮想コア データベース、仮想コア エラスティック プール、DTU データベース、DTU エラスティック プールのリソース制限に関するページを参照してください。 |
割り当て済みのデータ スペースの割合 | allocated_data_storage_percent |
エラスティック プールの場合、このメトリックは、エラスティック プール内のすべてのデータベースのデータ ファイルによって占有される記憶域スペースの量を、プールのデータ サイズ制限に対してパーセンテージで示します。 |
Tempdb ログ使用率 | tempdb_log_used_percent |
このメトリックは、最大ログ サイズに対する tempdb データベース内のトランザクション ログ スペースの使用量をパーセンテージで示します。 詳細については、「Azure SQL Database の tempdb」を参照してください。 |
成功した接続 | connection_successful |
このメトリックは、データベースへの接続が正常に確立された数を示します。 このメトリックは、2 つの分析コード、SslProtocol と ValidatedDriverNameAndVersion で分割でき、特定の暗号化プロトコル バージョンまたは特定のクライアント ドライバーを使用して接続の数を確認できます。 |
失敗した接続: システム エラー | connection_failed |
このメトリックは、内部サービス エラーが原因で失敗したデータベースへの接続試行回数を示します。 最も一般的に、このようなエラーは一時的なものです。 このメトリックは、2 つの分析コード、Error と ValidatedDriverNameAndVersion で分割でき、特定のエラー、または特定のクライアント ドライバーが原因で失敗した接続試行の数を確認したり、 |
失敗した接続: ユーザー エラー | connection_failed_user_error |
このメトリックは、パスワードが正しくない、ファイアウォールによって接続がブロックされているなど、ユーザーが修正可能なエラーのために失敗したデータベースへの接続試行回数を示します。 このメトリックは、2 つの分析コード、Error と ValidatedDriverNameAndVersion で分割でき、特定のエラー、または特定のクライアント ドライバーが原因で失敗した接続試行の数を確認したり、 |
デッドロック | deadlock |
このメトリックは、データベース内のデッドロック状態の数を示します。 |
可用性 | availability |
可用性は、接続に対して動作しているデータベースに基づいて決定されます。 1 分間のデータ ポイントごとに、使用可能な値は 100% か 0% のいずれかです。 詳細については、可用性のメトリックに関するページをご覧ください。 |
可用性のメトリック
可用性メのトリックは、個々の Azure SQL データベースレベルで可用性を追跡します。 この機能は現在はプレビュー中です。
可用性は、接続停止の 1 分間に細かく設定されます。 可用性は、接続に対して動作しているデータベースに基づいて決定されます。 データベースへの接続の確立を 1 分間連続して試行し、サービスの問題ですべての試行が失敗した場合、そのデータベースは 1 分間ダウンタイムだったか使用できなかったとみなされます。 間欠的な使用不能がある場合、継続的な利用不可の期間は、ダウンタイムと見なされるためには、その分の境界を越える必要があります。 通常、可用性を表示する待機時間は 3 分未満です。
1 分サイクル間隔ごとに可用性を計算するために使用されるロジックを次に示します。
- 接続に成功した接続が 1 つ以上ある場合、可用性は 100% になります。
- ユーザー エラーが原因ですべての接続が失敗した場合、可用性は 100% になります。
- 接続試行がない場合、可用性は 100% です。
- システム エラーが原因ですべての接続が失敗した場合、可用性は 0% になります。
- 現在、可用性メトリック データはサーバーレス コンピューティング レベルではまだサポートされておらず、100% として表示されます。
したがって、可用性メトリックは、次の既存のメトリックから派生した複合メトリックです。
- 成功した接続
- 失敗した接続: ユーザー エラー
- ファイアウォールによってブロックされる
- 失敗した接続: システム エラー
ユーザー エラーには、ユーザーの構成、ワークロード、または管理のために失敗したすべての接続が含まれます。 システム エラーには、Azure SQL データベースサービスに関連する一時的な問題が原因で失敗したすべての接続が含まれます。
ユーザー構成によって発生するエラーの例:
ユーザー ワークロードによって発生するエラーの例:
ユーザー管理によって発生するエラーの例:
- データベースまたは Elastic Pool のスケールアップまたはスケールダウン
- geo レプリケーションの計画または解除計画フェールオーバー
- フェールオーバー グループの計画されているまたは計画されていないフェールオーバー
- シード処理状態の geo セカンダリ データベース
- ポイントインタイム リストア (PITR)、長期復元 (LTR)、または削除されたデータベースからの復元が原因で復元状態にあるデータベース
- まだコピーが完了していないデータベース (データベース コピー)
警告
アラート ルールを作成して、1 つのメトリックまたは複数のメトリックスの値が想定範囲外であることを通知できます。
アラート ルールの範囲は、ニーズに合わせて複数の方法で設定できます。 たとえば、アラート ルールの範囲は次のように設定できます。
- 単一データベース
- エラスティック プール
- リソース グループ内のすべてのデータベースまたはエラスティック プール
- Azure リージョン内のサブスクリプションのすべてのデータベースまたはエラスティック プール
- すべてのリージョン内のサブスクリプションのすべてのデータベースまたはエラスティック プール
アラート ルールは、ルックバック期間中に集計メトリック値を定期的に評価し、しきい値と比較します。 しきい値、評価頻度、およびルックバック期間を構成できます。
アラート ルールがトリガーされると、通知設定に従って通知されます。通知設定は、アラート ルールにリンクされているアクション グループで指定します。 たとえば、メール、SMS、音声通知を受信できます。 アラート ルールでは、Webhook、Automation Runbook、FUNCTION、ロジック アプリなどのアクションをトリガーすることもできます。アラートは、サポートされている IT サービスマネジメント製品と統合できます。
Azure Monitor のアラートについて詳しくは、「Azure Monitor のアラートの概要」に関するページをご覧ください。 メトリック アラートを理解するには、メトリック アラート、アラート ルールの管理、アクション グループを確認します。
推奨されるアラート ルール
アラート ルールで使用するメトリックと最適なしきい値は、Azure SQL Database のさまざまな顧客のワークロードによって異なります。
次の表の推奨されるアラートは、Azure SQL Database リソースに最適なアラート構成を定義するのに役立つ開始点です。 要件によっては、構成がこの例と異なる場合があります。 さまざまなしきい値、評価頻度、またはルックバック期間を使用できます。 追加のアラートを作成することも、異なるアプリケーションや環境に対して異なるアラート ルール構成を使用することもできます。
一般的なアラート ルールの構成の例を次に示します。
アラート ルール名 | メトリック (信号) | アラート ロジック | 評価するタイミング | 推奨される重大度 |
---|---|---|---|---|
ユーザー CPU 使用率が高い | CPU 使用率 | しきい値: Static 集計: Average 演算子: Greater than しきい値: 90 |
すべてのチェック: 1 minute ルックバック期間: 10 minutes |
2- 警告 |
CPU 使用率の合計が高い | SQL インスタンスの CPU 使用率 | しきい値: Static 集計: Average 演算子: Greater than しきい値: 90 |
すべてのチェック: 1 minute ルックバック期間: 10 minutes |
2- 警告 |
ワーカーの使用率が高い | ワーカーの割合 | しきい値: Static 集計: Minimum 演算子: Greater than しきい値: 60 |
すべてのチェック: 1 minute ルックバック期間: 5 minutes |
1 - エラー |
高いデータ IO 使用量 | データ IO の割合 | しきい値: Static 集計: Average 演算子: Greater than しきい値: 90 |
すべてのチェック: 1 minute ルックバック期間: 15 minutes |
3 - 情報 |
データ スペースが少ない | 使用済みのデータ スペースの割合 | しきい値: Static 集計: Minimum 演算子: Greater than しきい値: 95 |
すべてのチェック: 15 minute ルックバック期間: 15 minutes |
1 - エラー |
tempdb ログ スペースが少ない |
Tempdb ログ使用率 | しきい値: Static 集計: Minimum 演算子: Greater than しきい値: 60 |
すべてのチェック: 1 minute ルックバック期間: 5 minutes |
1 - エラー |
デッドロック | デッドロック | しきい値: Dynamic 集計: Total 演算子: Greater than しきい値の感度: Medium |
すべてのチェック: 15 minutes ルックバック期間: 1 hour |
3 - 情報 |
失敗した接続 (ユーザー エラー) | 失敗した接続: ユーザー エラー | しきい値: Dynamic 集計: Total 演算子: Greater than しきい値の感度: Medium |
すべてのチェック: 5 minutes ルックバック期間: 15 minutes |
2- 警告 |
失敗した接続 (システム エラー) | 失敗した接続: システム エラー | しきい値: Static 集計: Total 演算子: Greater than 単位: Count しきい値: 10 |
すべてのチェック: 1 minute ルックバック期間: 5 minutes |
2- 警告 |
異常な接続速度 | 成功した接続 | しきい値: Dynamic 集計: Total 演算子: Greater or Less than しきい値の感度: Low |
すべてのチェック: 5 minutes ルックバック期間: 15 minutes |
2- 警告 |
推奨されるアラート ルールの一部では、動的しきい値を使用して、注意が必要になる可能性がある異常なメトリック パターンを検出します。 動的しきい値に基づくアラート ルールは、通常のパターンを確立するために十分な履歴データが収集されるまでトリガーされません。 詳細については、「メトリック アラートでの動的しきい値」を参照してください。
既定では、メトリック アラートはステートフルです。 つまり、アラート ルールがトリガーされると、アラートは 1 回だけ発生します。 アラートは解決されるまで fired
状態に残り、その時点で resolved
通知が送信されます。 アラート ルールは、前のアラートが解決された後にのみ新しいアラートをトリガーします。 ステートフル アラートは、継続的な状態に関する頻繁な通知を回避します。 ステートフル アラートとステートレス アラートの詳細については、「アラートと状態」を参照してください。
関連するコンテンツ
- Azure Monitor メトリックスの概要
- Database Watcher を使用して Azure SQL ワークロードを監視する (プレビュー)
- Azure Monitor メトリック エクスプローラーを使用してメトリックを分析する
- Azure Monitor メトリックス集計と説明された表示
- Azure Monitor アラートの概要
- チュートリアル: Azure リソースのメトリック アラートを作成する
- Azure Monitor アラートのベスト プラクティス
- Azure Monitor のアラートの問題のトラブルシューティング
- Azure SQL Database と Azure SQL Managed Instance での監視とパフォーマンス チューニング
- Azure SQL Database および SQL Managed Instance 診断テレメトリのストリーミング エクスポートを構成する