The Higher Education and Research forge

Home My Page Projects Code Snippets Project Openings QoQ-CoT
Summary Activity Forums Tracker Tasks Docs News SCM Files Dokuwiki Listes Sympa

Forum: le_bar

Monitor Forum | Start New Thread Start New Thread
[IMPORTANT] Bug sur toutes les versions jusqu'à (au moins) la V2.0 Bernadette [ Reply ]
By: Gérard Milhaud on 2015-01-16 16:26
[forum:16275]

bonne_annee.php (31) downloads

Bonjour,

Mauvaise nouvelle : nous nous sommes aperçus d'un problème important dans QoQ-CoT lors du changement d'année :-(
Bonne nouvelle : le problème est assez facilement réparable :-)

Pour faire court : le client NxLog est configuré depuis toujours dans QoQ-CoT avec le format de log syslog de la RFC 3164, qui a la particularité de... ne pas inclure l'année.

Pas de souci : rsyslog, quand il récupère l'info, ajoute l'année courante.

Oui. Sauf que ceci marche très bien quand les connexions remontent dans l'instant de NxLog à rsyslog, ce qui est le cas à 99%.
Mais pour le 1% qui reste, pour des raisons diverses (serveur rsyslog injoignable car réseau salle HS...), NxLog n'envoie pas tout de suite la connexion. Encore une fois, ça n'est pas un problème la plupart du temps, car dès que le serveur est à nouveau joignable, NxLog renvoie et la vraie date de connexion (sans l'année...) est correcte.

Reste donc le cas à problème : NxLog n' pas pu envoyer ses connexions datant de l'année X (par exemple juste avant les vacances de Noël), puis les PC sont par exemple éteints pendant les vacances, puis au réveil début janvier (ou plus tard...), NxLog réussit enfin son envoi. Alors rsyslog concatène l'année courante, soit... X+1. Si bien que, par exemple, les connexions de décembre 2014 sont datées de décembre 2015, 1 an dans le futur... Super outil d'informatique décisionnelle me direz-vous, mais pas terrible pour les stats, ni le repérage de terroriste...

La bonne solution, non encore en place, consiste à modifier la conf. de NxLog de façon à ce qu'il utilise le format syslog de la RFC 5424, qui inclut l'année. Malheureusement, l'ajout de l'année n'est pas du tout la seule modification et le format des messages change suffisamment pour qu'il implique, pour une mise en oeuvre dans QoQ-CoT, des modifications lourdes des configurations du client NxLog (filtres) et du serveur rsyslog (filtres rsyslog.conf), et aussi du code PHP (filtres)... Ça sera donc pour une prochaine version...

En attendant, Fred (Bloise) a développé et intégré à l'archive un fichier (src/bonne_annee.php) qui, lorsqu'il est exécuté, va corriger la table Connexions en reculant d'un an les dates des connexions concernées(*). C'est donc ce que nous vous conseillons de faire. Notons qu'il faudra le refaire de temps en temps car le "réveil" des machines peut arriver n'importe quand, même si dans un contexte académique, elles devraient toutes avoir été rallumées et en lien avec le serveur dès le début janvier. Dans tous les cas, la première exécution de début janvier devrait régler la grande majorité des cas.

Procédure (ne concerne que les installations ayant mis en œuvre NxLog sur les clients ; eventsys n'est pas concerné car il est synchrone : soit il peut envoyer tout de suite à rsyslog, soit il n'envoie jamais. Cependant tout le monde peut envoyer la commande, elle ne modifiera rien s'il n'y a rien à modifier :
- 1. Backup de votre table Connexions.
- 2. Arrêt du cron peuplade.php.
- 3. Récupération du fichier bonne_annee.php attaché à ce message (possible aussi de le récupérer dans le dépôt git, il est désomais versionné dans src/).
- 4. Poser le fichier dans votre installation, par exemple au même niveau que peuplade.php.
- 5. Exécuter le fichier au travers du navigateur : la 1ère exécution peut être longue si vous avez beaucoup de connexions à cheval sur les 2 années. Sera affiché à l'écran le nombre de lignes modifiées.
- 6. (Facultatif) Re-exécuter le fichier au travers du navigateur pour vérifier que cette fois, l'affichage indique qu'aucune ligne n'a été modifiée.
- 7. Remetre en service le cron peuplade.php.

À refaire en fin de chaque mois pour vraiment bétonner, mais la probabilité de connexions erronées diminue fortement au fur et à mesure qu'on avance dans l'année civile courante.

Voilà. Désolé. Et bonne année :-)

À bientôt,

G, pour la QoQ-CoT Team.


(*) En fait, c'est assez compliqué car il y a plusieurs cas :

  • - le début de connexion correctement transmis l'année X mais la fin en X+1,
  • - le début et la fin en X+1,
  • - en ajoutant à tout ça la fait que certaines connexions peuvent durer plusieurs jours et ont donc été coupées en autant de connexions d'un jour...

Mais le code de Fred règle tous les cas, donc pour vous, c'est du "clés en mains", comme il se doit :-)