Mrtg
Préambule
Qu'est-ce que SNMP et MRTG?
- SNMP signifie Simple Network Management Protocol. SNMPD est un package qui permet le relevé automatique des compteurs.MRTG signifie Multi Router Traffic Grapher. Ce package permet d'exploiter les données disponibles via le protocole SNMP afin de les présenter sous la forme de graphiques.
- RRD Round Robin Database
Contenu de ce tutoriel
Ce tutoriel explique comment installer SNMPD et MRTG à partir des packages Debian stable, et présente des exemples de graphiques qui permettent de suivre entre autre la CPU et la mémoire.
Pré-requis
Sysstat est un ensemble d'indicateurs de performance. Sysstat inclus entre autres les utilitaires sar, sadf, mpstat, iostat, pidstat et sa. Nous utiliserons sar pour le suivi de la consommation de CPU.
# apt-get install sysstat
Si vous obtenez un message d'erreur du style
Impossible d'ouvrir /var/log/sysstat/sa08
il est nécessaire d'activer la tâche quotidienne de cron par la commande suivante :
# dpkg-reconfigure sysstat
Répondez Oui à la question posée.
SNMPD
Installation
# apt-get update # apt-get install snmpd
Paramétrage
# vim /etc/snmp/snmpd.conf
Commentez la ligne :
com2sec paranoid default public
et décommentez celle-ci :
com2sec readonly default public
Redémarrage du démon snmpd
# /etc/init.d/snmpd restart
MRTG
Installation
# apt-get update # apt-get install mrtg
Paramétrage
La commande qui suit permet d'initialiser le fichier de configuration /etc/mrtg.cfg
# cfgmaker [email protected] --global 'Language: French' > /etc/mrtg.cfg
Ajout de graphiques
# mkdir /etc/mrtg # cd /etc/mrtg
Suivi des temps de latence
# cd /etc/mrtg # vim ping
Ajouter les lignes suivantes :
#!/bin/sh P=`ping -c3 -q 64.233.187.99|grep avg|cut -d" " -f4` MIN=`echo $P|cut -d"/" -f1` MAX=`echo $P|cut -d"/" -f2` echo $MAX echo $MIN
Attribution des privilèges d'exécution :
# chmod +x ping
L'adresse 64.233.187.99 correspond à yahoo.com, mais vous pouvez choisir ce que vous voulez. Déclaration de l'indicateur dans le fichier de configuration /etc/mrtg.cfg (ajout des lignes en fin de fichier). Cela permet la génération des images associées aux temps de latence.
#---------Ping YAHOO-------------------- Target[ping_yahoo]: `/etc/mrtg/ping` Options[ping_yahoo]: nopercent,growright,gauge,noinfo, nobanner MaxBytes[ping_yahoo]: 10000 AbsMax[ping_yahoo]: 10000 YLegend[ping_yahoo]: Latence ShortLegend[ping_yahoo]: ms Legend1[ping_yahoo]: Latence max en ms Legend2[ping_yahoo]: Latence min en ms LegendI[ping_yahoo]: Latence Max: LegendO[ping_yahoo]: Latence Min: Title[ping_yahoo]: Ping sur yahoo.com PageTop[ping_yahoo]: <h1>Latence yahoo.com</h1> WithPeak[ping_yahoo]:wmy Legend4[ping_yahoo]: Max de la latence min Legend3[ping_yahoo]: Max de la latence max #--------end ping-----------------------------
Pour que la page d'index générée automatiquement prenne en compte ce nouvel indicateur et affiche les images, utliisez la commande suivante :
# indexmaker --columns=2 --output /var/www/mrtg/index.html /etc/mrtg.cfg
Suivi de la consommation de CPU
# vim cpu
Y reporter les lignes suivantes
#!/usr/bin/perl @line = `/usr/bin/sar | grep all | /usr/bin/tail -n 2 | /usr/bin/head -n 1 | /bin/sed 's/\ \ */ /g'`; @data = split(/ /, @line[0]); if (@data[2] eq "") { printf "0\n"; }else { printf ("%3.0f\n", @data[2] + 0.5); } printf ("%3.0f\n", (@data[3])+(@data[2])+(@data[4]+0.5)); $uptime = `/usr/bin/uptime | sed 's/\ \ */ /g'`; @uptime = split(/,/, $uptime); @uptime = split(/up/, @uptime[0]); $server = `/bin/uname -n`; printf "@uptime[1]\n"; printf $server;
Suivi du nombre d'alertes Snort
#!/usr/bin/env python import MySQLdb DBHOST = '127.0.0.1' DBNAME = 'snort' DBUSER = 'snort' DBPSWD = 'Password' # Connection to MySQL database conn = MySQLdb.connect ( host = DBHOST, user = DBUSER, passwd = DBPSWD, db = DBNAME) cursor = conn.cursor () # Snort request cursor.execute (""" SELECT COUNT(1) FROM event WHERE unix_timestamp(now())-unix_timestamp(timestamp)<10800 """) row = cursor.fetchone() print ("%s\n0" % row) # Close connection cursor.close() conn.close()