Miroslav Holec

Software & Cloud Architect

miroslavholec.cz / blog / nechte-si-nafackovat-s-azure-webhooks

Nechte si nafackovat s Azure Webhooks...

Miroslav Holec

Publikován 25. května 2016 | Diagnostika, Monitor

Tento článek je starší 18 měsíců a je proto možné, že popisuje postupy nebo technologie, které v uplynulé době mohly doznat výraznějších změn. Názory a myšlenky v tomto článku již nemusí vyjadřovat současné stanovisko autora nebo autorů. Článek byl napsán 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á:

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

Potřebujete pomoci?

Líbil se Vám článek? Máte dotaz nebo chcete v této oblasti s něčím pomoci? Neváhejte se na mě obrátit.

mirek@miroslavholec.cz

  • Řešení vývojářských problémů
  • Konzultace
  • Firemní školení a workshopy