Prozkoumání rozšířených událostí

Dokončeno

Modul rozšířených událostí v Azure SQL je jednoduchý a výkonný monitorovací systém, který umožňuje zaznamenávat podrobné informace o aktivitách v databázích a serverech. Řešení monitorování na platformě Azure umožňují snadno nakonfigurovat výkonné monitorování pro vaše prostředí a poskytovat automatizované odpovědi na chybové stavy.

Rozšířené události vycházejí z funkcí SQL Server Profileru tím, že umožňují trasovat dotazy a vystavit další data (události), které můžete monitorovat. Mezi příklady problémů, které můžete vyřešit s rozšířenými událostmi, patří:

  • Řešení potíží s blokováním a zablokováním výkonu
  • Identifikace dlouhotrvajících dotazů
  • Operace DDL (Monitoring Data Definition Language).
  • Protokolování chybějících statistik sloupců
  • Dochází k zatížení paměti v databázi.
  • Dlouhotrvající fyzické vstupně-výstupní operace.

Rozšířená architektura událostí také umožňuje používat filtry k omezení množství shromažďovaných dat, aby se snížila režie shromažďování dat, a umožňuje snadněji identifikovat váš problém s výkonem tím, že se zaměříte na konkrétní oblasti.

Níže je příklad rozšířené relace událostí vytvořené ve službě Azure SQL Database:

Rozšířená událost spuštěná ve službě SQL Database

Na obrázku výše je xe_deadlocks název rozšířené relace událostí spuštěné v databázi AdventureWorks (na levé straně image). Cílový uzel event_counter , který je pod uzlem relace události, spočítá počet výskytů každé události v relaci události. Pokud chcete zobrazit cílová data v Průzkumník objektů SSMS, můžete kliknout pravým tlačítkem myši na cílový uzel a pak vybrat Zobrazit cílová data. SSMS zobrazí data, jak vidíme na levé straně obrázku, a výsledky počtu pro každou událost.

Další informace o rozšířených událostech ve službě Azure SQL Database najdete v tématu Rozšířené události ve službě Azure SQL Database.

Co můžu monitorovat pomocí rozšířených událostí?

Rozšířené události pokrývají celou plochu SQL Serveru a jsou rozděleny do čtyř kanálů, které definují cílovou skupinu události.

  • Správce – Události správce jsou určené pro koncové uživatele a správce. Zahrnuté události značí problém v dobře definované sadě akcí, které může správce provést. Příkladem je generování sestavy vzájemného zablokování XML, které pomáhá s identitou původní příčiny zablokování.
  • Provozní – Provozní události se používají k analýze a diagnostice nebo běžným problémům. Tyto události lze použít k aktivaci akce nebo úkolu na základě výskytu události. Příkladem provozní události by byla databáze ve změně stavu skupiny dostupnosti, což by značilo převzetí služeb při selhání.
  • Analýza – Analytické události obvykle souvisejí s událostmi výkonu a publikují se ve velkých objemech. Příkladem analytické události by bylo trasování uložených procedur nebo provádění dotazů.
  • Ladění – Události ladění nejsou nutně plně zdokumentované a měli byste je použít pouze při řešení potíží ve spojení s podporou Microsoftu.

Události se přidávají do relací, které můžou hostovat více událostí. Obvykle se v relaci seskupí více událostí a zachytí související sadu informací.

Spuštěním následujícího dotazu můžete získat seznam dostupných událostí, akcí a cílů:

SELECT
    obj.object_type,
    pkg.name AS [package_name],
    obj.name AS [object_name],
    obj.description AS [description]
FROM sys.dm_xe_objects  AS obj
    INNER JOIN sys.dm_xe_packages AS pkg  ON pkg.guid = obj.package_guid
WHERE obj.object_type in ('action',  'event',  'target')
ORDER BY obj.object_type,
    pkg.name,
    obj.name;

Vytvoření relace rozšířených událostí

Níže uvidíte základní proces vytvoření relace rozšířených událostí pomocí dialogového okna Nová relace ze sady SQL Server Management Studio. Na tuto obrazovku se můžete dostat rozbalením uzlu správy v aplikaci SSMS, rozbalením uzlu Rozšířené události, kliknutím pravým tlačítkem na Relace a výběrem možnosti Nová relace.

Vytvoření relace rozšířených událostí

Na obrázku výše je dialogové okno Nová relace pro funkci rozšířených událostí. Relaci musíte pojmenovat. SQL Server poskytuje řadu šablon, které jsou seskupeny do následujících kategorií:

  • Zámky a bloky
  • Ekvivalenty profileru
  • Provádění dotazů
  • Monitorování systému

Tyto předdefinované šablony umožňují rychle začít používat rozšířené události pro monitorování. V tomto příkladu uvidíte události přidané ručně do relace, které vás provedou všemi možnostmi, ale když začínáte, může být použití šablony snadný způsob, jak vytvořit základní relaci.

Při spuštění této relace máte několik možností zaškrtávacího políčka. Můžete se rozhodnout, že se nová relace spustí při každém spuštění serveru a můžete se také rozhodnout, že relaci spustíte, jakmile se vytvoří. Správci můžou spustit a kdykoli zastavit rozšířené relace událostí prostřednictvím uzlu Rozšířené události v aplikaci SQL Server Management Studio. Máte také možnost povolit sledování kauzality, která do výstupu každé události přidá globálně jedinečný identifikátor (GUID) a pořadové číslo, které umožňuje snadno procházet pořadí, ve kterém došlo k událostem.

Výběr události v aplikaci SQL Server Management Studio

Na obrázku výše vidíte obrazovku, na které přidáte události do relace. Událost představuje bod zájmu v rámci kódu databázového stroje – mohou představovat čistě interní systémové operace nebo mohou být přidruženy k uživatelským akcím, jako je provádění dotazů. V předchozím příkladu můžete vidět, že události sp_statement_completeda sql_batch_completedsql_statement_completed byly přidány do této relace událostí. Ve výchozím nastavení by tato relace zachytála všechny instance těchto událostí, které probíhají ve vaší instanci. Kolekci můžete omezit kliknutím na tlačítko Konfigurovat.

Globální výběr událostí

Obrazovka konfigurace událostí umožňuje definovat, jaká data shromažďujete v souvislosti s vašimi událostmi. Globální pole umožňují zvolit data, která shromažďujete, když dojde k události. Globální pole se také označují jako akce, protože akce slouží k přidání dalších datových polí do události. Tato pole představují data shromážděná při výskytu rozšířené události a jsou běžná pro většinu rozšířených událostí. Následující obrázek ukazuje možnosti filtru pro rozšířenou událost.

Filtr událostí v aplikaci SQL Server Management Studio

Filtry jsou výkonnou funkcí rozšířených událostí, které umožňují pomocí podrobného řízení zachytit pouze konkrétní výskyty události, kterou chcete zachytit. V tomto příkladu vidíte, že se filtr používá v poli sqlserver.is_system , ve kterém se rovná nule, což znamená, že dotaz není interní operací. Jinými slovy, relace nezachytí dokončení příkazů odesílaných systémovými připojeními a chceme zachytit pouze příkazy odeslané uživateli nebo uživatelskými aplikacemi.

Filtry se vztahují na jedno pole v jedné události. Pokud chcete mít jistotu, že nesledujete systémové aktivity pro žádné události, budete pro každou událost potřebovat samostatný filtr: pro sql_statement_completed událost, pro sql_batch_completed událost a pro sp_statement_completed událost.

Je vhodné nakonfigurovat filtr pro každou událost, kterou zachytáváte. To pomáhá zlepšit efektivitu shromažďování dat a umožňuje zúžit zaměření hledání.

Následující obrázek znázorňuje shromážděná pole událostí. Tato pole jsou specifická pro událost, která se aktivuje, a můžou obsahovat volitelná pole pro kolekci. Ve výše uvedeném případě můžete zobrazit volitelné možnosti kolekce , statementa parameterized_plan_handle.

Výběr polí událostí

Jakmile definujete relaci událostí, definujete cíl úložiště, jak je znázorněno na následujícím obrázku.

Výběr cíle úložiště pro rozšířené události

Rozšířená relace událostí má cíl – cíl lze jednoduše představit jako místo pro modul, aby mohl sledovat výskyty události. Dva z nejběžnějších cílů jsou soubor událostí, což je soubor v systému souborů, který může ukládat události, a v nabídce Azure SQL PaaS se tato data zapisují do úložiště objektů blob. Dalším běžným cílem je vyrovnávací paměť okruhu, která je v paměti SQL Serveru. Vyrovnávací paměť okruhu se nejčastěji používá pro živé pozorování relace událostí, protože se jedná o kruhovou vyrovnávací paměť a data se neuchovávají mimo relaci. Většina cílů zpracovává data asynchronně, což znamená, že data události se před uložením na disk zapisují do paměti. Výjimkou je trasování událostí pro cíl Windows (ETW) a cíle čítače událostí, které se zpracovávají synchronně.

Následující tabulka obsahuje informace a používá se pro každý typ cíle rozšířených událostí.

Cíl Popis zpracovává se
Čítač událostí Spočítá všechny události, ke kterým došlo během relace rozšířené události. Používá se k získání informací o charakteristikách úloh úlohy bez režie úplné kolekce událostí. Synchronní
Soubor událostí Zapíše výstup relace událostí z paměti do trvalého souboru na disku. Asynchronní
Párování událostí Mnoho událostí, ke kterým obvykle dochází ve dvojicích (např. získání zámku, uvolnění zámku) a tato kolekce se dá použít k identitě, když k těmto událostem nedojde v odpovídající sadě. Asynchronní
Trasování událostí pro Windows (ETW) Používá se ke korelaci událostí SQL Serveru s daty událostí operačního systému Windows. Synchronní
Histogram To se podobá čítači událostí, který spočítá výskyty události. Rozdíl je v tom, že histogram může počítat na základě konkrétního sloupce nebo akce události. Asynchronní
Vyrovnávací paměť okruhu Používá se k ukládání dat v paměti. Data se neuchovávají na disk a možná se často vyprázdní z vyrovnávací paměti. Asynchronní

Případně můžete vytvořit relaci rozšířených událostí pomocí T-SQL. Následující příkazy T-SQL poskytují příklad vytvoření relace rozšířených událostí:

IF EXISTS (SELECT * FROM sys.server_event_sessions WHERE name='test_session')
    DROP EVENT session test_session ON SERVER;
GO

CREATE EVENT SESSION test_session
ON SERVER
    ADD EVENT sqlos.async_io_requested,
    ADD EVENT sqlserver.lock_acquired
    ADD TARGET package0.etw_classic_sync_target (SET default_etw_session_logfile_path = N'C:\demo\traces\sqletw.etl' )
    WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB);
GO

Relace událostí mohou být vymezeny na server nebo databázi. V příkladu uvedeném výše přidáváte dvě události a pomocí cesty Trasování událostí pro Windows (ETW) s umístěním souboru. Po vytvoření relace ji budete muset spustit. Můžete to provést prostřednictvím jazyka T-SQL a ALTER relace pomocí STATE možnosti, nebo pro ni můžete použít SQL Server Management Studio.