[Asterisk] Connaître son nombre d’appels simultanés

[Asterisk] Connaître son nombre d’appels simultanés

16 mai 2018 Non Par admin

Il est utile de connaître le nombre d’appels simultanés transitant sur sa plateforme Asterisk.
Nous présentons dans cet article comment connaître son nombre d’appels simultanés en temps réel, ainsi que le nombre exact d’appels simultanés qu’il y a eu sur une plage de temps donnée.

Nombre d’appels simultanés en temps réel

Connaître son nombre d’appels simultanés en temps réel est très simple : Asterisk fournit directement une commande pour ça :

asterisk*CLI> core show channels

Le résultat de la commande ressemble à ceci :

Channel              Location   State   Application(Data)
SIP/1001-00009867  s@user:36  Up      Dial(SIP/1002,15,hHtT)
SIP/1002-00009876  (None)     Up      AppDial((Outgoing Line))
2 active channels
1 active calls
4012 calls processed

Cette commande permet de lister les appels en cours. Elle précise également le nombre d’appels passés depuis le démarrage du service Asterisk. Dans notre exemple, on y apprend qu’il y a un appel en cours (1 active calls).

Dans notre cas, l’information que nous cherchons à récupérer est simplement la valeur de la ligne « active calls ». Pour cela, nous proposons de passer par un script SHELL :

root@asterisk1:~# asterisk -rx 'core show channels' | grep 'active calls' | cut -f 1 -d ' '

Dans le code ci-dessus, si l’on détaille chaque étape (séparée par un pipe), nous avons :

asterisk -rx ‘core show channels’
Exécute la commande « core show channels » et retourne le résultat dans le SHELL

grep ‘active calls’
Ne récupère que la ligne comportant la mention « active calls » (c’est uniquement elle qui nous intéresse).

cut -f 1 -d ‘ ‘
Permet de découper l’affichage en prenant les espaces comme marque de délimitation (option -d ‘ ‘) et de n’afficher que le premier segment (option -f 1).

Pour reprendre notre exemple, le résultat de la commande sera alors :

root@asterisk1:~# asterisk -rx 'core show channels' | grep 'active calls' | cut -f 1 -d ' '
1

Nombre d’appels simultanés sur une période donnée

Pour obtenir le nombre d’appels simultanés sur une période de temps donnée, nous proposons d’utiliser la ligne de commande fournie par Jean du forum asterifk-france.org.

La commande est la suivante :

awk 'BEGIN{FS=",\""} /ANSWERED/{split($11, a, "\""); split($12, b, "\"");printf ("%s,1\n%s,-1\n", a[1],b[1]); }' /var/log/asterisk/cdr-csv/Master.csv | sort | awk -F , '{cpt=cpt+$2; printf ("%s %03d\n", $1, cpt);}'

Cette commande filtre le contenu du fichier Master.csv sur chaque changement du nombre d’appels simultanés. Le résultat est affiché dans la console. Il est de la forme suivante :

2015-06-11 08:38:19 004
2015-06-11 08:38:30 005
2015-06-11 08:38:55 004
2015-06-11 08:39:10 003
2015-06-11 08:39:13 004
2015-06-11 08:39:42 003
2015-06-11 08:41:42 002
2015-06-11 08:42:35 001
2015-06-11 08:42:46 002
2015-06-11 08:43:50 001

Le premier champ indique la date, le second l’horaire auquel le changement du nombre d’appels simultanés a eu lieu et le troisième le nombre d’appels simultanés.

Limiter le résultat à un contexte

Si l’on souhaite, nous pouvons également limiter le résultat à un contexte en particulier. Exemple :

awk 'BEGIN{FS=",\""} /monContexte/*/ANSWERED/{split($11, a, "\""); split($12, b, "\"");printf ("%s,1\n%s,-1\n", a[1],b[1]); }' /var/log/asterisk/cdr-csv/Master.csv | sort | awk -F , '{cpt=cpt+$2; printf ("%s;%03d\n", $1, cpt);}'

Le décompte ne se fera alors que sur le nombre d’appels simultanés du contexte « monContexte« .

Écrire le résultat dans un fichier pour l’exploiter

Plutôt que d’afficher les résultats à l’écran, nous les écrivons dans un fichier texte :

awk 'BEGIN{FS=",\""} /ANSWERED/{split($11, a, "\""); split($12, b, "\"");printf ("%s,1\n%s,-1\n", a[1],b[1]); }' /var/log/asterisk/cdr-csv/Master.csv | sort | awk -F , '{cpt=cpt+$2; printf ("%s %03d\n", $1, cpt);}' > monFichier.csv

Ce fichier peut ensuite être importé dans un tableur type LibreOffice ou Excel, en précisant que la séparation des champs se fait sur les espaces :

Dans LibreOffice :

Import CSV LibreOffice

Dans Excel :

Import CSV Excel

On peut ensuite faire des tris ou appliquer des filtres sur ces données !

Source: https://www.provya.net/index.php?d=2015/06/17/09/38/39-asterisk-connaitre-son-nombre-dappels-simultanes