Monitorowanie dzienników diagnostycznych rdzeni wirtualnych usługi Azure Cosmos DB dla bazy danych MongoDB przy użyciu usługi Azure Monitor

DOTYCZY: Rdzenie wirtualne bazy danych MongoDB

Dzienniki diagnostyczne platformy Azure są niezbędne do przechwytywania dzienników zasobów platformy Azure dla konta rdzeni wirtualnych usługi Azure Cosmos DB dla bazy danych MongoDB. Dzienniki te udostępniają szczegółowe i częste szczegółowe informacje na temat operacji dotyczących zasobów przy użyciu konta.

Ważne

Ta funkcja nie jest dostępna w M25 jednostkach SKU (z możliwością rozszerzenia) ani M30 (w warstwie bezpłatna).

Wymagania wstępne

  • Istniejący klaster usługi Azure Cosmos DB dla rdzeni wirtualnych bazy danych MongoDB.
  • Istniejący obszar roboczy usługi Log Analytics lub konto usługi Azure Storage.

Tworzenie ustawień diagnostycznych

Metryki platformy i dzienniki aktywności są zbierane automatycznie. Aby zbierać dzienniki zasobów i kierować je zewnętrznie z usługi Azure Monitor, należy ustanowić ustawienie diagnostyczne. Po aktywowaniu ustawień diagnostycznych dla kont usługi Azure Cosmos DB należy wybrać kierowanie ich do obszaru roboczego usługi Log Analytics lub konta usługi Azure Storage.

  1. Utwórz zmienne powłoki dla clusterName i resourceGroupName.

    # Variable for API for MongoDB vCore cluster resource
    clusterName="<resource-name>"
    
    # Variable for resource group
    resourceGroupName="<resource-group-name>"
    
  2. Tworzenie zmiennych powłoki dla workspaceName i diagnosticSettingName,

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

    Uwaga

    Jeśli na przykład nazwa obszaru roboczego usługi Log Analytics to test-workspace , a nazwa ustawień diagnostycznych to test-setting:

    workspaceName="test-workspace"
    diagnosticSettingName:"test-setting"
    
  3. Pobierz identyfikator zasobu dla klastra interfejsu API dla rdzeni wirtualnych bazy danych MongoDB.

    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. Pobierz identyfikator zasobu dla obszaru roboczego usługi 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. Użyj az monitor diagnostic-settings create polecenia , aby utworzyć ustawienie.

    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
    

    Ważne

    Po włączeniu --export-to-resource-specific true tego ustawienia upewnij się, że zdarzenia dziennika żądań rdzeni wirtualnych bazy danych MongoDB są efektywnie pozyskiwane do vCoreMongoRequests tabeli specjalnie zaprojektowanej przy użyciu dedykowanego schematu.

    Z kolei zaniedbanie konfigurowania --export-to-resource-specific true spowoduje, że interfejs API dla zdarzeń dziennika żądań rdzeni wirtualnych bazy danych MongoDB jest kierowany do tabeli ogólnej AzureDiagnostics .

    Należy pamiętać, że podczas tworzenia ustawienia diagnostycznego za pośrednictwem portalu zdarzenia dziennika będą obecnie przepływać do AzureDiagnostics tabeli. W przypadku klientów, którzy preferują eksportowanie dzienników do tabeli specyficznej dla VCoreMongoRequests zasobów, zaleca się użycie interfejsu wiersza polecenia platformy Azure z opcją --export-to-resource-specific true .

Zarządzanie ustawieniami diagnostycznymi

Czasami trzeba zarządzać ustawieniami, wyszukując je lub usuwając. Grupa az monitor diagnostic-settings poleceń zawiera polecenia podrzędne do zarządzania ustawieniami diagnostycznymi.

  1. Wyświetl listę wszystkich ustawień diagnostycznych skojarzonych z interfejsem API dla klastra rdzeni wirtualnych bazy danych MongoDB.

    az monitor diagnostic-settings list \
        --resource-group $resourceGroupName \
        --resource $clusterResourceId
    
  2. Usuń określone ustawienie przy użyciu skojarzonego zasobu i nazwy ustawienia.

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

Korzystanie z zaawansowanych zapytań diagnostycznych

Użyj tych zapytań specyficznych dla zasobów, aby przeprowadzić typowe badania dotyczące rozwiązywania problemów w klastrze interfejsu API dla rdzeni wirtualnych bazy danych MongoDB.

Ważne

W tej sekcji założono, że używasz obszaru roboczego usługi Log Analytics z dziennikami specyficznymi dla zasobów.

  1. Przejdź do sekcji Dzienniki interfejsu API dla klastra rdzeni wirtualnych bazy danych MongoDB. Obserwuj listę przykładowych zapytań.

    Screenshot of the diagnostic queries list of sample queries.

  2. Uruchom to zapytanie, aby zliczyć liczbę niepomyślnie zakończonych niepowodzeniem interfejsu API dla żądań rdzeni wirtualnych bazy danych MongoDB pogrupowanych według kodu błędu.

    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. Uruchom to zapytanie, aby uzyskać interfejs API dla czasu wykonywania żądań P99 rdzeni wirtualnych bazy danych MongoDB według nazwy operacji.

    // 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. Uruchom to zapytanie, aby uzyskać liczbę żądań interfejsu API dla żądań rdzeni wirtualnych bazy danych MongoDB pogrupowanych według łącznego czasu trwania środowiska uruchomieniowego.

    // 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. Uruchom to zapytanie, aby uzyskać liczbę żądań interfejsu API dla rdzeni wirtualnych bazy danych MongoDB według agenta użytkownika.

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