Heartbeat monitoring
Nočná záloha, ktorá potichu prestala bežať, je výpadok, ktorý nikto nevidí. Nechajte každú úlohu hlásiť sa a dozviete sa o behu, ktorý nenastal.
Kontrola, ktorá beží vo vašej infraštruktúre
Každá iná naša kontrola sa pýta zvonku: je port otvorený, odpovedá stránka, existuje ešte záznam. Cron úloha neodpovie ani na jednu z nich — beží na stroji, ku ktorému sa nikto nedostane, nevytvára žiadny endpoint, a keď potichu prestane, jediným príznakom je záloha, ktorú nikto neurobil, alebo faktúra, ktorú nikto neposlal. Heartbeat to obracia. Pulsitor dá úlohe privátny token, úloha ho na konci každého úspešného behu pošle v hlavičke na jednu pevnú adresu a my sledujeme hodiny. Keď okno prejde bez pingu, incident sa otvorí sám a putuje rovnakými kanálmi ako pri každej inej kontrole.
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
Zaradené za príkaz, takže neúspešná záloha nikdy neohlási úspech.
Ako funguje heartbeat kontrola
Čím je Pulsitor silný hneď po nasadení.
Úloha sa hlási sama
Pridajte jeden riadok na konec cron záznamu, workera alebo deploy skriptu. Stačí GET, POST alebo HEAD požiadavka s tokenom monitoringu v hlavičke — žiadny agent, žiadna knižnica, nič na inštaláciu.
Periódu aj rezervu určujete vy
Povedzte, ako často sa má úloha hlásiť — od minúty po týždeň — a o koľko môže meškať, kým to počítame ako zmeškané. Záloha, ktorá bežne trvá dvadsať minút, dostane dvadsať minút tolerancie.
Incident otvorí ticho
Keď okno prejde bez pingu, incident začína v momente, kedy malo hlásenie prísť, nie keď sme si to všimli. A sám sa uzavrie, len čo sa úloha znovu ohlási.
Čo sa tým dá sledovať
Všetko, čo má bežať podľa plánu a nemá vlastnú adresu.
Cron úlohy
Nočné zálohy, fakturačné behy, importy, nahrievanie cache. Klasika: riadok v crontabe, ktorý prestal fungovať pri prestavbe servera a mesiac si to nikto nevšimol.
Queue workery
Worker, ktorý spadol, za sebou potichu necháva rastúcu frontu. Heartbeat z konca každej dávky vám povie, že naozaj konzumuje, nie len že je v zozname procesov.
Zálohy a exporty
Hláste sa až vtedy, keď dump dobehol a upload bol potvrdený. Záloha, ktorá sa ohlási skôr, než uspeje, je horšia ako žiadny monitoring.
Zariadenia a agenti
IoT zariadenia, edge boxy a skripty za NAT-om, ku ktorým sa z internetu nikto nedostane. Zvonku ich nepingnete, ale ozvať sa vedia.
Jeden riadok v úlohe, ktorú už máte
Celá integrácia je jedna požiadavka: váš token v hlavičke, odoslaný na konci behu, keď práca skutočne uspela.
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
Zaradené za príkaz, takže neúspešná záloha nikdy neohlási úspech.
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átky timeout a pár opakovaní zabránia tomu, aby pomalá sieť otvorila falošný incident.
Kód aplikácie
Http::withHeaders(['X-Heartbeat-Token' => $token])
->timeout(10)
->retry(3, 200)
->get('https://external-services.pulsitor.com/heartbeat/ping');
Postačí ľubovoľný HTTP klient. Z odpovede nečítame nič okrem toho, že prišla.
Prečo sledovať úlohu takto
Zachytí tichú chybu
Úloha, ktorá sa vôbec nespustí, nevyhodí chybu ani nezapíše log. Jediným signálom je jej absencia — a presne tú je heartbeat postavený všimnúť si.
Dosiahne tam, kde sondy nie
Za firewallom, na notebooku, vo vnútornej sieti, na zariadení bez verejnej adresy. Ak dokáže odoslať požiadavku von, dá sa monitorovať.
Rovnaké incidenty, rovnaké kanály
Zmeškaný heartbeat je incident ako každý iný: tie isté kanály, tá istá história a tie isté status stránky, ktoré vaši zákazníci už čítajú.
Heartbeat monitoring v číslach
Čo kontrola naozaj robí.
| Vlastnosť | Hodnota |
|---|---|
| Čo sa kontroluje | Či požiadavka z vašej úlohy dorazí v očakávanom okne |
| Prijímané metódy | GET, POST, HEAD |
| Ako sa monitoring identifikuje | Token v hlavičke X-Heartbeat-Token alebo ako Authorization: Bearer |
| Očakávaná perióda | 1 minúta až 7 dní |
| Tolerancia | 30 sekúnd až 24 hodín |
| Kedy sa otvorí incident | Jedno očakávané okno prešlo bez pingu |
| Notifikačné kanály | 14 |
| Dostupné v | Platené plány, od 6 EUR mesačne |
Otázky k heartbeat monitoringu
Čo vám heartbeat povie a čo nie.
Čo presne je heartbeat monitoring?
Monitoring bez cieľa. Namiesto toho, aby sme volali my vašu službu, volá vaša úloha pri každom behu jednu našu adresu a nesie si vlastný token v hlavičke. Kontrola prejde, keď požiadavka dorazí načas, a spadne, keď nedorazí.
Kedy má úloha ping odoslať?
Až na samom konci, keď práca uspela. Volanie na začiatku by ohlásilo beh, ktorý ešte môže v polovici spadnúť — a to je presne ten výpadok, ktorý chcete zachytiť.
Načo je tolerancia?
Skutočné úlohy sa v čase rozchádzajú. Tolerancia určuje, o koľko môže hlásenie meškať, než ho monitoring vzdá — takže záloha, ktorá občas beží o desať minút dlhšie, nikoho v noci nebudí.
Prečo je token v hlavičke a nie v URL?
Pretože tajomstvo v adrese tajomstvom nezostane: zapíše sa do access logov, do každej proxy po ceste, do histórie shellu aj do zoznamu procesov na stroji, kde úloha beží. V hlavičke sa do nich nedostane a všetky monitoringy volajú tú istú adresu.
Dá sa sledovať úloha za firewallom?
Áno, a práve o to ide. K vášmu stroju sa nemusí dostať nič — úloha potrebuje len odoslať HTTPS požiadavku von.
Čo sa stane, keď sa úloha znovu ohlási?
Incident sa pri najbližšom pingu sám vyrieši a notifikácia o vyriešení odíde rovnakými kanálmi, ktorými prišlo upozornenie.
Je heartbeat monitoring vo free pláne?
Nie. Heartbeat monitoring je súčasťou platených plánov, spolu s kontrolami DNS, SSL a exspirácie domény.
Sledovanie úlohy v 3 krokoch
Vytvorte heartbeat monitoring, pomenujte ho podľa úlohy a určte, ako často sa má hlásiť.
Skopírujte token do úlohy a pošlite ho v hlavičke na konci každého úspešného behu.
Vyberte kanály, kam vám to máme povedať, a nechajte hodiny sledovať nás.