Indeks dnevnikaDockup / bilješka s terena
Note / self-host-healthchecks

Kako samostalno hostirati Healthchecks u 2026.: cron pingovi, upozorenja i sigurnosne kopije baze podataka

Samostalno hostirajte Healthchecks uz ispravne portove, trajnu pohranu, HTTPS, tajne, sigurnosne kopije i provjere nadogradnji. Saznajte kako riješiti problem kada cron poslovi šalju ping na internu URL adresu.

Samostalno hostiranje Healthchecksa postaje zanimljivo pri prvom ponovnom deploymentu, a ne pri prvom docker run. Ako cron poslovi šalju ping na internu URL adresu ili email workeri ne rade, Docker i dalje može prijaviti potpuno zdrav proces. Deployment u nastavku organiziran je oko ponašanja koje se može promatrati: iz testnog posla pošaljite pingove za početak, uspjeh i neuspjeh, zatim izostavite zakazani ping i primite upozorenje o propuštenom poslu.

Namjena Healthchecksa je jasna: nadzor cron poslova i background taskova po principu „mrtvog čovjeka”. Taj opis pokazuje što mora ostati javno, što treba ostati privatno i što sigurnosna kopija mora moći ponovno uspostaviti.

Napravite sigurnosnu kopiju stanja koje Healthchecks ne može ponovno stvoriti

Standardni Healthchecks container nema obavezan mount za podatke aplikacije. Ipak, skup podataka za oporavak jasno je definiran: baza podataka aplikacije i konfiguracija obavijesti. Nemojte stvarati prazan volume samo da bi deployment izgledao kao stateful; umjesto toga sačuvajte točnu referencu imagea i provjerenu konfiguraciju.

Ponovno izgradite Healthchecks na praznom hostu i pokrenite transakciju prihvaćanja. Oporavak je uspješan kada se vrate provjere, rasporedi, integracije i ping ključevi, a namjerno izostavljeni ping pokrene očekivano upozorenje. Svaka povezana baza podataka ili usluga za suradnju slijedi vlastiti backup plan usklađen sa stanjem aplikacije, dok se zamjenjivi web container ponovno stvara iz koda. Vodič za deployment od Git repozitorija do produkcije opisuje tu ponovljivu granicu.

Čuvajte checksum ili digest poznatog ispravnog imagea i ponovno testirajte nakon nadogradnji. Za stateless servis uspješna ponovna izgradnja predstavlja test vraćanja; za vanjsko stanje Healthchecks runbook mora sadržavati poveznicu na zasebnog vlasnika i postupak oporavka.

Izgradite zamjenjivi Healthchecks container

Upotrijebite naredbu koja jasno prikazuje svaku važnu odluku. Ova osnovna konfiguracija veže Healthchecks na loopback sučelje hosta, dodaje poznate mountove za podatke i postavlja prvu obaveznu postavku. Za produkcijska upozorenja dodajte provjerene postavke veze s Postgresom i ispravnu isporuku emailova; za privatne servise koristite privatna imena.

docker run -d \
  --name healthchecks \
  --restart unless-stopped \
  -p 127.0.0.1:8000:8000 \
  -e SECRET_KEY=replace-with-a-long-random-value \
  -e SITE_ROOT=https://app.example.com \
  -e ALLOWED_HOSTS=app.example.com \
  -e DB=postgres \
  -e DB_HOST=postgres.internal \
  -e DB_NAME=healthchecks \
  -e DB_USER=healthchecks \
  -e DB_PASSWORD=replace-with-a-strong-database-password \
  healthchecks/healthchecks:latest

Zamijenite promjenjive tagove testiranom verzijom ili digestom. Nakon pokretanja pregledajte docker logs --tail 200 healthchecks i potvrdite da proces osluškuje port 8000. Zatim izvršite Healthchecks radnju prihvaćanja; odgovor na root stranici ne može dokazati da cijeli scenarij uspijeva: iz testnog posla pošaljite pingove za početak, uspjeh i neuspjeh, zatim izostavite zakazani ping i primite upozorenje o propuštenom poslu.

O čemu Healthchecks ovisi

Oko Healthchecksa povucite tri granice: ulazni promet prema portu 8000, trajno stanje i prateće zahtjeve. Container je zamjenjiv, ali preostale dvije granice trebaju imati jasno određene vlasnike. Mrežni ugovor za Healthchecks obuhvaća Postgres i ispravnu isporuku emailova za produkcijska upozorenja. Privatne endpointove držite na internom DNS-u, dopustite samo potrebne odlazne pozive i dodijelite Healthchecks scoped service credential.

Dijagram je potpun kada čisti client može iz testnog posla poslati pingove za početak, uspjeh i neuspjeh, zatim izostaviti zakazani ping i primiti upozorenje o propuštenom poslu. Prikupite podatke o vremenu i resursima za broj provjera, grace period, fan-out obavijesti, isporuku emailova i upise u bazu podataka. Ako transakcija ne uspije, prva granica koja se ne ponaša kako je dokumentirano pokazuje treba li istražiti routing, lokalne kapacitete ili prateći servis.

Usmjerite Healthchecks bez pogrešnog prikaza HTTPS-a

Odaberite konačni hostname za Healthchecks prije nego što korisnici spreme callbackove ili postavke klijenta, a zatim postavite SITE_ROOT i ALLOWED_HOSTS na vanjsku HTTPS adresu. Platformska ruta treba terminirati TLS jednom i usmjeravati promet na privatni port 8000.

Transakciju prihvaćanja pokrenite izvana. Ako client uopće ne može dosegnuti Healthchecks, za provjere DNS-a i certifikata upotrijebite kontrolni popis za SSL validaciju. Ako zahtjev dolazi do Healthchecksa, ali cron poslovi šalju ping na internu URL adresu ili email workeri ne rade, prestanite mijenjati proxy redirecte i umjesto toga pregledajte granicu specifičnu za aplikaciju.

Dokazi koje treba prikupiti prije pokretanja Healthchecksa u produkciji

Izradite malu, jednokratnu Healthchecks fixture konfiguraciju i zadržite je za svako izdanje. Fixture treba provjeravati stvarni workflow: iz testnog posla pošaljite pingove za početak, uspjeh i neuspjeh, zatim izostavite zakazani ping i primite upozorenje o propuštenom poslu. Zabilježite digest imagea, vanjski hostname, adresu ovisnosti i očekivani rezultat kako bi kasniji operator mogao ponoviti test bez tumačenja ovog vodiča.

Pokrenite fixture tri puta. Prvi put koristite svježi deployment. Drugi put zamijenite container bez diranja trajnog stanja. Treći put vratite sigurnosnu kopiju u prazno okruženje. Treće pokretanje uspješno je samo kada se vrate provjere, rasporedi, integracije i ping ključevi, a namjerno izostavljeni ping pokrene očekivano upozorenje. Tijekom svakog pokretanja zabilježite latenciju i korištenje resursa za broj provjera, grace period, fan-out obavijesti, isporuku emailova i upise u bazu podataka; to postaje osnova za upozorenja umjesto proizvoljnog postotka CPU-a.

Na kraju namjerno testirajte negativni scenarij: privremeno uskratite testnom identitetu pristup Postgresu i ispravnoj isporuci emailova za produkcijska upozorenja. Potvrdite da Healthchecks vidljivo prijavljuje neuspjeh bez oštećenja stanja, vratite ispravne uvjete i ponovite uspješnu transakciju. Zapis o izdanju koji sadrži ta četiri ishoda snažniji je dokaz od snimki zaslona nadzorne ploče ili jednokratnog curl odgovora.

Vježbe oporavka za Healthchecks

Pratite posao koji Healthchecks obavlja: broj provjera, grace period, fan-out obavijesti, isporuku emailova i upise u bazu podataka. Postavite ograničenja s dovoljnom rezervom za taj posao i izbjegavajte liveness probe koji mu konkurira. Operatorska provjera i dalje treba prema rasporedu pokušati poslati pingove za početak, uspjeh i neuspjeh iz testnog posla, zatim izostaviti zakazani ping i primiti upozorenje o propuštenom poslu.

Kod nadogradnji imajte na umu da se migracije aplikacije i konfiguracija workera moraju nadograditi zajedno kako web-stranica ne bi prikrila neispravnu isporuku upozorenja. Kandidata za izdanje pokrenite na vraćenoj kopiji i ponovite poznati test. Ako cron poslovi šalju ping na internu URL adresu ili email workeri ne rade, upotrijebite runtime logove i stvarni mrežni zahtjev kako biste utvrdili koja se pretpostavka promijenila.

Odaberite granicu povjerenja za Healthchecks

Zatvorite prozor za bootstrap čim postoji prvi pouzdani administrator. Konkretna zamka u Healthchecksu jest korištenje generiranog secreta koji se mijenja pri svakom ponovnom pokretanju; sigurnija granica podrazumijeva stabilan SECRET_KEY, ograničavanje članstva u projektima i tretiranje ping URL-ova kao vjerodajnica.

Generirajte SECRET_KEY jednom, držite ga izvan Gita i sačuvajte ga uz recovery manifest jer njegova promjena može učiniti šifrirano ili potpisano stanje aplikacije nevažećim. Privatna mreža treba prenositi vjerodajnice za ovisnosti, a role unutar Healthchecksa trebaju dopuštati najmanju korisnu radnju. Osjetljiva tijela zahtjeva i odgovore providera nemojte uključivati u uobičajene logove.

Dockup deployment i dalje treba Healthchecks test prihvaćanja

Dockup može upravljati zamjenjivim dijelovima platforme: usmjeriti promet na port 8000, izdati domenu i certifikat, ubrizgati tajne, priključiti trajnu pohranu i povezati Healthchecks s upravljanim ili privatno priključenim servisima. To može učiniti na Dockup infrastrukturi ili na serveru koji priključite.

Posao prihvaćanja za Healthchecks i dalje je jasno definiran. Nakon deploymenta jednim klikom postavite SITE_ROOT i ALLOWED_HOSTS na vanjsku HTTPS adresu, povežite i testirajte Postgres i ispravnu isporuku emailova za produkcijska upozorenja te pokrenite ovaj scenarij: iz testnog posla pošaljite pingove za početak, uspjeh i neuspjeh, zatim izostavite zakazani ping i primite upozorenje o propuštenom poslu. Ta je podjela namjerna: Dockup uklanja repetitivno postavljanje infrastrukture, ali se ne pretvara da se role aplikacije, vjerodajnice providera ili pravila oporavka mogu odabrati sami.

Često postavljana pitanja

Što je Healthchecksu potrebno za produkcijski deployment?

Usmjerite Healthchecks container na portu 8000 kroz jedan HTTPS origin. Mrežni zahtjev za prateće servise čine Postgres i ispravna isporuka emailova za produkcijska upozorenja. Nemojte proglasiti Healthchecks spremnim dok iz testnog posla ne možete poslati pingove za početak, uspjeh i neuspjeh, zatim izostaviti zakazani ping i primiti upozorenje o propuštenom poslu.

Koji podaci Healthchecksa pripadaju sigurnosnoj kopiji?

Standardni Healthchecks image nema obavezan mount za podatke aplikacije. Sačuvajte konfiguraciju deploymenta, a svako povezano stanje sigurnosno kopirajte zasebno; oporavak je uspješan kada se vrate provjere, rasporedi, integracije i ping ključevi, a namjerno izostavljeni ping pokrene očekivano upozorenje.

Zahtijeva li Healthchecks HTTPS iza reverse proxya?

Za javni Healthchecks origin koristite HTTPS, a port 8000 zadržite na internoj ruti. Ispravno primijenite postavku Healthchecksa: postavite SITE_ROOT i ALLOWED_HOSTS na vanjsku HTTPS adresu. Za Healthchecks HTTPS štiti vjerodajnice ili korisnički sadržaj tijekom prijenosa i održava dosljedno ponašanje klijenta ovisno o originu.

Kako treba testirati nadogradnju Healthchecksa?

Vratite trenutačno stanje Healthchecksa u izolirani deployment, primijenite kandidatsku verziju i ponovite njegovu transakciju prihvaćanja. Obratite posebnu pozornost na to da se migracije aplikacije i konfiguracija workera moraju nadograditi zajedno kako web-stranica ne bi prikrila neispravnu isporuku upozorenja. Zadržite prethodni Healthchecks image dok ne razumijete granice migracije podataka i rollbacka.