Cette page était à la base faite pour migrer de MRTG à RRDTool sur le CRANS.

  1. Création de la base rrdtool
  2. Mise à jour de la base rrdtool
  3. Alternative : Munin

Création de la base rrdtool

pour créer la base rrd de squid il faut faire :

sudo rrdtool create squid.rrd -s 120 DS:kb_in:COUNTER:120:0:125000000 RRA:AVERAGE:0.5:1:262800 \
DS:kb_out:COUNTER:120:0:125000000 RRA:AVERAGE:0.5:1:262800 DS:hits:COUNTER:120:U:U RRA:AVERAGE:0.5:1:262800 \
DS:requetes:COUNTER:120:U:U RRA:AVERAGE:0.5:1:262800 DS:response_time:GAUGE:120:0:300 RRA:AVERAGE:0.5:1:262800 \
DS:dns_time:GAUGE:120:0:300 RRA:AVERAGE:0.5:1:262800

Pour chaque donnée entrée dans base, il y a deux choses:

  • Une définition du type des données "DATA SOURCE" (DS)
  • Une définition de la manière de stocker les données (RRA)

Pour chaque Data Source on définit un nom, si comment les données sont stockées (GAUGE ou COUNTER). GAUGE et COUNTER supportent la remise à zéro du compteur qui fournit les données. COUNTER explique qu'on rentre la dérivée des données dans le compteur, sachant que celui-ci ne fait que s'incrémenter. GAUGE donne la valeur d'une donnée. Le nombre suivant est en fait le délai maximal que peut avoir une donnée par rapport au moment attendu. Les deux valeurs suivantes définissent le minimum et le maximum que peuvent prendre les données.

Pour chaque RRA, AVERAGE est en fait la fonction de consolidation, elle sert au cas ou il manque une valeur. Ici on fait une moyenne sur une valeur: en fait on utilise donc la valeur précédente. 262800 est le nombre de points que contient l'archive, et comme on prend une valeur toutes les 120 secondes on obtient 120*262800 secondes de logs soit un an.

Mise à jour de la base rrdtool

On créé un script qui va chercher les données intéressantes chez squid par snmp, et qui construit la ligne de commande pour mettre à jour la base de donnée.

#!/bin/sh

################################################################
# script de requette snmp pour le monitoring de squid          #
# Nicolas Stransky, juin 2k1                                   #
# Manuel sabban, mai 2004                                      #
# http://www.squid-cache.org/SNMP/snmpwalk.html                #
################################################################


HOSTNAME="egon:3401"
COMMUNITY=############
MIBFILE=/usr/share/squid/mib.txt
RRD_FILE=/var/log/rrds/squid.rrd

test -f $MIBFILE || exit 0
        # Kb total en input
        echo "rrdtool update "$RRD_FILE"  -t kb_in:kb_out:hits:requetes:respons$
        snmpget -v 1 -m $MIBFILE $HOSTNAME -c $COMMUNITY cacheHttpInKb | awk '{print $4":"}'
        # Kb total en output
        snmpget -v 1 -m $MIBFILE $HOSTNAME -c $COMMUNITY cacheHttpOutKb | awk '{print $4":"}'
        # nb total de hits
        snmpget -v 1 -m $MIBFILE $HOSTNAME -c $COMMUNITY cacheHttpHits | awk '{print $4":"}'
        # nb total de requetes à squid
        snmpget -v 1 -m $MIBFILE $HOSTNAME -c $COMMUNITY cacheProtoClientHttpRequests | awk '{print $4":"}'
        # temps de réponse moyen du squid sur les 5 denières minutes.
        snmpget -v 1 -m $MIBFILE $HOSTNAME -c $COMMUNITY cacheHttpAllSvcTime.5 | awk '{print $4":"}'
        # temps moyen d'une requete DNS pendant les 5 denières minutes.
        snmpget -v 1 -m $MIBFILE $HOSTNAME -c $COMMUNITY cacheDnsSvcTime.5 | awk '{print $4":"}'
 exit 0

Le script envoie les requêtes snmp nécessaire (merci Nico), et génère la ligne de commande nécessaire au lancement:

./squid-rrdtool | tr -d "\n" | sh

Ensuite on rajoute ça dans les cron (/etc/cron.d)

Alternative : Munin

Y'a un truc tout fait qui s'appelle Munin qui a l'air bien foutu et permettrait aussi de tout centraliser facilement sur zamok. Le CRI l'utilise. Les exemples sont bien foutus. Et c'est très très facile à mettre en oeuvre : cf SystèmeLinux/StatsMunin


CatégoriePagePublique