Projet

Général

Profil

Actions

Demande #5258

fermé

Ajouter l'analyse de log colibri au rapport d'activité mensuel visio.chapril.org

Ajouté par Christian P. Momon il y a presque 4 ans. Mis à jour il y a presque 2 ans.

Statut:
Fermé
Priorité:
Normale
Assigné à:
Début:
04/03/2021
Echéance:
% réalisé:

0%

Temps estimé:

Description

Actuellement, un script génère toutes les 5 minutes une ligne de log dans un fichier sur l'état des visioconférences :
Une ligne consiste en une liste de compteurs. À chaque redémarrage du service, les compteurs sont mis à zéro.

Source du script : https://forge.april.org/Chapril/visio.chapril.org-tools/src/branch/master/rapport_activite/probe_api.sh

Extrait du fichier de log obtenu :

=(^-^)=root@allo:/var/log/visio.chapril.org# tail probeapi-cron.log
2021-02-10T12:45:01 total_conferences_created=36 total_failed_conferences=0 total_conferences_completed=36 largest_conference=0 total_conference_seconds=80332 total_bytes_received=6327942131 total_bytes_sent=3956576980 total_participants=124 conferences=0 participants=0 videochannels=0 endpoints_sending_audio=0
2021-02-10T12:50:01 total_conferences_created=36 total_failed_conferences=0 total_conferences_completed=36 largest_conference=0 total_conference_seconds=80332 total_bytes_received=6327942131 total_bytes_sent=3956576980 total_participants=124 conferences=0 participants=0 videochannels=0 endpoints_sending_audio=0
2021-02-10T12:55:01 total_conferences_created=36 total_failed_conferences=0 total_conferences_completed=36 largest_conference=0 total_conference_seconds=80332 total_bytes_received=6327942131 total_bytes_sent=3956576980 total_participants=124 conferences=0 participants=0 videochannels=0 endpoints_sending_audio=0
2021-02-10T13:00:01 total_conferences_created=37 total_failed_conferences=0 total_conferences_completed=37 largest_conference=0 total_conference_seconds=80409 total_bytes_received=6327942159 total_bytes_sent=3956576980 total_participants=126 conferences=0 participants=0 videochannels=0 endpoints_sending_audio=0
2021-02-10T13:05:01 total_conferences_created=37 total_failed_conferences=0 total_conferences_completed=37 largest_conference=0 total_conference_seconds=80409 total_bytes_received=6327942159 total_bytes_sent=3956576980 total_participants=126 conferences=0 participants=0 videochannels=0 endpoints_sending_audio=0
2021-02-10T13:20:05 total_conferences_created=0 total_failed_conferences=0 total_conferences_completed=0 largest_conference=0 total_conference_seconds=0 total_bytes_received=0 total_bytes_sent=0 total_participants=0 conferences=0 participants=0 videochannels=0 endpoints_sending_audio=0
2021-02-10T13:25:01 total_conferences_created=0 total_failed_conferences=0 total_conferences_completed=0 largest_conference=0 total_conference_seconds=0 total_bytes_received=0 total_bytes_sent=0 total_participants=0 conferences=0 participants=0 videochannels=0 endpoints_sending_audio=0

Pour être intégrées dans le rapport d'activité général, ces logs doivent être consolidées.
La consolidation consiste à sommer toutes les valeurs d'un mois donné en paramètre.
Mais il convient d'éliminer les lignes redondantes.

Demande : écrire un script prend en paramètre une année et un mois, et en retour affiche les compteurs consolidés, un compteur par ligne.


Fichiers

probeapi-cron.log.gz (192 ko) probeapi-cron.log.gz Exemple de fichier produit par le script probe_api.sh Lilian C, 07/03/2021 11:49

Mis à jour par Frédéric Couchet il y a presque 4 ans

Colibri est un des modules de Jitsi, pour les stats.

Mis à jour par Lilian C il y a presque 4 ans

  • Assigné à mis à Lilian C

Mis à jour par Lilian C il y a presque 4 ans

  • Fichier probeapi-cron.log ajouté

Mis à jour par Frédéric Couchet il y a presque 4 ans

  • Assigné à Lilian C supprimé

Pour être sûr, si par exemple le script s'intitule logs-colibri pour avoir les logs de décembre 2020 on ferait :

logs-colibri -a 2020 -m 12

La sortie serait un truc du genre :

total_conferences_created=120
total_failed_conferences=2
total_conferences_completed=118
total_conference_seconds=99426123
total_bytes_received=122812224954646
total_bytes_sent=1457181117747643743
total_participants=410

On n'affiche pas largest_conference, conferences, participants, videochannels, endpoints_sending_audio.

Mis à jour par Frédéric Couchet il y a presque 4 ans

  • Assigné à mis à Lilian C

Mis à jour par Lilian C il y a presque 4 ans

  • Fichier probeapi-cron.log supprimé

Mis à jour par Lilian C il y a presque 4 ans

Mis à jour par Christian P. Momon il y a presque 4 ans

  • Statut changé de Nouveau à En cours de traitement

Je confirme l'exemple et le fait que certains compteurs sont inutiles et donc à ne pas afficher en sortie. Bien vu.

Suggestions de petites sophistications :
  • pour le compteur total_conference_seconds, ajouter en plus entre parenthèse la traduction en heures ;
  • pour les compteurs bytes, ajouter entre parenthèse la traduction en Mo.

Mis à jour par Lilian C il y a presque 4 ans

J'ai commencé à travailler dessus, sauf qu'à un moment mon script butte sur une

json read error
dans le fichier généré par le script probe_api.sh à la ligne correspondant à
2021-02-18T21:30:15

Mis à jour par Christian P. Momon il y a presque 4 ans

Oui, il peut arriver que le script probe_api.sh tombe en erreur et génère des messages imprévus :

2021-02-18T21:30:15json read error: line 2 column 0: '[' or '{' expected near end of file
 total_conferences_created=json read error: line 2 column 0: '[' or '{' expected near end of file
 total_failed_conferences=json read error: line 2 column 0: '[' or '{' expected near end of file
 total_conferences_completed=json read error: line 2 column 0: '[' or '{' expected near end of file
 largest_conference=json read error: line 2 column 0: '[' or '{' expected near end of file
 total_conference_seconds=json read error: line 2 column 0: '[' or '{' expected near end of file
 total_bytes_received=json read error: line 2 column 0: '[' or '{' expected near end of file
 total_bytes_sent=json read error: line 2 column 0: '[' or '{' expected near end of file
 total_participants=json read error: line 2 column 0: '[' or '{' expected near end of file
 conferences=json read error: line 2 column 0: '[' or '{' expected near end of file
 participants=json read error: line 2 column 0: '[' or '{' expected near end of file
 videochannels=json read error: line 2 column 0: '[' or '{' expected near end of file
 endpoints_sending_audio=

Comme cela n'est pas censé arriver ou alors exceptionnellement, on peut partir du principe qu'il est de la responsabilité d'un opérateur humain de nettoyer le fichier de log manuellement afin d'avoir toujours un fichier de log nominal et exploitable.

Donc considérer que le script d'analyse doit s'arrêter avec un message d'erreur s'il détecte l'un des cas suivant :
  • une ligne commençant par autre chose qu'un chiffre ;
  • une ligne contenant la chaîne de caractères « json read error ».

:-)

Mis à jour par davidd09 . il y a environ 2 ans

J'ai repris l'idée de ce script en repartant "de zéro".
J'ai écrit deux appli en python (plus facile pour traiter le JSON)

/srv/visio.chapril.org/tools/statistiques/getStats.py

qui récupère toutes les 5 minutes la totalité des données fournies par l'API REST de jitsi et le place dans une base sqlite dans

/srv/visio.chapril.org/statistiques/stats_sqlite.db

Une appli de consolidation

/srv/visio.chapril.org/tools/statistiques/parseStats.py <mois> [annee]

qui renvoie en retour une liste de données consolidées sur le mois passé en paramètre (année en option)

Ce qui donne :

=(^-^)=root@allo:/srv/visio.chapril.org/tools# /srv/visio.chapril.org/tools/statistiques/parseStats.py 12
total participants=159
conferences terminees total=43
conferences creees total=43
canaux video=1140
total octets reçus=27.1 Go
canaux audio=754
total octets envoyés=20.7 Go
conferences totalement echouees=0
duree totale conferences=29.9 h
moyenne de conferences par jour=2
Moyenne participants par conference=4.1
duree moyenne des conferences=42.2 min

Mis à jour par davidd09 . il y a presque 2 ans

  • Assigné à changé de Lilian C à davidd09 .

Mis à jour par davidd09 . il y a presque 2 ans

  • Statut changé de En cours de traitement à Résolu

Mis à jour par Quentin Gibeaux il y a presque 2 ans

  • Statut changé de Résolu à Fermé

Mis à jour par Pierre-Louis Bonicoli il y a presque 2 ans

  • Version cible changé de Backlog à Sprint 2023 février
Actions

Formats disponibles : Atom PDF