Heartbeat
Cron- en achtergrondtaakmonitoring
Andersom: jouw taak belt ons.
Waar het voor is
Alles hier gaat kijken. Deze wacht. Je backup, je nachtelijke import, je queue worker belt een URL wanneer het klaar is, en wij waarschuwen als er geen oproep binnenkomt.
Het is de enige manier om iets te monitoren zonder adres om te controleren. Een backup-taak die drie weken geleden is gestopt, ziet er van buiten precies zo uit als een taak die perfect heeft gedraaid, totdat iemand de backup nodig heeft.
Wat je kunt instellen
Alles hieronder staat op het formulier wanneer je er een toevoegt, bij elk abonnement.
- Hoe vaak het draait
- Niet hoe vaak wij kijken: hoe vaak jouw taak moet bellen. Een wekelijkse backup is een normaal iets om te hebben, dus deze gaat tot een maand waar de anderen stoppen bij een dag.
- Toegestane vertraging
- Hoeveel minuten de oproep te laat mag zijn. Een taak die elk uur draait en tot twintig minuten duurt, kan dertig minuten vertraging hebben. Leeg is een tiende van de periode.
- Ping-URL
- Gegenereerd wanneer je de monitor aanmaakt, en één keer getoond. Roep het aan vanuit het einde van je taak. Het kan opnieuw gegenereerd worden, wat de oude vervangt.
Vragen
Is dit hetzelfde als een dead man's switch?
Precies dat, toegepast op cron job monitoring. Alles op deze site kijkt ergens naar. Deze wacht tot hij iets hoort, en waarschuwt bij stilte, wat de enige manier is om een taak te monitoren die geen adres heeft om te checken en geen pagina om te lezen.
Hoe laat mag mijn taak zijn voordat jullie waarschuwen?
Zo laat als je toestaat, in minuten. Een taak die elk uur draait en tussen één en twintig minuten duurt kan dertig minuten krijgen, zodat een call wordt verwacht tussen zestig en negentig minuten na de vorige. Laat je het leeg, dan is het een tiende van de periode waarin hij draait, en nooit minder dan een minuut: twee minuten te laat betekent niets voor een nachtelijke backup en alles voor een taak die elke vijf minuten draait. De ondergrens is er omdat een cron job een paar seconden rond de minuut normaal afvuurt en nooit een incident mag openen.
Hoe roep ik het aan vanuit een cron-taak of een shellscript?
Haal de URL op aan het einde van de taak, met curl of wget of iets anders dat HTTP spreekt. GET, POST en HEAD worden allemaal geaccepteerd, omdat de helft van de wereld de ene kiest en de andere helft de andere, en het antwoord is een lege 204 zodat een nachtelijke taak geen HTML-pagina naar de operator mailt.
Moet ik het aanroepen aan het begin of aan het einde?
Aan het einde, nadat het werk is geslaagd en niet voordat het begint. Een call bovenaan het script zegt dat de machine wakker werd, wat zelden is wat misgaat. Zet het op de laatste regel, achter welke exit code check het script al heeft, en de stilte betekent dan dat de taak faalde in plaats van dat de host offline is.
Wat als de URL uitlekt?
De URL is de credential, daarom is het 256 bits willekeurigheid en wordt hij maar één keer aan je getoond. Iedereen die hem heeft kan je taak als gezond rapporteren, wat de fout is om je zorgen over te maken in plaats van dat iemand iets leest. Genereer hem opnieuw en de oude stopt direct met werken.
Kan een taak die wekelijks draait dit gebruiken?
Ja, en het is een van de betere redenen om dat te doen. Dit interval gaat tot een maand waar de andere checktypes stoppen bij een dag, omdat een wekelijkse backup normaal is om te hebben en een backup die drie weken geleden stilletjes stopte identiek lijkt aan een die perfect draaide, tot de dag dat iemand hem nodig heeft.
Waarom laat je de taak mij geen e-mail sturen als hij faalt?
Omdat de fout die je moet horen degene is waarbij de taak helemaal niet draait, en een taak die niet draaide geen e-mail stuurt. Dat dekt een crash in het script, een machine die herstartte, een cron entry die iemand uitcommentarieerde, een container die nooit startte en een queue die stopte met legen. Fouten in de taak vangen is nog steeds de moeite waard; het is een andere fout dan stilte.