Provya

Expertise pfSense

Sommaire des articles  -  Liens & Actualités  -  Firewall pour pfSense

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

icon 17/06/2018

-50 % sur les firewall encore en stock !

Promo de printemps

🚨 𝗔𝗟𝗘𝗥𝗧𝗘 𝗗𝗘́𝗦𝗧𝗢𝗖𝗞𝗔𝗚𝗘 𝗣𝗥𝗢𝗩𝗬𝗔 : C'est le moment de faire des affaires ! 🚨
D'ici quelques jours, nous serons en rupture de stock TOTALE sur tous nos modèles de pare-feux. 🛑

🔥 -𝟱𝟬% 𝗦𝗨𝗥 𝗧𝗢𝗨𝗧 𝗟𝗘 𝗦𝗧𝗢𝗖𝗞 𝗥𝗘𝗦𝗧𝗔𝗡𝗧 🔥
store.provya.fr

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 !



Pour aller plus loin


[Asterisk] Les commandes utiles pour Asterisk
[Asterisk] Mettre à jour son serveur Asterisk
Tous nos articles classés par thème
Voir un article au hasard


Vous avez aimé cet article ? Vous cherchez un support professionnel ? Alors contactez-nous.


-50 % sur les firewall encore en stock !

Promo de printemps

🚨 𝗔𝗟𝗘𝗥𝗧𝗘 𝗗𝗘́𝗦𝗧𝗢𝗖𝗞𝗔𝗚𝗘 𝗣𝗥𝗢𝗩𝗬𝗔 : C'est le moment de faire des affaires ! 🚨
D'ici quelques jours, nous serons en rupture de stock TOTALE sur tous nos modèles de pare-feux. 🛑

Pourquoi ? Car il y a une pénurie mondiale sur les composants électroniques et car nous profitons de cette période pour réorganiser notre activité ! 💪

Il nous reste quelques unités (littéralement moins de 10 pièces en tout). On a donc décidé de faire le grand ménage de printemps :

🔥 -𝟱𝟬% 𝗦𝗨𝗥 𝗧𝗢𝗨𝗧 𝗟𝗘 𝗦𝗧𝗢𝗖𝗞 𝗥𝗘𝗦𝗧𝗔𝗡𝗧 🔥

La règle est simple : premier arrivé, premier servi. Une fois à zéro, plus aucune commande ne sera possible.

store.provya.fr

store.provya.fr

icon Tags de l'article :

2 commentaires

Nathan - 21/07/2017 à 13:30:07

Bonjour

Le scripts fait des recherche sur une période de temps données. Malheureusement nouveau dans la mise en place de script, a quel endroit dans le script on définie la période de recherche ?

Pouvez-vouz expliquer le script suivant (de facon rapide)
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


Merci d'avance.

@répondre #lien

Guillaume - 25/07/2017 à 08:21:06

@Nathan :
Bonjour,

Ce script extrait les données du fichier "Master.csv" sans faire de filtre sur une période. Une fois les données extraites dans le fichier "monFichier.csv", vous pouvez l'ouvrir avec Excel ou LibreOffice et y appliquer le filtre voulu.

Cordialement,

Guillaume
--
Provya

@répondre #lien

icon Flux RSS des commentaires de cet article