Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 10 sur 13

Discussion: Compter le nombre d'appels simultanés

  1. #1
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 391
    Merci
    7
    Remercié 52 Fois en 52 Posts

    Downloads
    0
    Uploads
    0

    Compter le nombre d'appels simultanés

    je m'étais gratté la tête il y a quelque temps pour trouver le nombre d'appels simultanés sur une période donnée (sans être tanqué devant la console en permanence)

    je pense avoir trouvé ZE réponse, à base de script shell. On liste le Master.csv, en affichant l'heure d'établissement d'appel suivi de +1, et de raccroché suivi de -1. On trie, on additionne, et zou:

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

    Après, on joue comme on veut avec le résultat, on peut filtrer sur des noms de trunk, etc...

    J.

  2. #2
    Membre Association
    Date d'inscription
    août 2010
    Localisation
    région parisienne
    Messages
    383
    Merci
    6
    Remercié 7 Fois en 6 Posts

    Downloads
    0
    Uploads
    0
    Salut,

    Super cette commande, par contre il me sort des
    2010-10-01 06:43:30 000
    pourquoi ton script donne l'info qu'il y a 0 com simultanées?

  3. #3
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 391
    Merci
    7
    Remercié 52 Fois en 52 Posts

    Downloads
    0
    Uploads
    0
    tu es bien dans le répertoire ou est Master.csv (ie, /var/log/asterisl/cdr-csv) ?

    sinon, coupe la commande en 2, le premier awk d'abord, et vois ce qui sort

  4. #4
    Membre Association
    Date d'inscription
    août 2010
    Localisation
    région parisienne
    Messages
    383
    Merci
    6
    Remercié 7 Fois en 6 Posts

    Downloads
    0
    Uploads
    0
    pardon je me suis mal exprimé,

    j'ai bien des lignes avec un nombre d'appel simultané > 0 mais je ne comprend pas pourquoi il me sort certaines lignes a 0

  5. #5
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 391
    Merci
    7
    Remercié 52 Fois en 52 Posts

    Downloads
    0
    Uploads
    0
    Ok - j'y suis !

    Ce script te montre à chaque changement du nombre d'appel, le nombre d'appel et la date... par exemple:

    Code:
    2010-10-20 13:11:54 000
    2010-10-20 13:16:54 001
    2010-10-20 13:22:36 002
    2010-10-20 13:23:15 003
    2010-10-20 13:23:31 002
    2010-10-20 13:24:51 001
    2010-10-20 13:27:04 002
    2010-10-20 13:27:09 001
    2010-10-20 13:29:10 000
    2010-10-20 13:30:38 001
    tu vois qu'à 13:16:54, il y a eu un appel et que donc, 1 simultané, puis 2, puis 3, puis à 13:23:31, raccroché, on retombe à 2, etc...

    Tu sais donc précisément ta charge, et à quelle heure.

    Alternativement, tu peux faire
    grep "2010-10-19" /var/log/asterisk/cdr-csv/Master.csv | awk 'BEGIN{FS=",\""} /ANSWERED/{split($11, a, "\""); split($12, b, "\"");printf ("%s,1\n%s,-1\n", a[1],b[1]); }' | sort | awk -F , '{cpt=cpt+$2; printf ("%s %01d\n", $1, cpt);}' | awk 'BEGIN {pdur=0;}{ if (pdur==0){pdur=substr($2,0,2)*60*60+substr($2,4,2) *60+substr($2,7,2); pc=$3; mcc=0;}else{ dur=substr($2,0,2)*60*60+substr($2,4,2)*60+substr( $2,7,2); d[pc] = d[pc]+dur-pdur; nc[pc]++; pdur=dur; pc=$3;} } END {for (i in d) { if (i>0) printf ("%d: Calls=%d, Min= %6.2f\n",i, nc[i],d[i]/60); }}'`

    (j'avoue, j'aime bien awk... remplacer dans le premier grep la date du jour)
    qui va te produire par nombre d'appels simultanés, le temps passé, et le nombre d'appels à ce moment:
    1: Calls=68, Min= 97.50
    2: Calls=41, Min= 44.63
    3: Calls=10, Min= 5.20

    il y a eu 68 moments avec 1 appel simultané, ca a duré 97 min
    il y a eu 41 moments avec 2 appel simultané, ca a duré 44 min
    il y a eu 10 moments avec 3 appel simultané, ca a duré 10 min

    donc, je vois que ce serveur tourne majoritairement avec 1 appel simultané, petites pointes à 3

  6. #6
    Membre Association
    Date d'inscription
    août 2010
    Localisation
    région parisienne
    Messages
    383
    Merci
    6
    Remercié 7 Fois en 6 Posts

    Downloads
    0
    Uploads
    0
    Ok j'ai compris.

    je pense que je vais te donner le titre de "Mister Awk" sur le forum

    merci pour les infos.

  7. #7
    Membre
    Date d'inscription
    septembre 2010
    Messages
    57
    Merci
    0
    Remercié 0 Fois en 0 Posts

    Downloads
    0
    Uploads
    0
    Merci pour ces commandes, mais n'étant pas très à l'aise avec awk, je recherche une méthode utilisant des requêtes mysql.
    A part faire une usine à gaz, je ne suis pas arrivé au but escompté, donc je fait appel à vous.

  8. #8
    Membre Senior
    Date d'inscription
    septembre 2010
    Localisation
    Where the sun shines
    Messages
    1 391
    Merci
    7
    Remercié 52 Fois en 52 Posts

    Downloads
    0
    Uploads
    0
    ahhh.. si tu savais.... tout ce qu'on peut faire avec Awk !!! c'est vraiment de la balle, avec un p'tit grep, le tout arrosé de sed !!!

    mais bon... mysql est pas mal non plus, tu obtiens la même chose (ie, même résultat cf plus haut sur les explications) avec ca:

    SET @cpt = 0;

    SELECT evttime, @cpt := @cpt + typevt AS totcalls
    FROM (SELECT starttime AS evttime, 1 AS typevt FROM cc_call
    UNION ALL
    SELECT stoptime AS evttime, -1 AS typevt
    FROM cc_call
    ORDER BY 1 ASC, 2 DESC) allcalls
    WHERE evttime > '2010-11-01';

    Je l'exécute avec Toad, mais ca marche aussi depuis mysql en commande ligne (attention, il y a deux lignes, le SET puis le SELECT)

    Ca marche avec une bdd A2BILLING, il suffit de remplacer starttime, stoptime et cc_call avec les équivalents dans ta base

    Enjoy....

  9. #9
    Membre
    Date d'inscription
    septembre 2010
    Messages
    57
    Merci
    0
    Remercié 0 Fois en 0 Posts

    Downloads
    0
    Uploads
    0
    Merci beaucoup, c'est exactement ça.

    Voici la requête pour la table cdr d'asterisk :
    Code:
    SET @cpt = 0;
    SELECT evttime, @cpt := @cpt + typevt AS totcalls FROM (SELECT calldate AS evttime, 1 AS typevt FROM cdr UNION ALL SELECT adddate(calldate, interval duration second) AS evttime, -1 AS typevt FROM cdr ORDER BY 1 ASC, 2 DESC) allcalls WHERE evttime > '2010-10-01';

  10. #10
    Membre Junior
    Date d'inscription
    juin 2016
    Messages
    1
    Merci
    0
    Remercié 0 Fois en 0 Posts

    Downloads
    0
    Uploads
    0

    Application php compte du nombre d'appels simultanés php

    Salut, je suis actuellement en stage et je dois développer une application en php qui compte le nombre d'appels simultanés à l'intérieur de la table cdr. Seulement je ne trouve pas comment le faire, pourriez vous m'aider?

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •