Náš watchdog reštartoval služby, ktoré sme zámerne zastavili

Prevádzka

Jeden z našich watchdogov spustí ktorúkoľvek z našich služieb, ktorá je povolená, ale nebeží. Dvakrát v októbri spustil služby, ktoré sme zámerne zastavili. Druhýkrát návštevníci jednej z našich stránok dostávali chyby približne 45 minút.

Prečo tento watchdog existuje

Služba, ktorá korektne skončí po prijatí signálu SIGTERM, napríklad preto, že ju niečo zabilo podľa názvu, nie je z pohľadu systemd „zlyhaná“. Restart=on-failure ju nespustí znova a systemctl --failed ju neuvádza. Zostáva vypnutá, kým si toho niekto náhodou nevšimne. Watchdog preto hľadá služby, ktoré sú povolené, ale nebežia, a spúšťa ich.

Problém je, že služba, ktorú ste zastavili ručne, vyzerá úplne rovnako.

Prvýkrát

7. októbra sme zastavili video worker príkazom systemctl stop o 12:47, aby sme upravili jeho frontu úloh. O 12:55 už znova bežal: watchdog ho spustil.

Druhýkrát

21. októbra sme potrebovali pamäť stroja, ktorý obsluhuje aj dve z našich stránok, na test modelu. Skript zastavil webové aplikácie stránok, synchronizačnú úlohu a kontajner databázy, opäť príkazom systemctl stop. Približne o päť minút neskôr časovač, ktorý sleduje stránky, a o 19:14 watchdog, znovu spustili tunel a webové aplikácie.

Tunel znova prijímal prevádzku, ale webové aplikácie nedokázali odpovedať: testovaný model zaberál 114 GiB pamäte stroja. Od približne 19:14 do 20:00 dostávali niektorí návštevníci chyby 502. O 20:00 sme zakázali tunel, webové aplikácie a synchronizačnú úlohu a zastavili časovač.

Pravidlo, ktoré teraz používame

Ďalšie dve nástrahy systemd z rovnakých mesiacov

Factory Floor sleduje povolené služby, ktoré nebežia. Predvolene ich iba hlási a spúšťa ich len vtedy, ak to zapnete. Od verzie 1.0.3 jeho upozornenie tiež uvádza, ako službu zámerne pozastaviť, a jeho runbook hovorí to isté.

Aktualizované: