Code as Craft tiene TONELADAS de excelentes publicaciones sobre esto. Después de haber desarrollado varios de estos sistemas, puedo decirle que la descripción general de alto nivel se parece a esto, independientemente de su sistema:
- La aplicación es responsable de proporcionar puntos finales o escribir registros que identifiquen el estado de la aplicación
- La aplicación sabe si puede conectarse a la base de datos y a otros servicios externos.
- La aplicación sabe si se está violando la lógica de negocios
- Si su aplicación está escribiendo registros, un agente es responsable de quitar estos registros del sistema a un repositorio ubicado centralmente, por ejemplo, SumoLogic, Logstash, Splunk, etc.
- El software de monitoreo hace sonar los puntos finales de la aplicación, escanea registros, verifica la integridad a nivel del sistema:
- Espacio del disco
- Uso de memoria / intercambio
- uso de CPU
- Disponibilidad del servicio básico (como en el caso de un equilibrador de carga)
- Si el software de monitoreo tiene algún número de fallas (promedio o suma, por lo general) durante un período de tiempo, alerta a los consumidores con un mensaje detallado para informarles exactamente qué está sucediendo mal y cómo resolver este problema usando run-books
- Run-books puede o no resolver el problema, pero si vas a despertar a alguien a las 3 a.m. de un sueño profundo, es mejor que tengas algún tipo de pauta clara y paso a paso a seguir