Heartbeat monitoring
Noční záloha, která tiše přestala běžet, je výpadek, který nikdo nevidí. Nechte každou úlohu, ať se hlásí sama, a dozvíte se o běhu, který nenastal.
Kontrola, která běží ve vaší infrastruktuře
Každá jiná naše kontrola se ptá zvenčí: je port otevřený, odpovídá stránka, existuje ještě záznam. Cron úloha neodpoví ani na jednu z nich — běží na stroji, ke kterému se nikdo nedostane, nevytváří žádný endpoint, a když tiše přestane, jediným příznakem je záloha, kterou nikdo neudělal, nebo faktura, kterou nikdo neposlal. Heartbeat to obrací. Pulsitor dá úloze privátní token, úloha ho na konci každého úspěšného běhu pošle v hlavičce na jednu pevnou adresu a my hlídáme hodiny. Když okno projde bez pingu, incident se otevře sám a putuje stejnými kanály jako u každé jiné kontroly.
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 -H "X-Heartbeat-Token: YOUR-TOKEN" https://external-services.pulsitor.com/heartbeat/ping
Zařazeno za příkaz, takže neúspěšná záloha nikdy neohlásí úspěch.
Jak funguje heartbeat kontrola
Čím je Pulsitor silný hned po nasazení.
Úloha se hlásí sama
Přidejte jeden řádek na konec cron záznamu, workeru nebo deploy skriptu. Stačí GET, POST nebo HEAD požadavek s tokenem monitoringu v hlavičce — žádný agent, žádná knihovna, nic k instalaci.
Periodu i rezervu určujete vy
Řekněte, jak často se má úloha hlásit — od minuty po týden — a o kolik může mít zpoždění, než to počítáme jako zmeškané. Záloha, která běžně trvá dvacet minut, dostane dvacet minut tolerance.
Incident otevře ticho
Když okno projde bez pingu, incident začíná v okamžiku, kdy mělo hlášení přijít, ne když jsme si to všimli. A sám se uzavře, jakmile se úloha znovu ohlásí.
Co se tím dá sledovat
Vše, co má běžet podle plánu a nemá vlastní adresu.
Cron úlohy
Noční záloha, fakturační běhy, importy, nahřívání cache. Klasika: řádek v crontabu, který přestal fungovat při přestavbě serveru a měsíc si toho nikdo nevšiml.
Queue workery
Worker, který spadl, za sebou tiše nechává rostoucí frontu. Heartbeat z konce každé dávky vám řekne, že skutečně konzumuje, ne jen že je v seznamu procesů.
Zálohy a exporty
Hlaste se teprve tehdy, když dump doběhl a upload byl potvrzen. Záloha, která se ohlásí dřív, než uspěje, je horší než žádný monitoring.
Zařízení a agenti
IoT zařízení, edge boxy a skripty za NATem, ke kterým se z internetu nikdo nedostane. Zvenčí je nepingnete, ale ozvat se umí.
Jeden řádek v úloze, kterou už máte
Celá integrace je jeden požadavek: váš token v hlavičce, odeslaný na konci běhu, když práce skutečně uspěla.
Crontab
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 --retry 3 -H "X-Heartbeat-Token: YOUR-TOKEN" https://external-services.pulsitor.com/heartbeat/ping
Zařazeno za příkaz, takže neúspěšná záloha nikdy neohlásí úspěch.
Shell skript
#!/bin/sh set -e pg_dump mydb | gzip > /backups/mydb.sql.gz aws s3 cp /backups/mydb.sql.gz s3://backups/ curl -fsS -m 10 --retry 3 -H "X-Heartbeat-Token: YOUR-TOKEN" https://external-services.pulsitor.com/heartbeat/ping
Krátký timeout a pár opakování zabrání tomu, aby pomalá síť otevřela falešný incident.
Kód aplikace
Http::withHeaders(['X-Heartbeat-Token' => $token])
->timeout(10)
->retry(3, 200)
->get('https://external-services.pulsitor.com/heartbeat/ping');
Postačí libovolný HTTP klient. Z odpovědi nečteme nic kromě toho, že přišla.
Proč sledovat úlohu takto
Zachytí tichou chybu
Úloha, která se vůbec nespustí, nevyhodí chybu ani nezapíše log. Jediným signálem je její absence — a přesně tu je heartbeat postavený si všimnout.
Dosáhne tam, kam sondy ne
Za firewallem, na notebooku, ve vnitřní síti, na zařízení bez veřejné adresy. Pokud dokáže odeslat požadavek ven, dá se monitorovat.
Stejné incidenty, stejné kanály
Zmeškaný heartbeat je incident jako každý jiný: tytéž kanály, tatáž historie a tytéž status stránky, které vaši zákazníci už čtou.
Heartbeat monitoring v číslech
Co kontrola skutečně dělá.
| Vlastnost | Hodnota |
|---|---|
| Co se kontroluje | Zda požadavek z vaší úlohy dorazí v očekávaném okně |
| Přijímané metody | GET, POST, HEAD |
| Jak se monitoring identifikuje | Token v hlavičce X-Heartbeat-Token nebo jako Authorization: Bearer |
| Očekávaná perioda | 1 minuta až 7 dní |
| Tolerance | 30 sekund až 24 hodin |
| Kdy se otevře incident | Jedno očekávané okno prošlo bez pingu |
| Notifikační kanály | 14 |
| Dostupné v | Placené plány, od 6 EUR měsíčně |
Otázky k heartbeat monitoringu
Co vám heartbeat řekne a co ne.
Co přesně je heartbeat monitoring?
Monitoring bez cíle. Místo aby volali my vaši službu, volá vaše úloha při každém běhu jednu naši adresu a nese si vlastní token v hlavičce. Kontrola projde, když požadavek dorazí včas, a spadne, když nedorazí.
Kdy má úloha ping odeslat?
Až na samém konci, když práce uspěla. Volání na začátku by ohlásilo běh, který ještě může v polovině spadnout — a to je přesně ten výpadek, který chcete zachytit.
K čemu je tolerance?
Skutečné úlohy se v čase rozcházejí. Tolerance určuje, o kolik může hlášení mít zpoždění, než ho monitoring vzdá — takže záloha, která občas běží o deset minut dýl, nikoho v noci nebudí.
Proč je token v hlavičce a ne v URL?
Protože tajemství v adrese tajemstvím nezůstane: zapíše se do access logů, do každé proxy po cestě, do historie shellu i do seznamu procesů na stroji, kde úloha běží. V hlavičce se do nich nedostane a všechny monitoringy volají tutéž adresu.
Dá se sledovat úloha za firewallem?
Ano, a právě o to jde. K vašemu stroji se nemusí dostat nic — úloha potřebuje jen odeslat HTTPS požadavek ven.
Co se stane, když se úloha znovu ohlásí?
Incident se při nejbližším pingu sám vyřeší a notifikace o vyřešení odejde stejnými kanály, kterými přišlo upozornění.
Je heartbeat monitoring ve free plánu?
Ne. Heartbeat monitoring je součástí placených plánů, spolu s kontrolami DNS, SSL a expirace domény.
Sledování úlohy ve 3 krocích
Vytvořte heartbeat monitoring, pojmenujte ho podle úlohy a určete, jak často se má hlásit.
Zkopírujte token do úlohy a pošlete ho v hlavičce na konci každého úspěšného běhu.
Vyberte kanály, kam vám to máme říct, a hodiny nechte hlídat nás.