Monitoring heartbeat
Nocna kopia zapasowa, która cicho przestała działać, to awaria, której nikt nie widzi. Niech każde zadanie zgłasza się samo i dowiedz się o przebiegu, którego nie było.
Kontrola, która działa wewnątrz twojej infrastruktury
Każda inna nasza kontrola pyta z zewnątrz: czy port jest otwarty, czy strona odpowiada, czy rekord nadal istnieje. Zadanie cron nie odpowie na żadne z tych pytań — działa na maszynie, do której nikt nie ma dostępu, nie tworzy żadnego endpointu, a gdy cicho przestanie działać, jedynym objawem jest kopia, której nikt nie zrobił, albo faktura, której nikt nie wysłał. Heartbeat to odwraca. Pulsitor daje zadaniu prywatny token, zadanie wysyła go w nagłówku na jeden stały adres na końcu każdego udanego przebiegu, a my pilnujemy zegara. Gdy okno minie bez pingu, incydent otwiera się sam i idzie tymi samymi kanałami jak przy każdej innej kontroli.
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
Doczepione po komendzie, więc nieudana kopia nigdy nie zgłosi sukcesu.
Jak działa kontrola heartbeat
To, w czym Pulsitor jest mocny od pierwszego dnia.
Zadanie zgłasza się samo
Dodaj jedną linię na końcu wpisu cron, workera lub skryptu wdrożeniowego. Wystarczy żądanie GET, POST lub HEAD z tokenem monitora w nagłówku — żadnego agenta, biblioteki ani niczego do instalacji.
Okres i zapas ustalasz ty
Powiedz, jak często zadanie ma się zgłaszać — od minuty do tygodnia — i o ile może się spóźnić, zanim uznamy to za pominięcie. Kopia, która zwykle trwa dwadzieścia minut, dostaje dwadzieścia minut tolerancji.
Incydent otwiera cisza
Gdy okno minie bez pingu, incydent zaczyna się w chwili, w której zgłoszenie miało nadejść, a nie gdy to zauważyliśmy. I zamyka się sam, gdy zadanie zgłosi się ponownie.
Co się tym monitoruje
Wszystko, co ma działać według harmonogramu i nie ma własnego adresu.
Zadania cron
Nocne kopie, przebiegi fakturowania, importy, rozgrzewanie cache. Klasyka: linia w crontabie, która przestała działać przy przebudowie serwera i nikt nie zauważył tego miesiąc.
Workery kolejek
Worker, który padł, cicho zostawia za sobą rosnącą kolejkę. Heartbeat z końca każdej partii mówi ci, że naprawdę konsumuje, a nie tylko widnieje na liście procesów.
Kopie i eksporty
Zgłaszaj się dopiero wtedy, gdy zrzut się skończył i upload został potwierdzony. Kopia, która zgłasza się przed sukcesem, jest gorsza niż brak monitoringu.
Urządzenia i agenci
Urządzenia IoT, edge boxy i skrypty za NAT-em, do których nic z internetu nie dotrze. Z zewnątrz ich nie spingujesz, ale odezwać się potrafią.
Jedna linia w zadaniu, które już masz
Cała integracja to jedno żądanie: twój token w nagłówku, wysłany na końcu przebiegu, gdy praca faktycznie się udała.
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
Doczepione po komendzie, więc nieudana kopia nigdy nie zgłosi sukcesu.
Skrypt shell
#!/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ótki timeout i kilka ponowień nie pozwolą wolnej sieci otworzyć fałszywego incydentu.
Kod aplikacji
Http::withHeaders(['X-Heartbeat-Token' => $token])
->timeout(10)
->retry(3, 200)
->get('https://external-services.pulsitor.com/heartbeat/ping');
Wystarczy dowolny klient HTTP. Z odpowiedzi nie czytamy nic poza tym, że nadeszła.
Dlaczego monitorować zadanie w ten sposób
Wychwytuje cichą awarię
Zadanie, które wcale się nie uruchomi, nie zgłosi błędu ani nie zapisze loga. Jedynym sygnałem jest jego brak — i właśnie to heartbeat jest zbudowany zauważyć.
Sięga tam, gdzie sondy nie
Za firewallem, na laptopie, w sieci wewnętrznej, na urządzeniu bez adresu publicznego. Jeśli potrafi wysłać żądanie na zewnątrz, można je monitorować.
Te same incydenty, te same kanały
Pominięty heartbeat to incydent jak każdy inny: te same kanały, ta sama historia i te same strony statusu, które twoi klienci już czytają.
Monitoring heartbeat w liczbach
Co kontrola faktycznie robi.
| Właściwość | Wartość |
|---|---|
| Co jest sprawdzane | Czy żądanie z twojego zadania dotrze w oczekiwanym oknie |
| Akceptowane metody | GET, POST, HEAD |
| Jak monitor jest rozpoznawany | Token w nagłówku X-Heartbeat-Token lub jako Authorization: Bearer |
| Oczekiwany okres | od 1 minuty do 7 dni |
| Tolerancja | od 30 sekund do 24 godzin |
| Kiedy otwiera się incydent | Jedno oczekiwane okno minęło bez pingu |
| Kanały powiadomień | 14 |
| Dostępne w | Plany płatne, od 6 EUR miesięcznie |
Pytania o monitoring heartbeat
Co heartbeat ci powie, a czego nie.
Czym dokładnie jest monitor heartbeat?
Monitorem bez celu. Zamiast tego, żebyśmy my wywoływali twoją usługę, twoje zadanie wywołuje przy każdym przebiegu jeden nasz adres, niosąc własny token w nagłówku. Kontrola przechodzi, gdy żądanie dotrze na czas, i nie przechodzi, gdy nie dotrze.
Kiedy zadanie ma wysłać ping?
Na samym końcu, gdy praca się udała. Wywołanie na starcie zgłosiłoby przebieg, który może jeszcze padnąć w połowie — a to właśnie ta awaria, którą chcesz wychwycić.
Po co jest tolerancja?
Prawdziwe zadania się rozjeżdżają. Tolerancja mówi, o ile zgłoszenie może się spóźnić, zanim monitor je odpuści — więc kopia, która czasem trwa dziesięć minut dłużej, nikogo nie budzi w nocy.
Dlaczego token jest w nagłówku, a nie w adresie URL?
Bo sekret w adresie nie pozostaje sekretem: trafia do logów dostępu, do każdego proxy po drodze, do historii powłoki i na listę procesów maszyny, na której działa zadanie. W nagłówku nie trafia do żadnego z nich, a wszystkie monitory wywołują ten sam adres.
Czy mogę monitorować zadanie za firewallem?
Tak, i o to właśnie chodzi. Nic nie musi dosięgnąć twojej maszyny — zadanie potrzebuje tylko móc wysłać żądanie HTTPS na zewnątrz.
Co się stanie, gdy zadanie znów się zgłosi?
Incydent rozwiąże się sam przy najbliższym pingu, a powiadomienie o rozwiązaniu pójdzie tymi samymi kanałami, którymi przyszedł alarm.
Czy monitoring heartbeat jest w planie darmowym?
Nie. Monitory heartbeat są częścią planów płatnych, obok kontroli DNS, SSL i wygaśnięcia domeny.
Monitoring zadania w 3 krokach
Utwórz monitor heartbeat, nazwij go od zadania i określ, jak często ma się zgłaszać.
Skopiuj token do zadania i wyślij go w nagłówku na końcu każdego udanego przebiegu.
Wybierz kanały powiadomień, a pilnowanie zegara zostaw nam.