Le Forum Non Officiel de la DEDIBOX
Vous n'êtes pas identifié.
Je sais pas comment tu comptes tes auditeurs, mais si on prend le nombre de connexions "established" avec netstat, on peut imaginer un truc du genre:
#!/bin/bash
MY_IP="88.191.X.Y"
MY_PORT="8000"
NB=$(netstat -tnap | grep ${MY_IP}:${MY_PORT} | grep -c ESTABLISHED)
TIMESTAMP=$(date +%s)
RRDTOOL=/usr/bin/rrdtool
RRD=/tmp/auditeurs.rrd
echo "$RRDTOOL update $RRD ${TIMESTAMP}:${NB}"
$RRDTOOL update $RRD ${TIMESTAMP}:${NB}La ligne "echo" est purement cosmétique, pour voir ce qui est exécuté.
Doit y avoir moyen de rendre le comptage plus robuste avec les bonnes options de nestat...
Mais bon, c'est l'idée.
Edit: sinon, vive Zabbix !
Hors ligne
ouais c bien ton script!! Mais le soucis est pour le nombre total de slots je dois le mettre ou?
Dernière modification par Black Dragon (2007-05-06 12:32:56)
Hors ligne
J'ai Trouvé pour mon nombre total ![]()
Par contre pourrais tu m'aider à créer le rrd avec la bonne synthaxe? Je voudrais en fait prendre une valeur toute les 5 minutes et afficher sur 24h.
Voila si tu pouvais m'aider pour faire sa
je pense qu'après je pourrai faire la suite! Parce que en fait je suis perdu avec le nombre d'archives que je dois faire (une average et une max??) et le nombre d'échantillon...
Hors ligne
Pour la base, tu peux créer ca comme ca:
#!/bin/bash
RRDTOOL="/usr/bin/rrdtool"
START=$(date +%s)
RRDB="sessions_ssh.rrd"
STEP=300
$RRDTOOL create $RRDB --start $START --step $STEP \
'DS:sessions_ssh:GAUGE:600:0:3000' \
'RRA:AVERAGE:0.5:1:288' \
'RRA:AVERAGE:0.5:4:504' \
'RRA:AVERAGE:0.5:12:744'Moi j'ai appelé ma datasource "session_ssh" parce que pour mes tests je monitore le nombre de connexions sur le port 22.
Donc, on crée une datasource avec une intervalle de référence de 5 minutes (step = 300sec).
C'est une mesure de type "gauge" c'est à dire un simple relevé. RRDTool a également des types pour les vitesses ou les débits (c'est à dire unité/sec).
Le "600" veut dire: si on n'a pas d'info depuis plus de 600 secondes, rrdtool va considérer que les informations sont invalides (unknown).
Les valeurs 0 et 3000 sont les valeurs min/max acceptables.
Ca, c'est la source de données, ensuite il faut stocker les informations. Pour ca, je crée trois archives avec des paramètres différents.
La définition des archives s'exprime toujours avec comme unité de base l'intervalle de référence (c'est à dire dans notre cas 300sec / 5 minutes).
Donc, première archive:
- moyenne sur 1 intervalle... c'est à dire qu'on prends directement la valeur
- on stocke 288 moyennes, c'est à dire 288 x 5min = 1440min = 1 jour
Deuxième archive:
- moyenne sur 4 intervalles, c'est à dire qu'une moyenne "couvre" 4 x 5min = 20 min
- on stocke 504 moyennes, c'est à dire 504 x 20min = 10080min = 7 jours
Troisième archive:
- moyenne sur 12 intervalles, c'est à dire qu'une moyenne "couvre" 12 x 5min = 60min
- on stocke 744 moyennes, c'est à dire 744h = 31 jours
Avec ces trois archives, tu peux donc sortir des graphiques sur 24h, 1 semaine ou 1 mois sans avoir des bases énormes.
Pour l'alimentation:
#!/bin/bash
MY_IP="192.168.10.20"
MY_PORT="22"
NB=$(netstat -tan | grep ${MY_IP}:${MY_PORT} | grep -c ESTABLISHED)
RRDTOOL=/usr/bin/rrdtool
RRD="/home/calimero/TMP/rrdtool/sessions_ssh.rrd"
echo "$RRDTOOL update $RRD N:${NB}"
$RRDTOOL update $RRD N:${NB}Pis hop dans la crontab toutes les 5min
Hors ligne
Ok j'ai capté! C'est vachement bien expliqué je te remercie
Donc jusque la parfait, j'ai mis dans la crontab, toutes les 5 minutes apparemment les valeurs sont récupérées ![]()
Pour faire les graphiques j'ai compris pour faire un simple ligne normalement... Mais après pour les DEF CDEF j'ai pas bien compris pour colorer les area... y'a une synthaxe étrange... Je veux une simple coloration verte avec le maximum en bleu... J'ai réussi a faire une ligne tout moche ^^ c'est dja bien lol
Hors ligne
Tu veux colorer quoi en vert ?
Parce que si tu veux une area + une ligne, faut 2 valeurs ?!
Les DEF c'est pour définir une variable à partir d'une datasource.
Les CDEF c'est pour définir une variable à partir d'une expression mathématique qui peut s'appuyer sur une ou plusieurs variables précédemment définies. Ex: tu mesures la vitesse de ta bagnole en m/s, tu veux afficher la valeur en km/h ==> il faut que tu appliques un coefficient.
Hors ligne
je voudrais en fait que la ligne représente mes valeurs, et que l'aire sous la ligne soit colorée en vert ![]()
Hors ligne
www.amptracker.com
c gratos en basique
Hors ligne
Bah suffit de grapher en double: une ligne et une surface.
#!/bin/bash
RRDTOOL="/usr/bin/rrdtool"
RRDB="/home/calimero/TMP/rrdtool/sessions_ssh.rrd"
GRAPH="/home/calimero/TMP/rrdtool/sessions_ssh.png"
START=$(date --date="-2 hours" +%s)
END=$(date +%s)
$RRDTOOL graph $GRAPH --start $START --end $END \
"DEF:nb_sessions=$RRDB:sessions_ssh:AVERAGE" \
"AREA:nb_sessions#00FF00:Sessions SSH" \
"LINE2:nb_sessions#000000"Tu peux d'ailleurs foutre la génération du graph juste après la collecte de données.
Hors ligne
je m'immisce perfidement:
BlackDragon tu compte inclure l'origine géographique des auditeurs dans tes graphes ?
c'est plutot intéressant a connaitre
Hors ligne
ouais pourquoi pas mais alors la pour savoir comment faire... J'ai aucune idée de comment m'y prendre ^^ Merci a toi caliméro ça marche nickel en adaptant légèrement ! :wub:
Dernière modification par Black Dragon (2007-05-06 17:53:01)
Hors ligne
Salut je reviens avec des nouvelles!
Alors j'ai toujours un soucis ![]()
- J'ai créé le fichier rivendell.rrd avec ce script->
#!/bin/bash
RRDTOOL="/usr/bin/rrdtool"
START=$(date +%s)
RRDB="rivendell.rrd"
STEP=300
$RRDTOOL create $RRDB --start $START --step $STEP \
'DS:rivendell:GAUGE:600:0:50' \
'RRA:AVERAGE:0.5:1:288' \
'RRA:AVERAGE:0.5:4:504' \
'RRA:AVERAGE:0.5:12:744'- J'ai fait un script add.sh que j'ai mis dans la crontab:
#!/bin/bash
MY_IP="88.191.38.164"
MY_PORT="8003"
NB=$(netstat -tan | grep ${MY_IP}:${MY_PORT} | grep -c ESTABLISHED)
RRDTOOL=/usr/bin/rrdtool
RRD="/var/rrd/rivendell.rrd"
echo "$RRDTOOL update $RRD N:${NB}"
$RRDTOOL update $RRD N:${NB}
GRAPH="/var/www/rivendell.png"
RRDB="/var/rrd/rivendell.rrd"
START=$(date --date="-24 hours" +%s)
END=$(date +%s)
$RRDTOOL graph $GRAPH --start $START --end $END --width 500 --height 200 --title "Fréquentation Rivendell" $
"DEF:nb_slots=$RRDB:rivendell:AVERAGE" \
"AREA:nb_slots#FFFF00:Auditeurs" \
"LINE2:nb_slots#3399FF"- J'obtiens:
Est-ce normal que le max dans l'échelle de gauche soit 20? Pourquoi ais-je des escaliers? Est-il possible d'avoir des pics? (purement esthétique et curiosité).
J'ai entendu parler de "flaming" pour décorer son graph couleurs flammes, savez vous comment faire?
Voila merci a tous en tout cas jusque là tout marche bien ![]()
Dernière modification par Black Dragon (2007-05-08 11:07:36)
Hors ligne
Black Dragon a écrit:
Est-ce normal que le max dans l'échelle de gauche soit 20?
Parce que rrdtool a décidé que 20 ca fait une bonne borne supérieure quand le max est à 17 ? :ph34r:
Je crois que tu peux tuner l'algo de calcul des ordonnées.
Black Dragon a écrit:
Pourquoi ais-je des escaliers?
Parce que tes données correspondent à des escaliers.
Tu mesures X sur une plage de temps, Y sur la plage de temps suivante... ben ca fait des escaliers.
Si tu veux du staïle au détriment de la véracité des graphs (fasion victim !), les versions récentes de rrdtool ont un paramètre "--slope" (ou un truc du genre) pour adoucir les transitions.
Black Dragon a écrit:
Est-il possible d'avoir des pics? (purement esthétique et curiosité).
Pas compris, mais je suppose que c'est la même chose qu'au-dessus.
Black Dragon a écrit:
J'ai entendu parler de "flaming" pour décorer son graph couleurs flammes, savez vous comment faire?
Moi non, mais la doc sans doute !
Ca sent les CDEF pour "découper" la valeur et la grapher en plusieurs AREA avec des couleurs différentes.
Hors ligne
D'accord merci à toi! Par contre tu parle de "tuner l'algo de calcul des ordonnées" j'ai rien compris ^^
Pour le reste j'ai trouvé un exemple ici: http://ed.zehome.com/?page=rrdtool2
Tu crois que c'est réalisable sur mon projet? Pourquoi dans l'exemple de ce site on a des RRA AVERAGE et des MAX? Comment, au moment de faire le graph récupère-t-on les uns ou les autres de ces rra?
Hors ligne
Pour l'ordonnée: man
Pour le flaming: il faut d'abord bien comprendre ce que tu cherches à grapher.
RRDTool est un outil "scientifique" et non un kit graphique à la totoshop.
Si tu fais des archives sur les moyennes, minimum et maximum, tu stockes/calcules des informations différentes. Le graph n'a alors plus le même sens. Tant que tu comprends ce que tu graphes, y a pas de problème, sinon... je vois pas l'intérêt de faire des graphs.
Hors ligne
Merci a toi encore une fois
Je vais me débrouiller pour la fin!!
Hors ligne
héhé je reviens ^^ Avec un soucis que je ne comprend pas!
Voila mon script pour ajouter des valeurs et tracer le graph:
#!/bin/bash
MY_IP="88.191.38.164"
MY_PORT="8003"
NB=$(netstat -tan | grep ${MY_IP}:${MY_PORT} | grep -c ESTABLISHED)
RRDTOOL=/usr/bin/rrdtool
RRD="/var/rdd/rivendell.rrd"
echo "$RRDTOOL update $RRD N:${NB}"
$RRDTOOL update $RRD N:${NB}
GRAPH="/var/www/rivendell"
RRDB="/var/rdd/rivendell.rrd"
START=$(date --date="-24 hours" +%s)
END=$(date +%s)
GRAPHTITLE="Fréquentation Streaming 8170"
for i in -86400 -604800 -2592000 -31536000
do
if [ $i == -86400 ]
then
GRAPH2="${GRAPH}-day.png"
fi
if [ $i == -604800 ]
then
GRAPH2="${GRAPH}-week.png"
fi
if [ $i == -2592000 ]
then
GRAPH2="${GRAPH}-month.png"
fi
$RRDTOOL graph "${GRAPH2}" \
--start ${i} \
--end $END \
--vertical-label "Slots Occupés" \
--title "${GRAPHTITLE}" -w 800 -h 180 -u 50 \
--units-exponent 0 --imgformat PNG \
--color CANVAS#000000 \
--color BACK#000000 \
--color FONT#FFFFFF \
--color MGRID#cccccc \
--color GRID#615900 \
--color FRAME#808080 \
--color ARROW#33CCFF \
--color SHADEA#FFFFFF \
--color SHADEB#FFFFFF \
DEF:rivendell=${RRDB}:rivendell:AVERAGE \
CDEF:flaming1=rivendell,40,*,100,/ \
CDEF:flaming2=rivendell,5,*,100,/ \
VDEF:avg=rivendell,AVERAGE \
COMMENT:"\n" \
COMMENT:"Fréquentation Stream " \
COMMENT:"Maximum Minimum Moyenne Dernier \n" \
AREA:flaming1#6DB5EF:"Slots Occupés " \
STACK:flaming2#65A8E1 \
STACK:flaming2#5C9AD1 \
STACK:flaming2#5691C7 \
STACK:flaming2#5086BD \
STACK:flaming2#4D80B6 \
STACK:flaming2#4879AE \
STACK:flaming2#4575A9 \
STACK:flaming2#4270A3 \
STACK:flaming2#3F6A9D \
STACK:flaming2#3B6597 \
STACK:flaming2#386092 \
STACK:flaming2#375B8E \
STACK:flaming2#345788 \
STACK:flaming2#315284 \
STACK:flaming2#304F80 \
STACK:flaming2#2D4D7E \
STACK:flaming2#214276 \
STACK:flaming2#FFFFFF \
GPRINT:rivendell:MAX:"%2.0lf " \
GPRINT:rivendell:MIN:"%2.0lf " \
GPRINT:rivendell:AVERAGE:"%2.0lf " \
GPRINT:rivendell:LAST:"%2.0lf " \
COMMENT:"\n" \
HRULE:avg#33FF00:"Moyenne"
doneEt voila l'erreur que j'obtiens:
/usr/bin/rrdtool update /var/rdd/rivendell.rrd N:16 ERROR: Could not make sense out of ' ' ./rivend_add.sh: line 81: GPRINT:rivendell:MAX:%2.0lf : commande introuvable ERROR: Could not make sense out of ' ' ./rivend_add.sh: line 81: GPRINT:rivendell:MAX:%2.0lf : commande introuvable ERROR: Could not make sense out of ' ' ./rivend_add.sh: line 81: GPRINT:rivendell:MAX:%2.0lf : commande introuvable ERROR: Could not make sense out of ' ' ./rivend_add.sh: line 81: GPRINT:rivendell:MAX:%2.0lf : commande introuvable
Quand j'avais ce genre d'erreur tot ce matin c'est que j'avais oublié des \ Mais la rien ne manque il me semble!
Le seul truc que j'ai rajouté par rapport à un script qui marchait est le nombre de STACK:flaming2#3F6A9D \ -> j'en ai rajouté pour augmenter le dégradé... peut-être que c'est ça qui bloque je ne sais pas, je ne comprend pas vraiment...
Hors ligne
Ligne vide entre les STACK et les GPRINT, probablement.
Hors ligne
Non en fait un problème de copié collé depuis windows apparemment, car en rentrant les valeurs dans putty tout marche nickel...
Si vous voulez voir ce que ça donne:
http://88.191.38.164/rivendell-day.png
Par contre, pensez vous, purement pour la beauté du graphique que le fond colle avec le graph? Que me conseillez vous niveau "visuel" pour le fond et la ligne moyenne?
Hors ligne
wahooo super nice !! t'as assuré
ouai le fond en noir c bon avec le "flaming"
petite question hors sujet :
Rivendell ça encode que ce qui provient d'une carte son ou bien ça peut encoder du fichier directement ?
(en fait je ne pige pas bien le principe)
Dernière modification par shamankick (2007-05-08 12:14:22)
Hors ligne
Alors que mettrais tu? Du blanc? Le site sur lequel vont se retrouver ces graphiques a un fond blanc. je ne sais pas non plus de quelle couleur mettre les lignes de la grille ^^ Mais la c'est purement décoratif, le principal est fait ![]()
Hors ligne
non en noir ça le fait bien
quand tu parle des lignes tu veux dire la grille ? en gris la grille c'est bien
faut pas que ça gène la lecture du graphe
Dernière modification par shamankick (2007-05-08 12:29:07)
Hors ligne
Ok! Pour ta question hors sujet j'ai strictement rien compris ^^ Tu parle du serveur streaming? rivendell est le nom de la radio diffusant sur le port que je veux "grapher".
Hors ligne
ah ok , laisse tomber..
Rivendell c'est un soft de diffusion pour webradio, je pensais que tu l'utilisais
merci
Hors ligne
Tenez j'ai une question à propos de netstat:
netstat -tan | grep ${MY_IP}:${MY_PORT} | grep -c ESTABLISHED
j'ai cette commande pour compter les slots utilisés sur un de mes serveurs streaming. sachant que tous mes serveurs streaming sont compris entre 8000 et 8999 y'a-til un moyen de compter les slots totaux?
j'ai essayé netstat -tan | grep 88.191.38.164:8* | grep -c ESTABLISHED mais ça me compte aussi les autres processus, comme le ssh sur le port 22... quelle est la synthaxe à utiliser?
Hors ligne