Et oppetidstjek trækker: en overvågningstjeneste sender med faste mellemrum en forespørgsel til dit website eller API og giver dig besked, når svaret er forkert eller udebliver. En heartbeat skubber: dit job eller din tjeneste sender en forespørgsel til overvågningstjenesten, hver gang den kører, og alarmen går, når forespørgslen ikke kommer. Brug oppetidstjek til alt, hvad folk tilgår over netværket, og heartbeats til arbejde, der kører efter en tidsplan eller ikke har en offentlig adresse. De fleste opsætninger har brug for begge dele.
De to er lette at forveksle, fordi begge ender med “giv besked, når noget er galt”. Men de ser forskellige fejl, og bruger du den ene, hvor du har brug for den anden, får du en blind vinkel, som først viser sig, når noget går i stykker.
Sådan fungerer et oppetidstjek
Overvågningstjenesten er klienten. Hvert minut, eller med det interval du vælger, henter den en URL, pinger en host eller åbner en port og vurderer svaret: statuskoden, svartiden, et nøgleord på siden, certifikatet. Hvis tjekket fejler, og et ekstra tjek bekræfter det, får du en alarm. Det er en form for syntetisk overvågning: en robot gør det, en besøgende ville gøre.
Det fanger: et website eller API, der er nede, langsomt, svarer med fejl, viser forkert indhold eller er brudt af et udløbet certifikat eller en DNS-ændring. Alt det, en besøgende ville støde på.
Det overser: alt, der ikke svarer på forespørgsler. En backup, der ikke kørte, en kø-worker, der hang, en import, der fejlede kl. 02:00. Websitet er stadig oppe, så alle tjek består.
Sådan fungerer en heartbeat
Dit job er klienten. Du fortæller overvågningstjenesten, hvornår jobbet skal køre, og jobbet kalder en unik ping-URL, når det er færdigt. Hvis pinget er mere forsinket end den henstandsperiode, du vælger, får du en alarm. Idéen er en dødmandsknap: stilhed er signalet. Derfor kaldes heartbeat-overvågning også push-overvågning eller dead man’s switch-overvågning.
0 3 * * * /usr/local/bin/backup.sh && curl -fsS -m 10 –retry 3 -o /dev/null https://app.uptimecheck.com/api/hb/your-token
Det fanger: job, der ikke startede, gik ned før slutningen, kørte efter den forkerte tidsplan eller, med et start-ping, kørte alt for længe. Med en exit-kode i pinget fanger det også job, der kørte og fejlede.
Det overser: om nogen kan nå din tjeneste. Et job på en server kan pinge uden problemer, mens websitet på samme server svarer 502 til hver eneste besøgende.
Side om side
OppetidstjekHeartbeatHvem sender forespørgslenOvervågningstjenestenDit job eller din tjenesteAlarm, nårSvaret er forkert, langsomt eller udebliverPinget er forsinket eller melder en fejlKræver en offentlig adresseJaNej, kun udgående HTTPSOpsætningEn URL, host eller portEn tidsplan, en henstandsperiode og én forespørgsel i jobbetSerDet, besøgende og API-klienter opleverOm baggrundsarbejde kørte, og hvordan det endteBlind forArbejde, der ikke svarer på forespørgslerOm nogen kan nå tjenesten
Hvornår du skal bruge et oppetidstjek
Din forside og de sider, der tjener penge: checkout, tilmelding, login.
Offentlige API’er og webhook-modtagere, med tjek af statuskoden og den JSON, der kommer tilbage.
Et health check-endpoint, der tester databasen og andre afhængigheder ved hver forespørgsel.
Tjenester på andre porte, for eksempel en mailserver, med et porttjek.
Tommelfingerreglen: hvis en person eller et andet system kalder det, så tjek det udefra på samme måde, som de gør.
Hvornår du skal bruge en heartbeat
Cron-jobs: backup af databaser og filer, natlige importer og eksporter, rapportgenerering, faktureringskørsler.
Planlagte opgaver i andre former: en planlagt opgave i Windows, et Kubernetes CronJob, et GitHub Actions-workflow efter en tidsplan, en serverless-funktion på en timer.
Scripts til fornyelse af certifikater og datasynkronisering mellem systemer.
Alt bag en firewall eller NAT, som ikke kan nås udefra, men kan sende en udgående HTTPS-forespørgsel.
Workers, der kører hele tiden
En kø-worker eller daemon kører ikke efter en tidsplan, men den kan stadig sende en heartbeat. Ping fra hovedløkken med få minutters mellemrum, og giv monitoren et interval i stedet for et cron-udtryk. Hvis løkken hænger, processen bliver dræbt, eller serveren genstarter uden at starte den igen, stopper pingene, og du får besked. Ping fra den løkke, der udfører arbejdet, ikke fra en separat tråd, ellers vil en fastlåst worker blive ved med at melde, at alt er fint.
Når du har brug for begge
De fleste rigtige tjenester har en hoveddør og en baggård. Overvåg hver del med det værktøj, der kan se den:
En webshop: oppetidstjek på forsiden og checkout, og heartbeats på den natlige ordreeksport og databasebackuppen.
Et SaaS-produkt: et oppetidstjek på API’ets health-endpoint, og heartbeats på kø-workeren og det job, der sender fakturaer.
En intern tjeneste: ingen offentlig adresse, så en heartbeat fra selve tjenesten, plus oppetidstjek på de offentlige sider, der afhænger af dens data.
Et alternativ er at vise jobstatus via health-endpointet, for eksempel ved at lade tjekket fejle, når den seneste backup er ældre end 25 timer. Det virker, men det kobler dit websites oppetid sammen med dine backups, så en forsinket backup dukker op som nedetid for websitet i dine rapporter. En separat heartbeat holder de to signaler – og de personer, der får hver alarm – adskilt.
Få timingen på plads
Interval for oppetidstjek: hvert minut for sider, der tjener penge, fordi intervallet er den længste tid, du kan være uvidende om et nedbrud. Mindre kritiske sider kan bruge et længere interval.
Henstandsperiode for heartbeat: længere end den normale variation i, hvornår jobbet bliver færdigt. En backup, der starter kl. 03:00, tager 5 til 20 minutter og pinger til sidst, skal have mindst 20 minutters henstand; 30 giver plads til en langsom nat.
Maksimal køretid: med et start-ping får du en alarm, når en kørsel tager langt længere tid end normalt. Et job, der hænger, sender heller aldrig sit slut-ping, men denne alarm kommer, så snart grænsen er passeret.
Tidszone: en cron-tidsplan kører i serverens tidszone, ofte UTC. Giv monitoren den samme, ellers vil sommertid få den til at forvente jobbet en time for tidligt eller for sent to gange om året. Værktøjet til cron-udtryk viser, hvornår en tidsplan rent faktisk kører.
Typiske fejl
Kun at pinge ved start. Et job, der starter og går ned, melder sig stadig. Ping til sidst, eller send begge.
At pinge, selv når jobbet fejler. backup.sh; curl … pinger, uanset hvad der skete. Brug &&, eller send exit-koden, så en fejl bliver meldt som en fejl.
Et ping, der kan få jobbet til at hænge. Giv curl en timeout og genforsøg (-m 10 –retry 3), så et langsomt netværk hverken blokerer jobbet eller taber pinget.
At bruge en heartbeat til et offentligt website. En server, der pinger ud, beviser kun, at den kan nå internettet, ikke at besøgende kan nå den.
At overvåge cron-daemonen i stedet for jobbet. Daemonen kan køre fint, mens ét job fejler hver nat. Hvert job, der betyder noget, skal have sin egen heartbeat.
Læs mere om heartbeat-siden i sådan overvåger du cron-jobs og sådan undgår du oversprungne cron-opgaver.
Begge dele samlet i Uptimecheck
Uptimecheck kører begge typer monitorer i samme konto, med de samme alarmkanaler og den samme hændelseshistorik.
Oppetidsovervågning: HTTP(S)-, ping- og porttjek så ofte som hvert minut fra Stockholm, London og New York, hvor hver fejl bekræftes fra en anden lokation, før der sendes en alarm. HTTP-tjek kan teste statuskoden, et nøgleord, JSON-felter og headers.
Overvågning af cron-jobs: et crontab-udtryk i din tidszone, sommertid inkluderet, eller et simpelt interval; en henstandsperiode fra 1 minut til 6 timer; /start-ping med en maksimal køretid fra 1 minut til 24 timer; /fail eller exit-koden til at melde, hvordan en kørsel endte; og jobbets output, sendt med pinget, vist i alarmen.
Grænser: Start indeholder 15 oppetidsmonitorer og 10 cron-jobs, Professional 100 og 50, Business 250 og 150. Se priser.
Se sådan overvåger du et cron-job med en heartbeat og eksempler på ping fra cron-jobs til Laravel, Kubernetes, GitHub Actions, systemd og Windows for at komme i gang. Til diske og hukommelse på den underliggende server kan du tilføje serverovervågning.
Hold øje med både hoveddøren og baggården. Prøv Uptimecheck gratis i 14 dage, uden kreditkort.