Azure Cosmos DB を監視する

この記事では、以下について説明します。

  • このサービスに対して収集できる監視データの種類。
  • そのデータを分析する方法。

このサービスや Azure Monitor を既に理解していて、監視データの分析方法を知りたい場合は、この記事の最後にある「Analyze」セクションを参照してください。

Azure リソースに依存するクリティカルなアプリケーションやビジネス プロセスがある場合は、システムを監視し、そのアラートを受け取る必要があります。 Azure Monitor サービスでは、システムのすべてのコンポーネントからメトリックとログを収集して集計します。 Azure Monitor を使用すると、可用性、パフォーマンス、回復性を視覚化し、問題に関する通知を受け取ることができます。 Azure ポータル、PowerShell、Azure CLI、REST API、またはクライアント ライブラリを使用して、監視データを設定および表示できます。

  • Azure Monitorの詳細については、Azure Monitorの概要を参照してください。
  • Azure リソース全般を監視する方法の詳細については、「Azure Monitor を使用した Azure リソースの監視」を参照してください。

分析情報

Azure の一部のサービスについては、サービスを監視するための開始点となる監視ダッシュボードが Azure portal に組み込まれています。 これらのダッシュボードは insights と呼ばれ、Azure ポータルの Insights Hub Azure Monitor で見つけることができます。

Azure Cosmos DB 分析情報

Azure Cosmos DB 分析情報は、Azure Monitor のワークブック機能に基づいた機能です。 Azure Cosmos DB 分析情報を使用して、すべての Azure Cosmos DB リソースの全体的なパフォーマンス、失敗、容量、操作上の正常性を、統一された対話型エクスペリエンスのビューで表示します。

Azure Cosmos DB 分析情報の詳細については、次の記事をご覧ください。

リソースの種類

Azure では、リソースの種類と ID の概念を使用して、サブスクリプション内のすべてを識別します。 リソースの種類は、Azure で実行されているすべてのリソースのリソース ID の一部でもあります。 たとえば、仮想マシンの 1 つのリソースの種類は Microsoft.Compute/virtualMachines です。 サービスとそれに関連付けられているリソースの種類の一覧については、「 リソース プロバイダー」を参照してください。

Azure Monitor は同様に、コア監視データを、リソースの種類 (namespaces とも呼ばれる) に基づいてメトリックとログに編成します。 リソースの種類に応じてさまざまなメトリックとログが使用できます。 サービスは、複数のリソースの種類に関連付けられる可能性があります。

Azure Cosmos DB のリソースの種類の詳細については、「Azure Cosmos DB の監視データのリファレンス」を参照してください。

データストレージ

Azure Monitor の場合:

  • メトリック データは、Azure Monitor メトリック データベースに格納されます。
  • ログ データは、Azure Monitor ログ ストアに保存されます。 Log Analytics は、Azure portal のツールの 1 つであり、このストアに対してクエリを実行することができます。
  • Azure アクティビティ ログは、Azure ポータル内の独自のインターフェイスを持つ別のストアです。

必要に応じて、メトリックおよびアクティビティ ログ データを Azure Monitor ログ ストアにルーティングできます。 次に、Log Analytics を使用してデータのクエリを実行し、他のログ データと関連付けることができます。

多くのサービスでは、診断設定を使用して、メトリックとログ データをAzure Monitor外の他のストレージの場所に送信できます。 たとえば、Azure Storage、ホステッド パートナー システムEvent Hubs を使用する Azure 以外のパートナー システムなどがあります。

Azure Monitor によるデータの保存方法の詳細については、「Azure Monitor データ プラットフォーム」を参照してください。

Azure Monitor プラットフォームのメトリック

Azure Monitor は、ほとんどのサービスにプラットフォーム メトリックを提供します。 これらのメトリックは次のとおりです。

  • 名前空間ごとに個別に定義されます。
  • Azure Monitor 時系列メトリック データベースに格納されます。
  • 軽量であり、凖リアルタイムのアラートをサポートできます。
  • リソースのパフォーマンスを時間の経過と共に追跡するために使用されます。

収集: Azure Monitor では、プラットフォーム メトリックを自動的に収集します。 構成は必要ありません。

Routing: 他のログ データを使用してクエリを実行できるように、一部のプラットフォーム メトリックを Azure Monitor Logs/Log Analytics にルーティングすることもできます。 各メトリックの DS エクスポート設定を確認して、診断設定を使用してメトリックを Azure Monitor ログまたは Log Analytics にルーティングできるかどうかを確認します。

Azure Monitor ですべてのリソースに対して収集できるすべてのメトリックの一覧については、Azure Monitor でサポートされるメトリックに関する記事を参照してください。

Azure Monitor では、既定で Azure Cosmos DB のメトリックが収集されます。 何も明示的に構成する必要はありません。 ほとんどのメトリックは、Azure Cosmos DB ポータル ページまたは Azure Monitor ページから使用できます。 既定では、メトリックは 1 分の細分性で収集されます。 細分性は、選択したメトリックによって異なる場合があります。 既定の保有期間について詳しくは、Azure Monitor メトリックの保有期間に関する記事を参照してください

Azure Cosmos DB のサーバー側のメトリックには、スループット、ストレージ、可用性、待機時間、一貫性、システム レベルのメトリックが含まれます。 クライアント側では、要求の料金、アクティビティ ID、例外とスタック トレースの情報、HTTP ステータスとサブステータスのコード、診断文字列の詳細を収集できます。 既定では、これらのメトリックの保持期間は 7 日間です。 このデータは、問題のデバッグや、Azure Cosmos DB サポート チームに問い合わせる必要がある場合に使用できます。

メトリックのディメンション値 (コンテナー名など) は、大文字と小文字の区別がありません。 この状況では、そのような名前を持つコンテナーに対するテレメトリとアクションで混乱や競合が発生する可能性があります。 これらのディメンション値に対して文字列比較を行う場合は、大文字と小文字を区別しない比較を使用してください。

Azure Cosmos DB で使用可能なメトリックの一覧については、「Azure Cosmos DB の監視データのリファレンス」を参照してください。

Azure Monitor ベース以外のメトリック

このサービスは、Azure Monitor メトリック データベースに含まれていない他のメトリックを提供します。

Azure Monitor のリソースログ

リソース ログは、Azure リソースによって実行された操作に関する分析情報を提供します。 ログは自動的に生成されますが、ログを保存またはクエリするには、ログを Azure Monitor ログにルーティングする必要があります。 ログはカテゴリに分類されています。 特定の名前空間に複数のリソース ログ カテゴリが含まれる場合があります。

収集: リソース ログは、"診断設定" を作成してログを 1 つ以上の場所にルーティングするまでは収集および保存されません。 診断設定を作成するときは、収集するログのカテゴリを指定します。 診断設定を作成して管理するには、Azure portal、プログラム、Azure Policy など、複数の方法があります。

ルーティング: 既定で推奨されるのは、リソース ログを Azure Monitor ログにルーティングして、他のログ データを使用してクエリを実行できるようにすることです。 Azure Storage、Azure Event Hubs、特定の Microsoft 監視パートナーなどのその他の場所も利用できます。 詳細については、「Azure リソース ログリソース ログの宛先を参照してください。

リソース ログの収集、保存、ルーティングの詳細については、「Azure Monitor の診断設定」を参照してください。

Azure Monitor で使用可能なすべてのリソース ログ カテゴリの一覧については、Azure Monitor でサポートされているリソース ログに関するページを参照してください。

Azure Monitor のすべてのリソース ログには、同じヘッダー フィールドがあり、その後にサービス固有のフィールドが続きます。 共通スキーマの概要は、Azure Monitor リソース ログ スキーマで説明されています。

Azure Cosmos DB アカウントの診断ログを監視し、Azure Monitor からダッシュボードを作成することができます。 1 秒単位で発生するイベントやトレースなどのデータは、ログとして格納されます。 たとえば、コンテナーのスループットが変化すると、Azure Cosmos DB アカウントのプロパティが変更されます。 ログには、これらのイベントがキャプチャされます。 収集したデータに対してクエリを実行することで、これらのログを分析できます。

使用可能なリソース ログ カテゴリ、関連する Log Analytics テーブル、および Azure Cosmos DB のログ スキーマについては、 Azure Cosmos DB 監視データリファレンスを参照してください

Azure 活動ログ

アクティビティ ログには、そのリソースの外部から見た各Azure リソースの操作を追跡するサブスクリプション レベルのイベントが含まれています。たとえば、新しいリソースの作成や仮想マシンの起動などです。

収集: アクティビティ ログ イベントは、Azure portal で表示するために、個別のストアに自動的に生成および収集されます。

ルーティング: アクティビティ ログ データを Azure Monitor ログに送信して、他のログ データと共に分析できます。 Azure Storage、Azure Event Hubs、特定の Microsoft 監視パートナーなどのその他の場所も利用できます。 アクティビティ ログのルーティング方法の詳細については、「Azure アクティビティ ログの概要を参照してください。

継続的バックアップ モードの復元アクションを監査する

アクティビティ ログを使うと、Azure Cosmos DB アカウントで実行された継続モードのすべてのポイントインタイム リストアの一覧を表示できます。 Azure portal でこれらの操作を表示する方法については、継続的バックアップ モードのポイントインタイム リストア アクションの監査に関する記事をご覧ください。

監視データを分析する

監視データを分析するためのツールは多数あります。

Azure Monitor ツール

Azure Monitor は、次の基本的なツールをサポートします。

より複雑な視覚化を可能にするツールは次のとおりです。

  • ダッシュボードを使用すると、さまざまな種類のデータを組み合わせて、Azure portal 内の 1 つのペインに表示できます。
  • Workbooks は、Azure ポータルで作成できるカスタマイズ可能なレポートです。 ワークブックには、テキスト、メトリック、ログクエリを含めることができます。
  • Grafana は、運用ダッシュボードに優れたオープン プラットフォーム ツールです。 Grafana を使用して、Azure Monitor 以外の複数のソースからのデータを含むダッシュボードを作成できます。
  • Power BI は、さまざまなデータ ソース間で対話型の視覚化を提供するビジネス分析サービスです。 これらの視覚化を利用するために、Azure Monitor からログ データを自動的にインポートするように Power BI を構成できます。

Azure Monitor エクスポート ツール

次の方法を使用して、Azure Monitor から他のツールにデータを取り込むことができます。

Azure Monitor 用の REST API を開始するには、Azure モニタリング REST API ウォークスルーを参照してください。

Azure Cosmos DB メトリックの分析

Azure Monitor メトリックス エクスプローラーを使用すると、Azure Cosmos DB アカウント ポータルのナビゲーションで [監視] の下にある [メトリック] を選択して、Azure Cosmos DB のメトリックを、他の Azure サービスからのメトリックと一緒に分析できます。 メトリックス エクスプローラーの使用方法の詳細については、「Azure Monitor メトリックス エクスプローラーでメトリックを分析する」を参照してください。

Azure Cosmos DB リソースのサーバー側の待機時間、要求ユニットの使用状況、正規化された要求ユニットの使用状況を監視できます。 要求ユニット、ストレージ、待機時間、可用性、Cassandra などに固有のメトリックを選択できます。

クライアント側では、要求の料金、アクティビティ ID、例外とスタック トレースの情報、HTTP ステータスとサブステータスのコード、診断文字列のメトリックを収集して問題をデバッグできます。

詳細情報と詳細な手順については、次の記事を参照してください。

Azure Monitor でサポートされているすべてのリソース メトリックの一覧については、「Azure Monitor でサポートされているメトリック」を参照してください。 Azure Cosmos DB 用に収集されるプラットフォーム メトリックの一覧については、「Azure Cosmos DB 監視データのリファレンス」の「メトリック」を参照してください。

Azure Cosmos DB をプログラムで監視する

ポータルで使用できるアカウント レベルのメトリック (アカウント ストレージの使用状況や要求総数) は、NoSQL 用 API を使用して取得することはできません。 ただし、NoSQL 用 API を使用してコレクション レベルで使用状況データを取得することはできます。 コレクション レベルのデータを取得するには、次のいずれかの方法を使用します。

その他のメトリックにアクセスするには、Azure Monitor SDK を使用します。 使用できるメトリック定義は、次の形式を使用して取得できます。

https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroup}/providers/Microsoft.DocumentDb/databaseAccounts/{DocumentDBAccountName}/providers/microsoft.insights/metricDefinitions?api-version=2018-01-01

メトリックを個別に取得する場合には、次の形式を使用します。

https://management.azure.com/subscriptions/{SubscriptionId}/resourceGroups/{ResourceGroup}/providers/Microsoft.DocumentDb/databaseAccounts/{DocumentDBAccountName}/providers/microsoft.insights/metrics?timespan={StartTime}/{EndTime}&interval={AggregationInterval}&metricnames={MetricName}&aggregation={AggregationType}&`$filter={Filter}&api-version=2018-01-01

詳細については、Azure 監視 REST API に関する記事をご覧ください。

Azure Cosmos DB ログの分析

Azure Monitor ログのデータはテーブルに格納されます。 各テーブルには、独自の固有のプロパティ セットがあります。 Azure Monitor 内のすべてのリソース ログには、同じフィールドの後にサービス固有のフィールドがあります。 共通スキーマの概要は、Azure Monitor リソース ログ スキーマで説明されています。

Azure Cosmos DB 用に収集されるリソース ログの種類については、「Azure Cosmos DB 監視データのリファレンス」を参照してください。

Azure Cosmos DB の Azure Monitor ログの操作の詳細については、次の記事を参照してください。

Kusto クエリ

Kusto クエリ言語 (KQL) を使用して、Azure監視ログ/Log Analytics ストアの監視データを分析できます。

Important

ポータルのサービスのメニューから Logs を選択すると、クエリ スコープが現在のサービスに設定された状態でLog Analyticsが開きます。 このスコープは、ログ クエリにその種類のリソースのデータのみが含まれることを意味します。 他の Azure サービスのデータを含むクエリを実行する場合は、[Azure Monitor] メニューから [ログ] を選択します。 詳細については、「Azure Monitor Log Analytics のログ クエリのスコープと時間範囲」を参照してください。

いずれかのサービスに関する一般的なクエリの一覧については、Log Analytics クエリ インターフェイスに関するページを参照してください。

Log Analytics を使用して Kusto クエリを発行する前に、 コントロール プレーン操作の診断ログを有効にする必要があります。 診断ログを有効にする場合は、リソース固有のテーブルまたは単一の AzureDiagnostics テーブル (レガシ) のどちらにデータを格納するかを選択します。 Kusto クエリの正確なテキストは、選択したコレクション モードによって異なります。

[ログ検索] 検索バーに入力して Azure Cosmos DB リソースの監視に利用できるクエリを紹介します。

Azure Cosmos DB からすべてのコントロール プレーン ログを照会するには:

CDBControlPlaneRequests

Azure Cosmos DB からすべてのデータ プレーンのログを照会するには:

CDBDataPlaneRequests

1 つのリソースに固有の、フィルター処理されたデータ プレーン ログの一覧を照会するには:

CDBDataPlaneRequests
| where AccountName=="<account-name>"

リソース別にグループ化されたデータ プレーン ログの数を取得するには:

CDBDataPlaneRequests
| summarize count() by AccountName

操作の種類別にグループ化されたデータ プレーン ログのグラフを生成するには:

CDBDataPlaneRequests
| summarize count() by OperationName
| render piechart

Azure Cosmos DB に関する問題のトラブルシューティングに使用できる Kusto クエリについては、次の記事を参照してください。

これらの例は、Kusto 照会言語 (KQL) を使用して Azure Monitor で実行できるたくさんのクエリのほんの一部にすぎません。 その他の例については、「Kusto クエリのサンプル」を参照してください。

Alerts

Azure Monitor のアラートにより、監視データで特定の状態が見つかったときに事前に通知を受け取ります。 アラートにより、ユーザーが気付く前に、管理者が問題を識別して対処できます。 詳細については、「Azure Monitor alerts」を参照してください。

Azure リソースに関する一般的なアラートのソースは数多くあります。 Azure リソースの一般的なアラートの例については、 ログ アラート クエリのサンプルを参照してください。 Azure Monitor Baseline Alerts (AMBA) サイトには、重要なプラットフォーム メトリック アラート、ダッシュボード、ガイドラインを実装するための半自動化された方法が用意されています。 このサイトは、Azure ランディング ゾーン (ALZ) の一部であるすべてのサービスを含む、Azure サービスの継続的に拡張されるサブセットに適用されます。

共通アラート スキーマを使用すると、Azure Monitor のアラート通知の使用を標準化できます。 詳細については、「共通アラート スキーマ」をご覧ください。

アラートの種類

Azure Monitor データ プラットフォームでは、任意のメトリックまたはログ データ ソースに対してアラートを生成できます。 監視するサービスと収集する監視データに応じて、さまざまな種類のアラートがあります。 アラートの種類に応じて、さまざまな利点と欠点があります。 詳細については、適切な種類の監視アラートの選択に関するページをご覧ください。

次の一覧では、作成できる Azure Monitor アラートの種類について説明します。

  • Metric alerts は、リソース メトリックを一定の間隔で評価します。 メトリックには、プラットフォーム メトリック、カスタム メトリック、Azure Monitor からメトリックに変換されたログ、または Application Insights メトリックを指定できます。 メトリック警告では、複数の条件と動的しきい値を適用することもできます。
  • ログ アラートを 使用すると、ユーザーは Log Analytics クエリを使用して、定義済みの頻度でリソース ログを評価できます。
  • アクティビティ ログ アラートは、定義された条件と一致する新しいアクティビティ ログ イベントが発生したときにトリガーされます。 Resource Health アラートと Service Health アラートは、サービスとリソースの正常性を報告するアクティビティ ログ アラートです。

一部の Azure サービスでは、スマート検出アラートPrometheus アラート推奨されるアラート ルールもサポートされています。

一部のサービスでは、同じ Azure リージョン内に存在する同じ種類の複数のリソースに同じメトリック警告ルールを適用することで、大規模に監視することができます。 監視対象リソースごとに個別の通知が送信されます。 サポートされている Azure サービスとクラウドについては、「1 つのアラート ルールで複数のリソースを監視する」をご覧ください。

Azure Cosmos DB の警告ルール

次の表に、Azure Cosmos DB の一般的および推奨される警告ルールを示します。

アラートの種類 状態 Description
要求ユニットのレート制限 (メトリック アラート) ディメンション名: StatusCode、演算子: Equals、ディメンション値: 429 コンテナーまたはデータベースがプロビジョニングされたスループット制限を超えた場合にアラートを生成します。
リージョンのフェールオーバー 演算子: Greater than、集計の種類: Count、しきい値: 1 単一のリージョンがフェイルオーバーされた場合。 このアラートは、サービスが管理するフェールオーバーを有効にしなかった場合に役立ちます。
キーのローテーション (アクティビティ ログ アラート) イベント レベル: Informational、ステータス: started アカウント キーがローテーションされるとアラートが表示されます。 新しいキーを使用してアプリケーションを更新できます。

Azure Cosmos DB のアラートを作成する方法の詳細と手順については、「メトリックに関するアラートを作成する」を参照してください。 論理パーティション キーのストレージが 20 GB に近づいているかどうかを監視するアラートを作成するには、「論理パーティション キーのサイズに関するアラートを作成する」を参照してください。

Advisor の推奨事項

一部のサービスでは、リソースの操作中にクリティカルな条件や差し迫った変更が発生した場合は、ポータルのサービス [概要] ページにアラートが表示されます。 アラートの詳細と推奨される修正は、左側のメニューの [監視] の下の [アドバイザーのレコメンデーション] に表示されます。 通常の操作中、アドバイザーのレコメンデーションは表示されません。

Azure Advisorの詳細については、「Azure Advisorの概要を参照してください。