Application Insights mění cenové plány. Jak ušetřit a přitom nepřijít o diagnostická data?
Tento článek byl napsán v roce 2017. Vývojářské technologie se neustále inovují a článek již nemusí popisovat aktuální stav technologie, ideální řešení a můj současný pohled na dané téma.
Služba Application Insights, která slouží pro diagnostiku a monitoring webových aplikací byla poslední měsíce intenzivně vylepšována. Koncem roku byla vydána zpráva o novém pricing modelu, který přijde v platnost v polovině února. Co to pro vývojáře znamená sepisuji v tomto článku.
Cenový model Application Insights
Dosavadní cenový model pracoval s jednotkou "data point", který reprezentoval nejčastěji telemetrii přenesenou do Microsoft Azure. Protože se však datová velikost telemetrií výrazně lišila v závilosti na svém druhu, nový cenový plán již pracuje výhradně s objemem přenesených dat. Platby za službu jsou počítány na hodinové bázi a pro jeden měsíc se předpokládá 744 hodin.
Plán Basic
Dobrá zpráva je, že Application Insights lze stále používat zdarma. V rámci plánu Basic je však možné přenést maximálně 32 MB za den (čili něco kolem 1 GB za měsíc). Po překročení tohoto limitu je účtována částka 1,94 EUR / GB. Upozorňuji tedy, že plán Basic NENÍ nutně vždy zdarma.
Do 1. března 2017 je v rámci programu Basic možné používat kontinuální export dat a konektor do služby OMS zcela zdarma.
Plán Enterprise
V rámci programu Enterprise je nutné platit paušální poplatek 12,65 EUR / měsíc a za jeden node. V rámci tohoto poplatku má vývojář k dispozici limit 200 MB přenesených dat za den. Po překročení limitu se účtuje stejně jako v případě plánu Basic částka 1,94 EUR / GB.
Plán Enterprise navíc nabízí funkci Multi-step web tests, která v rámci plánu Basic není vůbec dostupná. Cena za jeden multi-step web test je pevně nastavená na 8,43 EUR. Při této ceně se již multikrokové testy hodí skutečně jen pro definici komplexních scénářů nebo náhradu většího balíku standardních ping testů za jeden multi-step web test.
Zamezení placeného režimu
Pokud si nepřejete, aby Application Insights automaticky po překročení limitů začala účtovat dodatečná data, lze povolit funkci "Collect only session data" (výchozí nastavení). V opačném případě je nutné povolit "Pay for more automatically".
Jak se vyhnout zbytečným platbám
Přestože restrikce působí na první pohled tvrdě, ve skutečnosti lze službu nastavit tak, aby nedocházelo k účtování zbytečných dat. Poslouží k tomu funkce filrování a preprocessing telemetrií, které jsou v Application Insights dostupné již několik měsíců.
Efektivní metoda filtrování telemetrií je sampling, který hledá data stejného charakteru a duplicitní data na základě nastavení zcela zahazuje. Pro vývojáře to však neznamená žádné informační zkreslení, protože Azure portál stále poskytuje nezkreslený pohled na agregovaná data. Sampling lze aplikovat na straně Azure, v aplikačním kódu na straně serveru ale i v případě Javascriptu.
Ingestion sampling (na straně Azure)
Funkce Ingestion Sampling je dostupná v sekci Quota + pricing na vybrané službě Application Insights v Azure. Aktivací funkce se defacto říká, kolik procent dat přijatých z SDK má být uchováno. Data se sice z aplikace odešlou proti Application Insights API, to ale na základě nastavení Ingestion Samplingu část dat nezpracuje. Velkou výhodou je možnost provést okamžitou změnu bez deploye aplikace.
Adaptive / fixed-rate sampling (na straně aplikace)
Další typy samplingu umožňují přesněji specifikovat, jaké telemetrie se mají ze sběru ignorovat. Tato nastavení se provádějí přímo ve webové aplikaci buď pomocí ApplicationInsights.Config nebo přímo na úrovni kódu. Odkázat mohu na výživnou dokumentaci.
Preprocessing
Zatímco v případě samplingu se vzdáváme určitého množství duplicitních dat (nebo z větší části duplicitních), v případě preprocessingu vědomě vybíráme telemetrie, které nechceme do Azure posílat. Praktickým příkladem mohou být:
- závislosti, které se odbavily do 1 ms a proběhly úspěšně
- chyby typu 404 na stránky, které víme, že neexistují
- chyby typu 401 v případě pokusu o vstup do sekce nepřihlášeným uživatelem
- výjimky, o kterých víme, že vznikají a nechceme je dále vyšetřovat
Preprocessing umožňuje "prozkoumat" vlastnosti každé telemetrie a rozhodnout se, zda ji má smysl do Azure portálu posílat.
Závěr
S příchodem nových pricing plánů Microsoft z mého pohledu správně nutí vývojáře více se zamyslet nad tím, jaká data hodlá ve službě Application Insights analyzovat. Díky tomu lze očekávat, že služba bude pracovat s menším objemem relativnějších dat, což se vývojářům vrátí v podobě rychlejší práce s Azure portálem. Nejznatelnější zrychlení vývojář pocítí při práci s daty za větší časový úsek.