PagerDuty, nebo proč může oddělení provozu nespát v noci

Čím složitější je systém, tím více se obklopuje různými upozorněními. A objevuje se potřeba na tato upozornění reagovat, agregovat je a vizualizovat. Myslím, že situace je známá mnohým až do nervového tikání.

Řešení, o kterém bude řeč, není nejpřekvapivější, ale plnohodnotný článek na toto téma se nedaří najít.

Proto jsem se rozhodl podělit o zkušenosti společnosti FunCorp a povědět o tom, jak je nastaven proces pohotovosti, kdo volá, proč a jak se na to vše dá dívat.

PagerDuty, nebo proč může oddělení provozu nespát v noci

Co je to PagerDuty?

Abychom vyřešili všechny tyto úkoly, začali jsme hledat pohodlný nástroj. Po krátkém hledání jsme se rozhodli pro PagerDuty. PD se nám zdál být dostatečně úplným a přehledným řešením s velkým množstvím integrací a nastavení. Co to vlastně představuje?

Stručně řečeno, PagerDuty je platforma pro zpracování incidentů, která umí zpracovávat příchozí incidenty přes různé integrace, nastavovat pořadí pohotovosti a dále provádět alerting pohotovostnímu inženýru podle úrovně incidentu (při vysoké úrovni — telefonát, při nízké — push z aplikace/sms).

Kdo je to pohotovostní inženýr?

Asi to je první, čím je třeba začít nastavení PD.

Ve FunCorp, stejně jako v jiných společnostech, existuje čestná pozice pohotovostního inženýra. Ta se přenáší od inženýra k inženýrovi jednou za den. Existuje takzvaná první a druhá linie reakce na upozornění od PagerDuty. Představme si, že přijde high-priority alert, a pokud po 10 minutách od hovoru na pohotovostního inženýra z první linie není žádná reakce (tj. není převeden do stavu acknowledged nebo resolved), hovor přechází k druhému pohotovostnímu inženýrovi. To se nastavuje přímo v PagerDuty prostřednictvím Escalation Policies.

PagerDuty, nebo proč může oddělení provozu nespát v noci

Pokud ani druhý pohotovostní inženýr neodpovídá, upozornění se vrací zpět k hlavnímu pohotovostnímu inženýrovi.

Tímto způsobem žádné příchozí high-priority upozornění nemůže zůstat nezpracované. 

Teď se podívejme, odkud mohou incidenty přicházet.

Jaké integrace používáme?

Do PD spadá mnoho různorodých incidentů z různých služeb. V současnosti máme kolem 25 takových služeb a pro jejich zpracování používáme některé hotové integrace.

  • Prometheus

Hlavním systémem pro sběr metrik je Prometheus. O něm už bylo mnohé napsáno na Habr, já jen řeknu, že máme několik instancí pro různé prostředí: jedna sbírá metriky z virtuálních strojů a dockerů, druhá - ze služeb Amazonu, třetí - z "železných strojů". Jako exportér metrik se většinou používá Telegraf.

  • E-mail

Tady také, myslím, je vše jasné z názvu. Tato integrace se používá k odesílání oznámení z některých skriptů vykonávaných podle plánu. PD vám poskytne určitou adresu, na kterou odesíláte e-maily. Při vytváření služby s touto integrací si můžete nastavit priority, v jakém pořadí budou zpracovány příchozí incidenty, jak konkrétně vytvářet alert (při každém příchozím e-mailu, při příchozím e-mailu + nějaké pravidlo atd.).

PagerDuty, nebo proč může oddělení provozu nespát v noci

  • Slack

Podle mého názoru je to velmi zajímavá integrace. Existují případy, kdy se něco stane, ale nezahrnuje to incidenty. Proto jsme přidali integraci se Slackem pro vytváření incidentu. T. j. do firemního Slacku můžete napsat /callofduty все тормозит и скоро сломается a PD to zpracuje a pošle incident na pohotovostního technika.

Děláme:

PagerDuty, nebo proč může oddělení provozu nespát v noci

Vidíme:

PagerDuty, nebo proč může oddělení provozu nespát v noci

  • API

Integrace přes HTTP. Tady není nic zvláštního, jen POST žádost s tělem v JSON formátu. Například, z zajímavého: používáme ji pro externí monitoring pomocí https://www.statuscake.com/. Tato služba kontroluje dostupnost našich stránek z různých míst na světě. V případě, kdy obdržíme nepřijatelný kód odpovědi (například 502), je vytvořen incident a dál to pokračuje podle řetězce, popsaného výše. V samotném StatusCake je možnost monitorování interních URL, expirace SSL certifikátu nebo domény.

  • LibreNMS

To je další monitorovací systém, podrobněji o něm si můžete přečíst na jejich webu https://www.librenms.org/. S jeho pomocí provádíme monitoring síťových rozhraní a iDRAC ze serverů.

PagerDuty, nebo proč může oddělení provozu nespát v noci

Byly i další integrace, jako Datadog, CloudWatch. Podrobnosti o tom, co s nimi bylo, si můžete prohlédnout tady.

Vizualizace

Hlavním systémem pro informování o incidentech je Slack. Do speciálního chatu se zapisují všechny příchozí incidenty do PD, a pokud se změní jejich stav, je to také zobrazeno v chatu.

PagerDuty, nebo proč může oddělení provozu nespát v noci

Když se objevila možnost zobrazit užitečné údaje na monitorech visících ze stropu, náhle jsme si uvědomili, že v našem (devops) oddělení nemáme, co na ně zobrazovat. Existuje skvělá Grafana, ale ta nezahrnuje všechno, navíc zaměstnanci reagují na upozornění, nikoli na grafy.

Po pečlivém, ale neúspěšném hledání na GitHubu stručného a informativního 'boardu' pro PD, jsme se rozhodli napsat si svůj — pouze s tím, co potřebujeme. I když prvně byla myšlenka zobrazit na obrazovce samotné rozhraní PD, to vypadalo ještě nepohodlněji.

K tomu, abychom ji napsali, stačí získat klíč k PD s právy pouze pro čtení.
A tady je, co jsme vytvořili:

PagerDuty, nebo proč může oddělení provozu nespát v noci

Na obrazovce se zobrazují aktuální otevřené incidenty, jméno aktuálního pohotovostního inženýra z vybraného rozvrhu a čas bez vysokoprioritního incidentu (panel s vysokoprioritním incidentem bude zvýrazněn červenou barvou).

Zdroje této realizace si můžete prohlédnout zde.

Nakonec jsme získali pohodlný dashboard pro přehled všech našich incidentů. Budu rád, pokud náš zkušenost někomu z vás pomůže.

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster