Eseguire il monitoraggio e il debug con informazioni dettagliate in Azure Cosmos DB

SI APPLICA A: NoSQL MongoDB Cassandra Gremlin Tabella

Azure Cosmos DB offre informazioni dettagliate per velocità effettiva, archiviazione, coerenza, disponibilità e latenza. Il portale di Azure offre una visualizzazione aggregata di queste metriche. È anche possibile visualizzare le metriche di Azure Cosmos DB nell'API di Monitoraggio di Azure. I valori delle dimensioni per le metriche, ad esempio il nome del contenitore, non fanno distinzione tra maiuscole e minuscole. È quindi necessario usare un confronto senza distinzione tra maiuscole e minuscole per i confronti tra stringhe su questi valori di dimensione. Per informazioni su come visualizzare le metriche da Monitoraggio di Azure, vedere Monitorare Azure Cosmos DB.

Questo articolo illustra dettagliatamente i casi d'uso comuni e come usare le informazioni dettagliate di Azure Cosmos DB per analizzare ed eseguire il debug di questi problemi. Per impostazione predefinita, le informazioni dettagliate sulle metriche vengono raccolte ogni cinque minuti e vengono conservate per sette giorni.

Visualizzare informazioni dettagliate dal portale di Azure

  1. Accedere al portale di Azure e passare all'account Azure Cosmos DB.

  2. È possibile visualizzare le metriche del proprio account dal riquadro Metriche o dal riquadro Informazioni dettagliate.

    • Metriche: in questo riquadro sono presenti valori numerici che vengono raccolti a intervalli regolari e che descrivono un aspetto di un sistema in un determinato momento. Ad esempio, è possibile visualizzare e monitorare la metrica della latenza lato server, la metrica di utilizzo delle unità richiesta normalizzate e così via.

    • Informazioni dettagliate: questo riquadro offre un'esperienza di monitoraggio personalizzata per Azure Cosmos DB. Questo riquadro usa le stesse metriche e gli stessi log raccolti in Monitoraggio di Azure e mostra una visualizzazione aggregata per l'account.

  3. Aprire il riquadro Informazioni dettagliate. Per impostazione predefinita, il riquadro Informazioni dettagliate mostra la velocità effettiva, le richieste, l'archiviazione, la disponibilità, la latenza, il sistema e le metriche delle operazioni di gestione per ogni contenitore presente nell'account. È possibile selezionare i parametri di Intervallo di tempo , Database e Contenitore per cui si desidera visualizzare informazioni dettagliate. La scheda Panoramica mostra il consumo di UR/sec, dati e indici, le richieste limitate e il consumo di UR/sec normalizzate per il database e il contenitore selezionati.

    Screenshot of Azure Cosmos DB performance metrics in the Azure portal.

  4. Nel pannello Informazioni dettagliate sono disponibili le metriche seguenti:

    • Velocità effettiva. Questa scheda mostra il numero totale di unità richiesta usate o non riuscite (codice di risposta 429) perché è stata superata la velocità effettiva o la capacità di archiviazione con provisioning per il contenitore.

    • Requests. Questa scheda mostra il numero totale di richieste elaborate per codice di stato, tipo di operazione e numero di richieste non riuscite (codice di risposta 429). Le richieste hanno esito negativo quando viene superata la velocità effettiva o la capacità di archiviazione con provisioning per il contenitore.

    • Archiviazione. Questa scheda mostra le dimensioni dei dati e il consumo degli indici nel periodo di tempo selezionato.

    • Disponibilità. Questa scheda mostra la percentuale di richieste riuscite rispetto al totale delle richieste all'ora. I contratti di servizio di Azure Cosmos DB definiscono la percentuale di riuscita.

    • Latenza. Questa scheda mostra la latenza di lettura e scrittura osservata da Azure Cosmos DB nell'area in cui è operativo l'account. Per un account con replica geografica, è possibile visualizzare la latenza tra aree. È possibile visualizzare anche la latenza lato server in base a operazioni diverse. Questa metrica non rappresenta la latenza delle richieste end-to-end.

    • Sistema. Questa scheda mostra il numero di richieste di metadati gestite nella partizione primaria. Consente anche di identificare le richieste limitate.

    • Operazioni di gestione. Questa scheda mostra le metriche relative alle attività di gestione dell'account, come la creazione o l'eliminazione dell'account, gli aggiornamenti delle chiavi e le impostazioni di rete e di replica.

Nelle sezioni seguenti vengono descritti scenari comuni in cui è possibile usare le metriche di Azure Cosmos DB.

Scoprire il numero di richieste che riesce o causa errori

Per iniziare, accedere al portale di Azure e passare al pannello Informazioni dettagliate. In questo riquadro aprire la scheda Richieste. La scheda Richieste mostra un grafico contenente le richieste totali suddivise per codice di stato e tipo di operazione. Per altre informazioni sui codici di stato HTTP, vedere HTTP Status Codes for Azure Cosmos DB (Codici di stato HTTP per Azure Cosmos DB).

Il codice di stato di errore più comune è 429 (limitazione della velocità/limitazione). Questo errore indica che le richieste ad Azure Cosmos DB sono maggiori rispetto alle UR di cui è stato effettuato provisioning. La soluzione più comune per questo problema consiste nell'aumentare il numero di UR per la raccolta specificata. Per altre informazioni, vedere Introduzione alla velocità effettiva con provisioning in Azure Cosmos DB

Screenshot showing total requests by status code, throttled requests, and total requests by operation type.

Determinare il consumo di velocità effettiva in base a un intervallo di chiavi di partizione

Avere una buona cardinalità delle chiavi di partizione è essenziale per qualsiasi applicazione scalabile. Per determinare la distribuzione della velocità effettiva di un contenitore partizionato, suddiviso in base agli ID degli intervalli di chiavi di partizione, passare al riquadro Informazioni dettagliate. Aprire la scheda Velocità effettiva. Nel grafico è illustrato il consumo di UR/sec normalizzate in intervalli di chiavi di partizione.

Screenshot of the Throughput tab, showing the RU/s consumption.

Con l'aiuto di questo grafico, è possibile identificare se è presente una partizione ad accesso frequente. Una distribuzione non uniforme della velocità effettiva può generare partizioni critiche, che possono ridurre le richieste e potrebbero richiedere una nuova ripartizione. Dopo aver identificato la chiave di partizione che riduce la distribuzione, è possibile che sia necessario ripartizionare il contenitore con una chiave di partizione più distribuita. Per altre informazioni sul partizionamento in Azure Cosmos DB, vedere l'articolo Partizionamento e ridimensionamento orizzontale in Azure Cosmos DB.

Determinare il consumo di dati e indici

È importante determinare la distribuzione di archiviazione di qualsiasi contenitore partizionato in base al consumo di dati, indici e documenti. È possibile ridurre al minimo il consumo degli indici, aumentare al massimo il consumo dei dati e ottimizzare le query. Per ottenere questi dati, passare al riquadro Informazioni dettagliate e aprire la scheda Archiviazione.

Screenshot of the Insights pane, highlighting the Storage tab.

Confrontare le dimensioni dei dati e le dimensioni dell'indice

In Azure Cosmos DB lo spazio di archiviazione totale usato risulta dalla combinazione delle dimensioni dei dati e delle dimensioni dell'indice. In genere, le dimensioni dell'indice sono una frazione delle dimensioni dei dati. Per altre informazioni, vedere l'articolo Dimensioni dell'indice. Nel riquadro Metriche del portale di Azure, la scheda Archiviazione mostra la suddivisione dell'uso dello spazio di archiviazione in base ai dati e all'indice.

// Measure the document size usage (which includes the index size)  
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));
 Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

Se si desidera risparmiare spazio degli indici, è possibile modificare i criteri di indicizzazione.

Eseguire il debug di query lente

Negli SDK dell'API per NoSQL, Azure Cosmos DB presenta le statistiche di esecuzione delle query.

IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
 UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName),
 "SELECT * FROM c WHERE c.city = 'Seattle'",
 new FeedOptions
 {
 PopulateQueryMetrics = true,
 MaxItemCount = -1,
 MaxDegreeOfParallelism = -1,
 EnableCrossPartitionQuery = true
 }).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();

// Returns metrics by partition key range Id
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;

QueryMetrics offre informazioni dettagliate sulla durata dell'esecuzione di ogni componente della query. La causa radice più comune per le query con esecuzione prolungata è rappresentata dalle analisi, che indicano che la query non è riuscita ad applicare gli indici. Questo problema può essere risolto con una condizione di filtro migliore.

Monitorare le richieste del piano di controllo

Azure Cosmos DB applica limiti specifici al numero di richieste di metadati che possono essere effettuate in intervalli consecutivi di 5 minuti. Le richieste del piano di controllo che superano questi limiti possono riscontrare alcune limitazioni. In alcuni casi, le richieste di metadati possono consumare la velocità effettiva di una master partition all'interno di un account contenente tutti i metadati dell'account. Le richieste del piano di controllo che superano questa velocità effettiva subiranno una limitazione della frequenza (429s).

Per iniziare, accedere al portale di Azure e passare al pannello Informazioni dettagliate. In questo riquadro aprire la scheda Sistema, in cui sono presenti due grafici. Nel primo sono illustrate tutte le richieste di metadati di un account, mentre nel secondo viene visualizzato il consumo di velocità effettiva per richieste di metadati da parte della master partition dell'account in cui sono archiviati i metadati dell'account.

Screenshot of the Insights pane, highlighting the metadata requests graph on the System tab.

Screenshot of the Insights pane, highlighting the metadata requests 429 graph on the System tab.

Nel grafico Richiesta di metadati per codice di stato sopra riportato, le richieste vengono aggregate con una granularità sempre più elevata man mano che viene aumentato l'intervallo di tempo. L'intervallo di tempo più ampio che è possibile usare per un contenitore temporale di 5 minuti è di 4 ore. Per monitorare richieste di metadati a intervalli di tempo maggiori con granularità specifica, usare Metriche di Azure. Creare un nuovo grafico e selezionare la metrica Richieste di metadati. Nell'angolo in alto a destra impostare Granularità temporale su 5 minuti, come illustrato di seguito. Le metriche consentono inoltre agli utenti di Creare avvisi su di esse, che diventano così più utili rispetto alle informazioni dettagliate.

Screenshot of Metrics pane, highlighting the metadata requests for an account and time granularity of 5 minutes.

Passaggi successivi

È possibile leggere gli articoli seguenti per scoprire di più su come migliorare le prestazioni del database: