COVID-19: Všechna školení nyní i on-line. Přečtěte si mé tipy na vzdělávání v době koronavirové.
Slovenská verzeSlovensky

Nechte si nafackovat s Azure Webhooks...

... nebo pokud doma nemáte robota se srdcem Raspberry Pi, který by Vás šikanoval, můžete si nechat v reakci na pád webu poslat třeba výhružnou SMS. V tomto článku bude řeč o metrikách v Azure a notifikování v případě překročení různých thresholdů.

Miroslav Holec

Miroslav Holec

25. května. 2016

Tento článek je již velmi zastaralý. Zastaralé články nemusí popisovat aktuální stav technologií, nejideálnější řešení a můj aktuální pohled na danou technologii.

Předdefinované a vlastní metriky

Celá řada služeb v Microsoft Azure sbírá data k metrikám, které vždy s konkrétní službou úzce souvisí. V případě SQL databází se může jednat o zbývající prostor pro data nebo v případě Azure Storage o (ne)úspěšné dotazy do úložiště.

Pokud používáte diagnostickou službu Application Insights, můžete dokonce vytvářet své vlastní metriky navázané na určitou událost ve vaší aplikaci. Příkladem může být měření rychlosti nějakého algoritmu nebo závislosti - například volání cizího API.

Alert rules a správa pravidel

V nastavení mnoha Azure služeb se ukrývá položka Alert rules, která umožňuje nadefinovat pravidlo, při kterém se odesílají správcům notifikace formou emailů.

Položka Alert rules v menu

Po zvolení položky Alert rules a přidání nového alertu je k dispozici jednoduchý formulář:

Add alert rule - část 1

Tento formulář umožňuje zvolit jednu sledovanou metriku a nastavit si pravidlo, při kterém dojde k notifikování správců nebo nadefinovaných emailů. Pravidlo na obrázku říká:

  • Condition: metrika je větší než
  • Threshold: 6 výskytů
  • Period: za posledních 5 minut

Kromě emailu správce nebo volitelných emailů je možné použít funkci Webhooks.

Webhooks na Azure

Webhook je akce, při které Azure odešle POST request se zprávou ve formátu JSON na zvolenou URL adresu (HTTP/HTTPS).

Add alert rule - část 2

Formát tohoto JSON těla lze snadno dohledat v dokumentaci. Pro rychlejší použití uvádím rovnou C# třídy, které používám pro tyto účely já:

Rootová třída Webhook obsahuje stav, informace o kontextu (alertu), v rámci kterého došlo k chybě a dodatečné properties.

public class Webhook
{
	public string Status { get; set; }
	public WebhookContext Context { get; set; }
	public Dictionary<string, string> Properties { get; set; }
}

public class WebhookContext
{
    public DateTime TimeStamp { get; set; }
    public string Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string ConditionType { get; set; }
    public WebhookCondition Condition { get; set; }
    public string PortalLink { get; set; }
}

public class WebhookCondition
{
    public string MetricName { get; set; }
    public string MetricUnit { get; set; }
    public string MetricValue { get; set; }
    public string WindowSize { get; set; }
    public string Threshold { get; set; }
    public string TimeAggregation { get; set; }
    public string Operator { get; set; }
}

Pokud píšete aplikace v ASP.NET MVC, není problém takovou třídu rovnou použít jako parametr v action metodě controlleru:

[Route("endpoint")]
[HttpPost]
public ActionResult Endpoint(Webhook webhook)
{
    // zde lze reagovat na danou zprávu
}

Zbytek je už na vaší fantazii. Získanou notifikaci lze využít například k odeslání SMS zpráv přes SMS bránu, odeslání přizpůsobených emailů nebo k integraci s jinou oblíbenou službou.

Pro ilustraci přikládám ukázku Webhooks z testování na mém webu:

Ukázka webhooks na webu miroslavholec.cz

Závěr

Webhooks je sice malá ale velmi užitečná funkce, která opět zdůrazňuje výhody prostředí Azure. Z vlastní zkušenosti doporučuji používat Azure alerty a efektivně tak předcházet různým problémům. Díky Azure alertům + Webhooks se nemusím bát, že mi náhle dojde místo v nějakém úložišti nebo se dozvím o nefunkčnosti určité části systému až od zákazníka.

Znáte a používáte Webhooks? Podělte se o své zkušenosti a případy použití v diskusi.


👨‍🎓 Webináře pro vývojáře - nyní zdarma

Vzdělávat se můžete i z pohodlí domova. Klasická školení jsem doplnil o související témata, která si můžete poslechnout v podobě živých webinářů. Přidejte se téměř 200 vývojářům, kteří se již připojili k mým webinářům!

Termín Místo
🍀 Software a nástroje, které používám 6. října 2020 online více
🍀 Co ještě nevíte o middlewares 9. října 2020 online více
🍀 Blazor Server 16. října 2020 online více
🍀 Novinky v .NET 5 pro REST API 21. října 2020 online více
Loading