Mrtg

From aldeid
Jump to navigation Jump to search

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
Note
Par défaut, le dossier de stockage des images se fait dans le répertoire /var/www/mrtg. La directive "WorkDir" du fichier de configuration /etc/mrtg.cfg permet de spécifier un dossier différent.

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
Note
La directive columns permet de spécifier le nombre de graphique à afficher par ligne. Par ailleurs, si votre dossier de stockage des images ne correspond pas à /var/www/mrtg, modifiez-le selon votre configuration.

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;
Note
Ce script est basé sur le paquet sysstat, qui doit ensuite être configuré par la commande dpkg-reconfigure sysstat.

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()