Project

General

Profile

Actions

Demande #5258

closed

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

Added by Christian P. Momon over 3 years ago. Updated over 1 year ago.

Status:
Fermé
Priority:
Normale
Assignee:
Start date:
03/04/2021
Due date:
% Done:

0%

Estimated time:

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.


Files

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

Updated by Frédéric Couchet over 3 years ago

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

Actions #2

Updated by Lilian C over 3 years ago

  • Assignee set to Lilian C
Actions #3

Updated by Lilian C over 3 years ago

  • File probeapi-cron.log added
Actions #4

Updated by Frédéric Couchet over 3 years ago

  • Assignee deleted (Lilian C)

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.

Actions #5

Updated by Frédéric Couchet over 3 years ago

  • Assignee set to Lilian C
Actions #6

Updated by Lilian C over 3 years ago

  • File deleted (probeapi-cron.log)
Actions #8

Updated by Christian P. Momon over 3 years ago

  • Status changed from Nouveau to 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.
Actions #9

Updated by Lilian C over 3 years ago

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

Actions #10

Updated by Christian P. Momon over 3 years ago

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 ».

:-)

Actions #11

Updated by davidd09 . over 1 year ago

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

Actions #12

Updated by davidd09 . over 1 year ago

  • Assignee changed from Lilian C to davidd09 .
Actions #13

Updated by davidd09 . over 1 year ago

  • Status changed from En cours de traitement to Résolu
Actions #14

Updated by Quentin Gibeaux over 1 year ago

  • Status changed from Résolu to Fermé
Actions #15

Updated by Pierre-Louis Bonicoli over 1 year ago

  • Target version changed from Backlog to Sprint 2023 février
Actions

Also available in: Atom PDF