Slovenská verze


Nechte si nafackovat s Azure Webhooks...

Miroslav Holec

Miroslav Holec

25. května. 2016

... 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ů.

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á:

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.

TOP Termíny školení

ASP.NET Core se dočkal již své třetí verze a nabízí řadu možností pro vývoj webových aplikací a služeb. I v roce 2020 mám vypsané termíny na nejrůznější témata od základů .NET Core přes vývoj REST API až po mikroslužby pomocí gRPC.

Termín Místo
🍀 Novinky a změny v ASP.NET Core 3.x leden 2020 Praha více
🍀 Vývoj REST API v .NET Core (třídenní) leden 2020 Praha více
🍀 Vývoj aplikací v ASP.NET Core březen 2020 Praha více
🍀 Microservices v ASP.NET Core gRPC březen 2020 Praha více
🍀 Vývoj REST API v .NET Core (dvoudenní) březen 2020 Praha více
🍀 Tipy a triky pro ASP.NET Core březen 2020 Praha více

👨‍🎓 Čerstvá školení 2020
👍 Vývoj aplikací v ASP.NET Core
👍 Vývoj REST služeb v .NET Core
👍 Microservices v ASP.NET Core gRPC
👍 Tipy a triky v ASP.NET Core
👍 Změny v ASP.NET Core 3.x