Share via


Azure Monitor を使用して Azure Cosmos DB for MongoDB 仮想コア診断ログを監視する

適用対象: MongoDB 仮想コア

Azure の診断ログは、Azure Cosmos DB for MongoDB 仮想コア アカウントの Azure リソース ログをキャプチャするために不可欠です。 これらのログは、アカウントに伴うリソースの操作に関する詳細で頻繁な分析情報を提供します。

重要

この機能は、M25 (バースト可能) または M30 (Free レベル) SKU では使用できません。

前提条件

診断設定の作成

プラットフォーム メトリックとアクティビティ ログは自動的に収集されます。 リソース ログを収集し、Azure Monitor から外部にルーティングするには、診断設定を確立する必要があります。 Azure Cosmos DB アカウントの診断設定をアクティブ化するときは、それらを Log Analytics ワークスペース、または Azure Storage アカウントにルーティングするよう選択する必要があります。

  1. clusterNameresourceGroupName のシェル変数を作成します。

    # Variable for API for MongoDB vCore cluster resource
    clusterName="<resource-name>"
    
    # Variable for resource group
    resourceGroupName="<resource-group-name>"
    
  2. workspaceNamediagnosticSettingName のシェル変数を作成します。

    # Variable for workspace name
    workspaceName="<storage-account-name>"
    
    # Variable for diagnostic setting name
    diagnosticSettingName="<diagnostic-setting-name>"
    

    Note

    たとえば、Log Analytics ワークスペースの名前が test-workspace で、診断設定の名前が test-setting である場合は、次のようになります。

    workspaceName="test-workspace"
    diagnosticSettingName:"test-setting"
    
  3. MongoDB 仮想コア クラスター用 API のリソース識別子を取得します。

    az cosmosdb mongocluster show \
        --resource-group $resourceGroupName \
        --cluster-name $clusterName
    
    clusterResourceId=$(az cosmosdb mongocluster show \
        --resource-group $resourceGroupName \
        --cluster-name $clusterName \
        --query "id" \
        --output "tsv" \
    )
    
  4. Log Analytics ワークスペースのリソース識別子を取得します。

    az monitor log-analytics workspace show \
        --resource-group $resourceGroupName \
        --name $workspaceName
    
    workspaceResourceId=$(az monitor log-analytics workspace show \
        --resource-group $resourceGroupName \
        --name $workspaceName \
        --query "id" \
        --output "tsv" \
    )
    
  5. az monitor diagnostic-settings create を使用して設定を作成します。

    az monitor diagnostic-settings create \
        --resource-group $resourceGroupName \
        --name $diagnosticSettingName \
        --resource $clusterResourceId \
        --export-to-resource-specific true \
        --logs '[{category:vCoreMongoRequests,enabled:true,retention-policy:{enabled:false,days:0}}]' \
        --workspace $workspaceResourceId
    

    重要

    --export-to-resource-specific true 設定を有効にすると、MongoDB 仮想コア要求ログ イベント用 API が、専用スキーマで特別に設計された vCoreMongoRequests テーブルに効率的に取り込まれます。

    これに対し、--export-to-resource-specific true の構成を行わない場合、MongoDB 仮想コア要求ログ イベントの API が一般的な AzureDiagnostics テーブルにルーティングされます。

    ポータルで診断設定を作成する場合、現在は、ログ イベントが AzureDiagnostics テーブルに送られることに注意してください。 リソース固有の VCoreMongoRequests テーブルにログをエクスポートする方がよい場合は、Azure CLI を利用して --export-to-resource-specific true オプションを指定することをお勧めします。

診断設定の管理

場合によっては、設定を見つけたり削除したりして、設定を管理する必要があります。 az monitor diagnostic-settings コマンド・グループには、診断設定を管理するためのサブコマンドが含まれています。

  1. MongoDB 仮想コア クラスターの API に関連付けられているすべての診断設定を一覧表示します。

    az monitor diagnostic-settings list \
        --resource-group $resourceGroupName \
        --resource $clusterResourceId
    
  2. 関連付けられているリソースと設定の名前を使用して、特定の設定を削除します。

    az monitor diagnostic-settings delete \
        --resource-group $resourceGroupName \
        --name $diagnosticSettingName \
        --resource $clusterResourceId
    

高度な診断のクエリを使用する

これらのリソース固有のクエリを使用して、MongoDB 仮想コア クラスター用 API での一般的なトラブルシューティング調査を実行します。

重要

このセクションでは、リソース固有のログで Log Analytics ワークスペースを使用していることを前提としています。

  1. MongoDB 仮想コア クラスター用 API の Logs セクションに移動します。 サンプル クエリの一覧を確認します。

    Screenshot of the diagnostic queries list of sample queries.

  2. このクエリを実行して、エラー コード でグループ化された MongoDB 仮想コア要求の失敗した API の数をカウントします

    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | where ErrorCode != 0
    | summarize count() by bin(TimeGenerated, 5m), ErrorCode=tostring(ErrorCode)
    
  3. このクエリを実行して、操作名ごとの MongoDB 仮想コア要求の API P99 のランタイム期間を取得します

    // Mongo vCore requests P99 duration by operation 
    // Mongo vCore requests P99 runtime duration by operation name. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | summarize percentile(DurationMs, 99) by bin(TimeGenerated, 1h), OperationName
    
  4. このクエリを実行して、ランタイム期間の合計でグループ化された MongoDB 仮想コア要求の API の数を取得します

    // Mongo vCore requests binned by duration 
    // Count of Mongo vCore requests binned by total runtime duration. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | project TimeGenerated, DurationBin=tostring(bin(DurationMs, 5))
    | summarize count() by bin(TimeGenerated, 1m), tostring(DurationBin)
    
  5. このクエリを実行して、ユーザー エージェントごとの MongoDB 仮想コア要求の API の数を取得します

    // Mongo vCore requests by user agent 
    // Count of Mongo vCore requests by user agent. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/00000000-0000-0000-0000-000000000000/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | summarize count() by bin(TimeGenerated, 1h), UserAgent