Monitorování a ladění pomocí přehledů ve službě Azure Cosmos DB

PLATÍ PRO: Rozhraní API Cassandra API Gremlin API Pro tabulky ROZHRANÍ API služby Azure Cosmos DB API pro MongoDB

Azure Cosmos DB poskytuje přehledy o propustnosti, úložišti, konzistenci, dostupnosti a latenci. Azure Portal nabízí agregované zobrazení těchto metrik. Metriky služby Azure Cosmos DB můžete zobrazit také s využitím rozhraní API služby Azure Monitor. Hodnoty dimenzí pro metriky, jako je název kontejneru, nerozlišují malá a velká písmena. Proto při porovnávání řetězců s těmito hodnotami dimenzí potřebujete použít porovnání bez rozlišování velkých a malých písmen. Informace o tom, jak zobrazit metriky ze služby Azure Monitor, najdete v článku Získání metrik ze služby Azure Monitor .

Tento článek vás provede běžnými případy použití a způsobem použití přehledů služby Azure Cosmos DB k analýze a ladění těchto problémů. Ve výchozím nastavení se přehledy metrik shromažďují každých pět minut a uchovávají se po dobu sedmi dnů.

Zobrazení přehledů z webu Azure Portal

  1. Přihlaste se k webu Azure Portal a přejděte k účtu služby Azure Cosmos DB.

  2. Metriky účtu můžete zobrazit buď v podokně Metriky , nebo v podokně Přehledy .

    • Metriky: Toto podokno poskytuje číselné metriky, které se shromažďují v pravidelných intervalech a popisují určité aspekty systému v určitém čase. Můžete například zobrazit a monitorovat metriku latence na straně serveru, normalizovanou metriku využití jednotek žádosti atd.

    • Postřehy: Toto podokno poskytuje přizpůsobené prostředí pro monitorování služby Azure Cosmos DB. Používají stejné metriky a protokoly, které se shromažďují ve službě Azure Monitor a zobrazují agregované zobrazení pro váš účet.

  3. Otevřete podokno Přehledy . Ve výchozím nastavení podokno Přehledy zobrazuje propustnost, požadavky, úložiště, dostupnost, latenci, systém a metriky správy účtů pro ever container ve vašem účtu. Můžete vybrat časový rozsah, databázi a kontejner , pro který chcete zobrazit přehledy. Na kartě Přehled se zobrazuje využití RU/s, využití dat, využití indexu, omezené požadavky a normalizovaná spotřeba RU/s pro vybranou databázi a kontejner.

    Cosmos DB performance metrics in Azure portal

  4. V podokně Přehledy jsou k dispozici následující metriky:

    • Propustnost – Tato karta zobrazuje celkový počet jednotek žádostí spotřebovaných nebo neúspěšných (kód odpovědi 429), protože došlo k překročení propustnosti nebo kapacity úložiště zřízené pro kontejner.

    • Požadavky – Tato karta zobrazuje celkový počet žádostí zpracovaných stavovým kódem, podle typu operace a počet neúspěšných požadavků (kód odpovědi 429). Požadavky selžou, když propustnost nebo kapacita úložiště zřízená pro kontejner překročí.

    • Úložiště – Tato karta zobrazuje velikost dat a využití indexů za vybrané časové období.

    • Dostupnost – Tato karta zobrazuje procento úspěšných žádostí za hodinu. Míra úspěšnosti je definována smlouvami SLA služby Azure Cosmos DB.

    • Latence – Tato karta zobrazuje latenci čtení a zápisu, kterou služba Azure Cosmos DB sleduje v oblasti, ve které váš účet pracuje. Latenci můžete vizualizovat napříč oblastmi pro geograficky replikovaný účet. Latenci na straně serveru můžete také provádět různými operacemi. Tato metrika nepředstavuje latenci koncového požadavku.

    • Systém – Tato karta ukazuje, kolik požadavků na metadata obsluhuje primární oddíl. Pomáhá také identifikovat omezené požadavky.

    • Správa účtů – Tato karta zobrazuje metriky pro aktivity správy účtů, jako je vytvoření účtu, odstranění, aktualizace klíčů, nastavení sítě a replikace.

Následující části popisují běžné scénáře, ve kterých můžete použít metriky služby Azure Cosmos DB.

Vysvětlení počtu úspěšných nebo příčin chyb požadavků

Začněte tím, že přejdete na web Azure Portal a přejdete do okna Přehledy . V tomto okně otevřete kartu Žádosti , zobrazí se graf s celkovými požadavky segmentovanými podle stavového kódu a typu operace. Další informace o stavových kódech HTTP najdete v tématu Stavové kódy HTTP pro službu Azure Cosmos DB.

Nejběžnější stavový kód chyby je 429 (omezování rychlosti nebo omezování). Tato chyba znamená, že požadavky na službu Azure Cosmos DB jsou větší než zřízená propustnost. Nejběžnějším řešením tohoto problému je vertikální navýšení kapacity RU pro danou kolekci.

Number of requests per minute

Určení spotřeby propustnosti podle rozsahu klíčů oddílu

Dobrá kardinalita klíčů oddílů je nezbytná pro libovolnou škálovatelnou aplikaci. Pokud chcete určit distribuci propustnosti libovolného děleného kontejneru rozděleného podle ID rozsahu klíčů oddílů, přejděte do podokna Přehledy . Otevřete kartu Propustnost , normalizovaná spotřeba RU/s napříč různými rozsahy klíčů oddílů se zobrazí v grafu.

Normalized throughput consumption by partition key range IDs

Pomocí tohoto grafu můžete zjistit, jestli je horký oddíl. Nerovnoměrná distribuce propustnosti může způsobit horké oddíly, což může vést k omezování požadavků a může vyžadovat opětovné rozdělení. Jakmile zjistíte, který klíč oddílu způsobuje nerovnoměrnou distribuci, budete možná muset kontejner znovu rozdělit s více distribuovaným klíčem oddílu. Další informace o dělení ve službě Azure Cosmos DB najdete v tématu Dělení a škálování ve službě Azure Cosmos DB.

Určení využití dat a indexu

Je důležité určit distribuci úložiště libovolného děleného kontejneru podle využití dat, využití indexu a využití dokumentů. Využití indexu můžete minimalizovat, maximalizovat využití dat a optimalizovat dotazy. Pokud chcete získat tato data, přejděte do podokna Přehledy a otevřete kartu Úložiště :

Data, index, and document consumption

Porovnání velikosti dat s velikostí indexu

V Azure Cosmos DB je celková spotřebovaná úložiště kombinací velikosti dat i velikosti indexu. Velikost indexu je obvykle zlomkem velikosti dat. Další informace najdete v článku o velikosti indexu . V okně Metriky na webu Azure Portal představuje karta Úložiště rozpis spotřeby úložiště na základě dat a indexu.

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

Pokud chcete ušetřit prostor indexu, můžete upravit zásady indexování.

Ladění, proč dotazy běží pomalu

V sadách SDK rozhraní SQL API poskytuje azure Cosmos DB statistiku spouštění dotazů.

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 poskytuje podrobnosti o tom, jak dlouho trvalo spuštění jednotlivých komponent dotazu. Nejčastější hlavní příčinou dlouhotrvajících dotazů je prohledávání, což znamená, že dotaz nemohl využívat indexy. Tento problém je možné vyřešit s lepší podmínkou filtru.

Další kroky

Teď jste zjistili, jak monitorovat a ladit problémy pomocí metrik poskytovaných na webu Azure Portal. Další informace o zlepšení výkonu databáze najdete v následujících článcích: