Strategie architektury pro monitorování výkonu úloh

Platí pro toto doporučení kontrolního seznamu efektivity výkonu architektury Azure Well-Architected:

PE:04 Nastavte konzistentní měření výkonu, aby bylo možné chování analyzovat v průběhu času, porovnat se standardními hodnotami a použít k detekci snížení výkonu, neefektivity a mezer ve škálování.

Bez údajů o výkonu zůstávají podkladové problémy a příležitosti optimalizace bez povšimnutí, což vede ke zhoršení uživatelského zážitku.

Tento článek popisuje strategie návrhu pro implementaci měření výkonu ve vícevrstvé vrstvě, která zachycuje latenci, propustnost a chování prostředků za účelem stanovení směrných plánů a identifikaci snížení výkonu napříč úlohou.

Klíčové strategie v tomto článku vycházejí ze základní provozní praxe pozorovatelnosti popsané ve strategiích architektury OE:07 pro návrh monitorovacího systému. Pokyny k implementaci postupu monitorování jsou k dispozici v průvodci návrhem monitorování. Doporučujeme tyto prostředky nejprve zkontrolovat. Doporučení v této příručce jsou zaměřená na výkon. Informace o spolehlivosti najdete v tématu RE:10 Strategie architektury pro navrhování spolehlivé strategie monitorování a upozorňování.

Definice

Term definice
Protokoly aktivit Protokoly, které sledují operace správy prostředků, například odstranění prostředku.
Záznamy aplikací Protokoly, které sledují informace o událostech, chybách a dalších aktivitách aplikace, například přihlášení nebo selhání připojení k databázi.
Nástroj pro monitorování výkonu aplikací (APM) Nástroj, který monitoruje a vykazuje výkon aplikace.
Baselines Očekávané metriky výkonu systému používané jako referenční bod k detekci posunu, regrese a vylepšení v průběhu času.
Instrumentace kódu Přímé nebo nepřímé zaznamenání metrik výkonu z perspektivy kódu aplikace. Zaznamenané metriky zahrnují metriky toku, využití prostředků a metriky specifické pro jazyk nebo běhové prostředí.
Distribuované trasování Shromažďování a korelace metrik napříč komponentami distribuovaných úloh za účelem pochopení komplexních toků transakcí
Latency Časové zpoždění mezi zahájením požadavku a příjmem odpovědi, měření odezvy systému.
Metrics Číselná měření, která zaznamenávají chování výkonu úloh v průběhu času, obvykle agregovaná pro účely analýzy.
Percentily (p50, p95, p99) Statistické míry zobrazující rozdělení výkonu; P50 představuje typický výkon, p95 ukazuje většinu uživatelského prostředí při zatížení, p99 zachycuje nejhorší výkon.
Metriky platformy Číselné hodnoty, které zaznamenávají výkon úlohy v konkrétním čase.

Použití metrik založených na percentilu

Pomocí percentilů (p50, p95, p95, p99), ne průměrů změřte metriky výkonu, jako je latence, doba odezvy nebo časy načítání. Průměry můžou být zavádějící. Pokud je většina požadavků rychlá, ale několik z nich je extrémně pomalých, průměr bude maskovat špatnou zkušenost.

Percentily ukazují chování ocasu, což je důležité pro pochopení uživatelského prostředí. P50 představuje typický výkon, p95 ukazuje, co většina uživatelů zažívá při zatížení, a p99 zachycuje nejhorší možný výkon nebo odlehlé případy.

Shromážděte údaje o výkonu pomocí monitorovacích nástrojů a představují je jako percentily v definovaných časových oknech. Tyto hodnoty použijte jako směrný plán pro monitorování, upozorňování a analýzu výkonu.

Definování hranic zlepšení výkonu

Definujte jasné hranice výkonu, abyste přesně věděli, co je součástí měření. Rozdělte latenci v systému místo toho, aby se s ní cházeli jako s jedním číslem. Například přiřaďte čas k jednotlivým vrstvám, jako jsou edge služby, brány, výpočet, a závislosti, abyste viděli, kde ve skutečnosti dochází ke zpožděním.

Oddělte to, co řídíte, od toho, co ne: kód, služby, infrastruktura a přímé závislosti versus externí faktory, jako jsou podmínky na straně klienta, překlad DNS, latence poskytovatele internetových služeb nebo omezení zařízení. Toto rozlišení zabraňuje nesprávnému přiřazení a udržuje optimalizaci zaměřenou na oblasti, kde můžete provádět změny, a přitom stále odráží kompletní prostředí pro koncové uživatele.

Vyhodnoťte, kdy a kde mají problémy s výkonem vliv na uživatelské prostředí. Kompenzace snížení výkonu prostřednictvím návrhu nebo zmírnění prostřednictvím vylepšení kontrolovatelných částí systému.

Segmentace signálů podle prostředí a účelu

Segmentujte data o výkonu, aby každý signál odrážel jasný kontext. Oddělení podle prostředí a účelu, aby se zabránilo míchání signálů, které se chovají jinak nebo slouží k různým rozhodnutím.

Udržujte produkční a neprodukční data oddělená. Produkční data odrážejí skutečný dopad uživatelů a měly by řídit monitorování a výstrahy. Neprodukční data jsou užitečná pro testování a ladění, ale jejich míchání s produkčními daty zkresluje výsledky a skrývá skutečné problémy.

Oddělte metriky výkonu od obchodních metrik. Metriky výkonu sledují chování systému a stav úloh, zatímco obchodní metriky sledují výsledky. I když se překrývají, udržujte je v různých datových proudech, aby je bylo možné analyzovat a používat nezávisle.

Vytváření omezených a použitelných upozornění na výkon

Cílem upozorňování je včasné zjišťování snížení výkonu, než se stane viditelným uživateli nebo dopadem na podnikání. Vytvářejte výstrahy na dvou úrovních: prostředí koncového uživatele a základní interní transakce, které představují kritické systémové cesty při zatížení.

Pro cíle i výstrahy použijte jednu konzistentní datovou sadu v rámci každého prostředí. Pokud jsou výstrahy založené na různých datech, než jsou vaše cíle výkonu, stanou se nespolehlivými a obtížně důvěryhodnými.

Vytvářejte výstrahy, které jsou použitelné a jasně svázané s výsledky výkonu. Každá výstraha by měla indikovat, jaká prahová hodnota měla dlouhodobé překročení, potenciální dopad a příslušné komponenty, aby bylo jasné, kde je třeba zkoumat a čeho se to týká. Začněte standardními, dobře známými prahovými hodnotami a pak je v průběhu času zpřesněte na základě pozorovaného chování systému a charakteristik úloh.

Zvažte založení výkonnostních upozornění na modelu stavu systému. Místo nastavování upozornění pro jednotlivé metriky použijte model stavu, který reprezentuje prostředky kritické z hlediska výkonu pomocí několika signálů výkonu. Upozorňujte na změny stavu kondice, aby se složené problémy s výkonem projevily jako jediné upozornění, na které lze reagovat, místo množství překročení prahových hodnot. Azure Monitor modely stavu podporují tento model s upozorňováním na úrovni entit a hierarchickým šířením napříč závislostmi.

Pokud přímé upozorňování na externí závislost není možné, použijte nepřímé signály, jako je doba trvání volání závislostí, chybovost nebo chování časového limitu, abyste odhadli jeho dopad na výkon systému.

Monitorování elasticity

Změřte, jak váš systém reaguje na změny v poptávce a událostech škálování.

Sledujte latenci studeného startu a inicializace, abyste pochopili, jak režie při spuštění ovlivňuje odezvu, zejména během škálování. Monitorujte chování horizontálního navýšení kapacity a horizontálního snížení kapacity a vyhodnoťte, jak rychle se systém přizpůsobí změnám zatížení a jestli akce škálování udržují krok s poptávkou.

Sledování výkonu v průběhu času

Sledujte, jak se výkon vyvíjí se změnami návrhu a externích faktorů.

Nastavte základní hodnoty, které představují očekávaný výkon systému, a pak porovnejte aktuální chování s nimi, abyste zjistili odchylky, včetně regresí a vylepšení.

Použijte model stavu k reprezentaci standardních hodnot výkonu a jasně kvantifikujte, co představuje stav v pořádku, snížený výkon a stav není v pořádku pro důležité prostředky výkonu. Modely stavu v Azure Monitoru podporují statické prahové hodnoty a dynamické referenční hodnoty, které se v průběhu času přizpůsobují a automatizují detekci posunů.

Připojte změny výkonu k provozním událostem, jako jsou nasazení, aktualizace konfigurace a akce škálování. Přidávání poznámek na časové osy k těmto událostem, aby změny chování měly jasný kontext a lze je zpětně vysledovat k pravděpodobným příčinám.

Tuto průběžnou viditelnost použijte jako smyčku zpětné vazby pro technická rozhodnutí. Dejte přehled o výkonu do plánování a stanovení priorit a zacházejte s nimi jako se vstupy do běžné práce, nikoli pouze reakce na incidenty.

Průběžně upřesňuje cíle výkonu při vývoji systému. Upravte cíle úrovně služeb, prahové hodnoty a očekávání na základě pozorovaného chování a vzorů využití, aby cíle zůstaly realistické a odpovídaly skutečnému uživatelskému prostředí.

Shromažďování dat o výkonu aplikací

Potřebujete mít metriky výkonu aplikace, jako je propustnost, latence a časy dokončení, které se primárně shromažďují prostřednictvím nástrojů zabudovaných do kódu.

Instrumentujte kritické cesty provádění, kde je výkon nejviditelnější: klíčové toky požadavků, operace náročné na prostředky a body, ve kterých dochází k externím závislostem nebo opakováním. Zajistěte komplexní viditelnost transakcí, aby bylo možné měřit celkovou dobu provádění a jednotlivé kroky přispívající k celkovému času.

Zachytávání tří základních typů signálů výkonu:

  • Metriky pro agregované chování výkonu (distribuce latence, propustnost, míra chyb)
  • Trasování pro pochopení způsobu distribuce času napříč cestami požadavků a systémovými komponentami
  • Záznamy pro podrobný kontext provedení v konkrétních krocích nebo událostech

V těchto signálech používejte konzistentní metadata, aby data o výkonu bylo možné korelovat mezi vrstvami systému a napříč službami.

Vyhněte se duplikování signálů výkonu nižší úrovně, které platforma již odhalila, pokud není potřeba další členitost k vysvětlení chování nebo kritických bodů specifických pro úlohy.

Shromažďování údajů o výkonu prostředků

Shromážděte data o výkonu na úrovni prostředků, abyste pochopili, jak se komponenty infrastruktury chovají při zatížení a jak přispívají k celkovému výkonu úloh.

Každá služba zveřejňuje metriky specifické pro danou platformu, které odrážejí jeho vlastnosti stavu a výkonu. Pomocí nastavení diagnostiky můžete tato data exportovat, aby k ní bylo možné přistupovat k výstrahám, řídicím panelům a dlouhodobější analýze nad rámec krátkodobého uchovávání platformy.

Shromážděte metriky a protokoly pro všechny prostředky. Sledujte využití výpočetních prostředků a úložiště vůči očekávaným rozsahům, abyste zajistili, že zřizování nezavádí latenci a nesnižuje výkon při zatížení. Nadměrné přidělování je také zjistitelné pomocí těchto dat tím, že se podíváte na využití P99 a porovnáte ho se zbývající kapacitou vašich zdrojů.

Monitorujte síťový provoz jako součást výkonu prostředků. Analyzujte tok provozu napříč podsítěmi a hranicemi služeb, abyste porozuměli latenci, zahlcení a vzorům přenosu dat, které můžou mít vliv na výkon úloh.

Shromažďování dat databáze a úložiště

Databázové a úložné systémy vytvářejí specializované signály výkonu pro identifikaci kritických bodů, ověřování kapacity a pochopení chování úloh. Tyto signály obvykle pocházejí z integrovaných monitorovacích nástrojů a systémem generovaných protokolů.

Zaměřte se na klíčové dimenze výkonu:

Plocha Co měřit Co vám to řekne
Throughput Čtení/zápis objemu v průběhu času Kapacita přenosu dat
Latency Čas na každou operaci úložiště Rychlost odezvy úložiště
IOPS Operace čtení a zápisu za sekundu Funkce zpracování transakcí
Využití kapacity Využité a dostupné úložiště Potřeby škálování a plánování kapacity

U databází rozšiřte monitorování na chování specifické pro úlohy:

Plocha Co měřit Co vám to řekne
Výkonnost dotazů Doba provádění, frekvence, využití prostředků Efektivita vzorů přístupu k datům
Výkon transakcí Doba trvání, souběžnost, kolize zámků Kolize a transakční efektivita
Výkon indexu Fragmentace, využití, dopad optimalizace Efektivita struktur zrychlení dotazů
Použití prostředku Procesor, paměť, disk, síť Omezení na úrovni systému
Metriky připojení Aktivní, neúspěšná, přerušená připojení Stabilita a tlak připojení
Transakční sazba Transakce za sekundu Intenzita úloh a změny v průběhu času
Míry chyb Chyby a chyby databáze Signály snížení spolehlivosti a výkonu

Pomocí těchto signálů můžete rozlišovat mezi pomalými dotazy, vyčerpáním zdrojů a strukturální neefektivitou. To umožňuje cílenou optimalizaci napříč úložnými systémy i databázovými úlohami.

Shromažďování dat o výkonu operačního systému

V případě úloh založených na infrastruktuře shromážděte metriky na úrovni operačního systému, abyste pochopili, jak se využívají výpočetní prostředky a kde mohou nastat omezení prostředků.

Snímat čítače výkonu operačního systému v pravidelných intervalech pro zachycení časového chování systému při zatížení.

Plocha Co měřit Co to znamená
CPU Využití procesoru (uživatel/privilegovaný), délka fronty procesoru Saturace výpočetní kapacity a tlak na plánování
Processes Počet vláken, počet popisovačů Zátěž procesů na úrovni aplikace a operačního systému
Memory Alokovaná paměť, dostupná paměť, rychlost stránkování, využití swapu Tlak na paměť a stránkování
Disk Rychlost čtení a zápis, propustnost, využití disku Výkon vstupně-výstupních operací úložiště a kritické body
Network Propustnost rozhraní, chyby RX/TX Problémy s kapacitou sítě a přenosem

Tyto signály slouží k identifikaci vyčerpání prostředků na úrovni operačního systému a k rozlišení mezi neefektivnostmi na úrovni aplikace a omezeními infrastruktury.

V případě potřeby vygenerujte syntetická data.

Pokud se váš systém nepoužívá konzistentně, je těžké zjistit, jestli bude fungovat dobře, když se provoz vrátí.

K vyřešení tohoto řešení použijte syntetické transakce, které prostřednictvím systému odesílají automatizované požadavky. Tyto simulují skutečné využití, aniž by to ovlivnilo skutečné uživatele nebo data. To pomáhá udržet části systému aktivní, generovat konzistentní metriky výkonu a odhalit vzory (jako jsou problémy s časem), které by mohlo nepravidelné použití skrýt.

Usnadnění na platformě Azure

Azure Monitor poskytuje jednotnou platformu pro shromažďování, analýzu a reagování na data o výkonu v rámci celé úlohy. Agreguje data z aplikací, infrastruktury a externích zdrojů do společné datové platformy.

Shromažďování a úložiště dat: Pomocí pracovních prostorů Log Analytics můžete data o výkonu centralizovat pomocí konfigurovatelných zásad uchovávání informací. Vytvořte více pracovních prostorů pro segmentování dat podle požadavků na prostředí nebo dodržování předpisů.

Modelování stavu: Modely stavu v Azure Monitoru vám pomáhají definovat, měřit a vizualizovat stav úloh korelováním metrik, protokolů a trasovacích dat do stavů, na jejichž základě lze jednat, napříč prostředky a komponentami Azure.

Monitorování aplikací: Application Insights shromažďuje telemetrii na úrovni aplikace, včetně četností požadavků, doby odezvy a výjimek. Povolte distribuované trasování, aby bylo možné korelovat výkon napříč distribuovanými komponentami.

Monitorování infrastruktury: Povolte nastavení diagnostiky ve všech službách Azure pro shromažďování protokolů platformy a metrik. Použijte rozšíření Azure Diagnostics pro podrobné údaje o výkonu virtuálních počítačů. Prozkoumejte možnosti telemetrie pro vaši konkrétní platformu. Clustery Kubernetes například generují bohatou telemetrii výkonu prostřednictvím integrací Prometheus .

Databáze a úložiště: Azure Monitor poskytuje integrované monitorování pro azure SQL Database, MySQL, PostgreSQL a služby úložiště. Analýza služby Azure Storage sleduje klíčové ukazatele výkonu, jako je propustnost a latence napříč objekty blob, tabulkami a queue storage.

Upozorňování a analýza: Vytváření pravidel upozornění s přizpůsobitelnými prahovými hodnotami, časovými okny a akcemi (e-mail, webhooky, Azure Functions). Použijte protokoly služby Azure Monitor ke křížovému dotazování a korelaci dat o výkonu. Podrobnosti o cenách najdete v tématu o cenách služby Azure Monitor.

Příklady

Kontrolní seznam efektivity výkonu

Podívejte se na úplný soubor doporučení.