メトリックとアラートを使用して Azure SQL Database を監視する

適用対象:Azure SQL Database

Azure Monitor メトリック を使用して、データベースとエラスティック プールのリソースの消費量と正常性を監視できます。 メトリック値が潜在的な問題を示している場合は、アラートを使用して通知を送信できます。

メトリック

メトリックは、一定の期間で測定される一連の数値です。多くの場合、単位 (countpercentbytesなど) を使用します。メトリックの性質に応じて、集計 (totalcountaverageminimummaximumなど) を使用して、一定期間にわたってメトリック値を計算できます。 一部のメトリックは分析コードごとに分割できます。 各分析コードは、数値に追加のコンテキストを提供します。

使用可能な Azure SQL Database メトリックの例を次に示します: CPU percentageData space usedDeadlocksTempdb Percent Log Used

Azure SQL Database で使用可能なすべてのメトリックについては、データベース メトリックスエラスティック プール メトリックを参照してください。

Note

一部のメトリックは、特定の種類のデータベースまたはエラスティック プールにのみ適用されます。 使用が特定のデータベースまたはエラスティック プールの種類 (仮想コア、Hyperscale、サーバーレスなど) に制限されている場合、各メトリックの説明メンション。

Azure SQL Database ポータルでは、[概要] ページの [監視] タブに一般的に使用されるメトリックがいくつかグラフ化されています。 これにより、データベースまたはエラスティック プールのリソース消費量と正常性をひとめで評価できます。

Azure SQL データベース の [概要] ページに表示されているメトリック グラフの Azure portal のスクリーンショット。

[主要なメトリック] で、[すべてのメトリックスを表示] またはグラフ内の任意の場所を選択してメトリックス エクスプローラーを開きます。 [メトリックス] ページでは、データベースまたはエラスティック プール リソースで使用可能な他のすべてのメトリックスを表示できます。 メトリックス エクスプローラーでは、グラフの時間の範囲、粒度、集計の種類を変更したり、グラフの種類を変更したり、他の 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 つの分析コード、SslProtocolValidatedDriverNameAndVersion で分割でき、特定の暗号化プロトコル バージョンまたは特定のクライアント ドライバーを使用して接続の数を確認できます。
失敗した接続: システム エラー connection_failed このメトリックは、内部サービス エラーが原因で失敗したデータベースへの接続試行回数を示します。 最も一般的に、このようなエラーは一時的なものです。 このメトリックは、2 つの分析コード、ErrorValidatedDriverNameAndVersion で分割でき、特定のエラー、または特定のクライアント ドライバーが原因で失敗した接続試行の数を確認したり、
失敗した接続: ユーザー エラー connection_failed_user_error このメトリックは、パスワードが正しくない、ファイアウォールによって接続がブロックされているなど、ユーザーが修正可能なエラーのために失敗したデータベースへの接続試行回数を示します。 このメトリックは、2 つの分析コード、ErrorValidatedDriverNameAndVersion で分割でき、特定のエラー、または特定のクライアント ドライバーが原因で失敗した接続試行の数を確認したり、
デッドロック deadlock このメトリックは、データベース内のデッドロック状態の数を示します。

警告

アラート ルールを作成して、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 通知が送信されます。 アラート ルールは、前のアラートが解決された後にのみ新しいアラートをトリガーします。 ステートフル アラートは、継続的な状態に関する頻繁な通知を回避します。 ステートフル アラートとステートレス アラートの詳細については、「アラートと状態」を参照してください。