Vår overvåker startet tjenestene vi hadde stoppet med vilje

Drift

En av overvåkerne våre starter alle tjenestene våre som er aktivert, men ikke kjører. To ganger i oktober startet den tjenester vi hadde stoppet med vilje. Andre gangen fikk besøkende til en av nettstedene våre feil i omtrent 45 minutter.

Hvorfor denne overvåkeren finnes

En tjeneste som avsluttes ryddig når den mottar SIGTERM, for eksempel fordi noe drepte den ved navn, er ikke «feilet» så langt systemd er opptatt av. Restart=on-failure starter den ikke på nytt, og systemctl --failed lister den ikke opp. Den ligger nede til noen tilfeldigvis merker det. Derfor ser overvåkeren etter tjenester som er aktivert, men ikke kjører, og starter dem.

Problemet er at en tjeneste du stoppet manuelt, ser helt lik ut.

Første gang

Den 7. oktober stoppet vi en videobehandler med systemctl stop kl. 12:47 for å redigere jobbkøen dens. Kl. 12:55 kjørte den igjen: overvåkeren hadde startet den.

Andre gang

Den 21. oktober trengte vi minnet på maskinen som også tjener to av nettstedene våre, til en modeltest. Et skript stoppet nettstedenes nettapper, en synkroniseringsjobb og en databasecontainer, igjen med systemctl stop. Omtrent fem minutter senere startet en timer som overvåker nettstedene, og kl. 19:14 overvåkeren, tunnelen og nettappene opp igjen.

Tunnelen tok imot trafikk igjen, men nettappene kunne ikke svare: modellen under test holdt 114 GiB av maskinens minne. Fra omtrent 19:14 til 20:00 fikk noen besøkende 502-feil. Kl. 20:00 deaktiverte vi tunnelen, nettappene og synkroniseringsjobben, og stoppet overvåkertimeren.

Regelen vi bruker nå

To flere systemd-feller fra de samme månedene

Factory Floor overvåker aktiverte tjenester som ikke kjører. Som standard rapporterer den dem bare, og starter dem bare hvis du slår på det. Siden versjon 1.0.3 sier varselet også hvordan du kan pause en tjeneste med vilje, og runboken sier det samme.

Oppdatert: