En oppetidssjekk henter: en overvåkingstjeneste sender en forespørsel til nettstedet eller API-et ditt etter en fast plan og varsler deg når svaret er feil eller uteblir. En heartbeat dytter: jobben eller tjenesten din sender en forespørsel til overvåkingstjenesten hver gang den kjører, og varselet går når forespørselen ikke kommer. Bruk oppetidssjekker for alt folk når over nettverket, og heartbeats for arbeid som kjører etter en tidsplan eller ikke har noen offentlig adresse. De fleste oppsett trenger begge.
De to er lette å blande sammen, fordi begge ender i «varsle når noe er galt». De ser likevel ulike feil, og bruker du den ene der du trenger den andre, får du en blindsone som først viser seg når noe går i stykker.
Slik fungerer en oppetidssjekk
Overvåkingstjenesten er klienten. Hvert minutt, eller med det intervallet du velger, ber den om en URL, pinger en vert eller åpner en port, og vurderer svaret: statuskoden, responstiden, et nøkkelord på siden, sertifikatet. Hvis sjekken feiler og en ny sjekk bekrefter det, får du et varsel. Dette er en form for syntetisk overvåking: en robot gjør det en besøkende ville gjort.
Den fanger opp: et nettsted eller API som er nede, tregt, svarer med feil, viser feil innhold eller er ødelagt av et utløpt sertifikat eller en DNS-endring. Alt en besøkende ville støtt på.
Den overser: alt som ikke svarer på forespørsler. En sikkerhetskopi som ikke kjørte, en køarbeider som hang seg, en import som feilet klokken 02:00. Nettstedet er oppe, så alle sjekker går gjennom.
Slik fungerer en heartbeat
Jobben din er klienten. Du forteller overvåkingstjenesten når jobben skal kjøre, og jobben kaller en unik ping-URL når den er ferdig. Kommer pingen senere enn en toleransetid du selv velger, får du et varsel. Tanken er en dødmannsknapp: stillhet er signalet. Derfor kalles heartbeat-overvåking også push-overvåking eller dead man’s switch-overvåking.
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 –retry 3 -o /dev/null https://app.uptimecheck.com/api/hb/your-token
Den fanger opp: jobber som ikke startet, krasjet før slutten, kjørte på feil tidspunkt eller, med en startping, kjørte altfor lenge. Med en exit-kode i pingen fanger den også opp jobber som kjørte og feilet.
Den overser: om noen faktisk når tjenesten din. En jobb på en server kan pinge i vei mens nettstedet på samme server svarer 502 til hver eneste besøkende.
Side om side
OppetidssjekkHeartbeatHvem sender forespørselenOvervåkingstjenestenJobben eller tjenesten dinVarsler nårSvaret er feil, tregt eller uteblirPingen er sen, eller melder om en feilKrever offentlig adresseJaNei, bare utgående HTTPSOppsettEn URL, vert eller portEn tidsplan, en toleransetid og én forespørsel i jobbenSerDet besøkende og API-klienter oppleverOm bakgrunnsarbeid kjørte og hvordan det endteBlind forArbeid som ikke svarer på forespørslerOm noen når tjenesten
Når du bør bruke en oppetidssjekk
Forsiden og sidene som tjener penger: kassen, registrering, innlogging.
Offentlige API-er og webhook-mottakere, med sjekker av statuskoden og JSON-en som kommer tilbake.
Et health check-endepunkt som tester databasen og andre avhengigheter ved hver forespørsel.
Tjenester på andre porter, for eksempel en e-postserver, med en portsjekk.
Tommelfingerregelen: Hvis en person eller et annet system kaller den, sjekk den utenfra slik de gjør.
Når du bør bruke en heartbeat
Cron-jobber: sikkerhetskopier av databaser og filer, nattlige importer og eksporter, rapportgenerering, faktureringskjøringer.
Planlagte oppgaver i andre former: en planlagt oppgave i Windows, en Kubernetes CronJob, en GitHub Actions-arbeidsflyt på tidsplan, en serverløs funksjon på timer.
Skript for fornyelse av sertifikater og datasynkronisering mellom systemer.
Alt bak en brannmur eller NAT som ikke kan nås utenfra, men som kan sende en utgående HTTPS-forespørsel.
Arbeidere som kjører kontinuerlig
En køarbeider eller daemon kjører ikke etter en tidsplan, men den kan likevel sende en heartbeat. Ping fra hovedløkken med noen minutters mellomrom, og gi monitoren et intervall i stedet for et cron-uttrykk. Henger løkken seg, blir prosessen drept eller starter serveren på nytt uten å starte den igjen, stopper pingene og du får beskjed. Ping fra løkken som gjør jobben, ikke fra en egen tråd, ellers vil en arbeider som har satt seg fast fortsette å melde at alt er i orden.
Når du trenger begge
De fleste reelle tjenester har en inngangsdør og et bakrom. Overvåk hver del med verktøyet som ser den:
En nettbutikk: oppetidssjekker på forsiden og kassen, og heartbeats på den nattlige ordreeksporten og databasesikkerhetskopien.
Et SaaS-produkt: en oppetidssjekk på API-ets health-endepunkt, og heartbeats på køarbeideren og jobben som sender fakturaer.
En intern tjeneste: ingen offentlig adresse, så en heartbeat fra selve tjenesten, pluss oppetidssjekker på de offentlige sidene som er avhengige av dataene dens.
Et alternativ er å eksponere jobbstatus via health-endepunktet, for eksempel ved å la sjekken feile når siste sikkerhetskopi er eldre enn 25 timer. Det fungerer, men det kobler nettstedets oppetid til sikkerhetskopiene dine, slik at en forsinket sikkerhetskopi dukker opp som nedetid for nettstedet i rapportene. En egen heartbeat holder de to signalene, og menneskene som får hvert av varslene, fra hverandre.
Få tidsinnstillingene riktig
Intervall for oppetidssjekker: hvert minutt for sider som tjener penger, siden intervallet er det lengste du kan gå uten å vite om et driftsavbrudd. Mindre kritiske sider kan bruke et lengre intervall.
Toleransetid for heartbeats: lengre enn den normale variasjonen i når jobben blir ferdig. En sikkerhetskopi som starter klokken 03:00, tar 5 til 20 minutter og pinger på slutten, trenger minst 20 minutters toleranse; 30 gir rom for en treg natt.
Maksimal kjøretid: med en startping kan du varsle når en kjøring tar mye lengre tid enn vanlig. En jobb som har hengt seg, sender heller aldri ferdigpingen, men dette varselet kommer så snart grensen er passert.
Tidssone: en cron-plan kjører i serverens tidssone, ofte UTC. Gi monitoren den samme, ellers vil sommertid få den til å forvente jobben en time for tidlig eller for sent to ganger i året. Verktøyet for cron-uttrykk viser når en tidsplan faktisk kjører.
Vanlige feil
Pinge bare ved start. En jobb som starter og krasjer, melder seg likevel. Ping på slutten, eller send begge.
Pinge selv når jobben feiler. backup.sh; curl … pinger uansett hva som skjedde. Bruk &&, eller send exit-koden slik at en feil blir meldt som en feil.
En ping som kan få jobben til å henge. Gi curl et tidsavbrudd og nye forsøk (-m 10 –retry 3), slik at et tregt nettverk verken blokkerer jobben eller gjør at pingen går tapt.
Bruke en heartbeat for et offentlig nettsted. En server som pinger ut, beviser bare at den når internett, ikke at besøkende når den.
Overvåke cron-daemonen i stedet for jobben. Daemonen kan kjøre fint mens én jobb feiler hver natt. Hver jobb som betyr noe, får sin egen heartbeat.
Mer om heartbeat-siden i slik overvåker du cron-jobber og slik unngår du cron-oppgaver som ikke kjører.
Begge på ett sted med Uptimecheck
Uptimecheck kjører begge typer monitorer i samme konto, med de samme varslingskanalene og den samme hendelseshistorikken.
Oppetidsovervåking: HTTP(S)-, ping- og portsjekker så ofte som hvert minutt fra Stockholm, London og New York, der hver feil bekreftes fra et annet sted før det går et varsel. HTTP-sjekker kan teste statuskoden, et nøkkelord, JSON-felter og headere.
Overvåking av cron-jobber: et crontab-uttrykk i din tidssone, sommertid inkludert, eller et enkelt intervall; en toleransetid fra 1 minutt til 6 timer; /start-ping med maksimal kjøretid fra 1 minutt til 24 timer; /fail eller exit-koden for å melde hvordan en kjøring endte; og jobbens utdata, sendt med pingen, vist i varselet.
Grenser: Start inkluderer 15 oppetidsmonitorer og 10 cron-jobber, Professional 100 og 50, Business 250 og 150. Se priser.
For å sette opp en, se slik overvåker du en cron-jobb med en heartbeat og eksemplene på ping fra cron-jobber for Laravel, Kubernetes, GitHub Actions, systemd og Windows. For disker og minne på serveren under, legg til serverovervåking.
Hold øye med både inngangsdøren og bakrommet. Prøv Uptimecheck gratis i 14 dager, uten kredittkort.