Share via


Überwachen von Azure Cosmos DB für MongoDB vCore-Diagnoseprotokolle mit Azure Monitor

GILT FÜR: MongoDB-vCore

Die Diagnoseprotokolle von Azure sind unerlässlich, um Azure-Ressourcenprotokolle für ein Azure Cosmos DB für MongoDB vCore Konto zu erfassen. Diese Protokolle enthalten detaillierte und häufige Einblicke in die Vorgänge mit Ressourcen mit dem Konto.

Wichtig

Dieses Feature ist nicht mit M25 (burstfähigen) oder M30 (Free-Tarif) SKUs verfügbar.

Voraussetzungen

Erstellen von Diagnoseeinstellungen

Plattformmetriken und Aktivitätsprotokolle werden automatisch erfasst. Um Ressourcenprotokolle zu sammeln und extern von Azure Monitor weiterzuleiten, müssen Sie eine Diagnoseeinstellung einrichten. Wenn Sie Diagnose-Einstellungen für Azure Cosmos DB-Konten aktivieren, müssen Sie diese entweder an einen Log Analytics-Arbeitsbereich oder ein Azure Storage-Konto weiterleiten.

  1. Erstellen Sie Shellvariablen für clusterName und resourceGroupName.

    # Variable for API for MongoDB vCore cluster resource
    clusterName="<resource-name>"
    
    # Variable for resource group
    resourceGroupName="<resource-group-name>"
    
  2. Erstellen Sie Shellvariablen für workspaceName und diagnosticSettingName,

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

    Hinweis

    Wenn beispielsweise der Name des Log Analytics-Arbeitsbereichs test-workspace lautet und der Name der Diagnoseeinstellungen test-setting lautet:

    workspaceName="test-workspace"
    diagnosticSettingName:"test-setting"
    
  3. Rufen Sie den Ressourcenbezeichner für die API für MongoDB vCore-Cluster ab.

    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. Rufen Sie den Ressourcenbezeichner für den Log Analytics-Arbeitsbereich ab.

    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. Verwenden Sie az monitor diagnostic-settings create, um die Einstellung zu erstellen.

    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
    

    Wichtig

    Durch Aktivieren der --export-to-resource-specific true Einstellung stellen Sie sicher, dass die API für MongoDB vCore-Anforderungsprotokollereignisse effizient in die Tabelle aufgenommen werden, die vCoreMongoRequests speziell mit einem dedizierten Schema entworfen wurde.

    Im Gegensatz dazu würde die Vernachlässigung der Konfiguration von --export-to-resource-specific true dazu führen, dass die API für MongoDB vCore-Anforderungsprotokollereignisse an die allgemeine AzureDiagnostics Tabelle weitergeleitet wird.

    Beachten Sie, dass beim Erstellen der Diagnoseeinstellung über das Portal Protokollereignisse derzeit an die AzureDiagnostics-Tabelle fließen. Für Kunden, die das Exportieren von Protokollen in die ressourcenspezifische VCoreMongoRequests-Tabelle bevorzugen, wird die Verwendung der Azure CLI mit der Option --export-to-resource-specific true empfohlen.

Verwalten der Diagnoseeinstellungen

Manchmal müssen Sie Einstellungen verwalten, indem Sie sie suchen oder entfernen. Die Befehlsgruppe az monitor diagnostic-settings enthält Unterbefehle für die Verwaltung von Diagnoseeinstellungen.

  1. Listet alle Diagnoseeinstellungen auf, die der API für MongoDB vCore-Cluster zugeordnet sind.

    az monitor diagnostic-settings list \
        --resource-group $resourceGroupName \
        --resource $clusterResourceId
    
  2. Löscht eine bestimmte Einstellung mit der zugeordneten Ressource und dem Namen der Einstellung.

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

Verwenden von erweiterter Diagnoseabfragen

Verwenden Sie diese ressourcenspezifischen Abfragen, um allgemeine Problembehandlungsrecherche in einer API für MongoDB vCore-Cluster durchzuführen.

Wichtig

In diesem Abschnitt wird davon ausgegangen, dass Sie einen Log Analytics-Arbeitsbereich mit ressourcenspezifischen Protokollen verwenden.

  1. Navigieren Sie zum Abschnitt Protokolle der API für MongoDB vCore-Cluster. Sehen Sie sich die Liste der Beispielabfragen an.

    Screenshot of the diagnostic queries list of sample queries.

  2. Führen Sie diese Abfrage aus, um die Anzahl der fehlgeschlagenen Anfragen an die API für MongoDB-vCore zu zählen, die nach Fehlercode gruppiert sind.

    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. Führen Sie diese Abfrage aus, um die Anfragen an die API für MongoDB vCore P99 Laufzeitdauer nach Vorgangsname abzurufen.

    // 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. Führen Sie diese Abfrage aus, um die Anzahl der Anfragen an die API für MongoDB-vCore abzurufen, die nach gesamter Laufzeitdauergruppiert sind.

    // 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. Führen Sie diese Abfrage aus, um die Anzahl der Anfragen an die API für MongoDB-vCore-Anforderungen nach Benutzer-Agent abzurufen.

    // 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