13 décembre 2008

Surveillance de la santé des machines

Soit un parc de machines et services hétérogène : machines locales, distantes, serveurs web, Subversion, divers sites, divers hébergeurs, divers noms de domaines et registrars, bref, tout et n'importe quoi.

Comment assurer une surveillance de tout ceci ?

J'avais bien quelques outils de surveillance web, mais ils n'analysent pas forcément tous les critères, ni ne versionnent les règles de surveillance.

J'ai bien quelques tests JUnit, mais ils dépendent d'un environnement d'exécution (Continuum) assez lourd, qui lui-même peut être soumis à plantage, en particulier parce qu'un serveur J2EE demande beaucoup de ressources.

Je me décide donc à rationaliser tout cela :
  • une seule technologie d'écriture des tests : Java, sous la forme de tests JUnit.
  • une version minimale du service de surveillance, qui assure le découplage des traitements et de l'affichage : 
    • un daemon Java le plus léger possible pour l'exécution des tests, 
    • une application PHP pour afficher les résultats de façon simplifiée,
    • une communication entre Java et PHP qui passe par une base de données.
  • et une réplication de ce système sur deux machines différentes, au cas où l'une d'entre elles tomberait en panne.
Le système avec Continuum est conservé sur une (grosse) machine, en lui faisant en prime exécuter les mêmes tests JUnit que la version daemon Java + PHP.



Reste à faire en sorte qu'un e-mail soit envoyé automatiquement quand un service est détecté comme tombé. Possibilité de configuration en Java : déclarer la gravité du test dans une annotation de même niveau que @Test.
Et évidemment tester par le système lui-même les fonctionnalités d'envoi et de réception d'e-mail.

Quelques états de santé à agréger :
  • bonne santé de toutes les applications web déployées,
  • Twitter,
  • envoi et réception d'e-mails,
  • âge du ou des derniers backups inférieur à 24 h,
  • espaces disques libres supérieurs à 50 %...
Des idées ?

Merci d'avance.

Aucun commentaire: