Questa mattina un aggiornamento su un’installazione a 2 container è andato storto. L’avvio di un nuovo container ha migrato il database in uno stato danneggiato (forse non sarebbe successo se avessi usato SKIP_POST_DEPLOYMENT_MIGRATIONS=1, ma questa è un’altra questione), cosicché il container in esecuzione ha mostrato il messaggio “oops, questo sito è rotto”.
Questo aspetto è previsto, ma il mio monitor controlla /srv/status e restituisce tranquillamente un OK anche quando Rails è piuttosto compromesso.
È un bug? Vorrei davvero che i miei monitor sapessero se c’è un problema; dovrei invece controllare qualcos’altro, come /about.json (per i siti che non richiedono il login)?
Il endpoint /srv/status controlla solo il processo locale, non le dipendenze. “Lo stack HTTP è bloccato?”, più “sono in fase di dismissione?”. Nella terminologia di Kubernetes, questo è il livenessProbe, non il readinessProbe.
Se vogliamo introdurre un readinessProbe, dovrebbe risiedere su un URL diverso.
Probabilmente Discourse.system_user.id invece di 1.