Vous êtes sur la page 1sur 8

Mise en œuvre du protocole SNMP sur un serveur Linux avec gestion des stats par le

programme MRTG
+ Mise en œuvre de la solution avec du matériel de routage Cisco .

Pré requis :

Un serveur Linux (ici DEBIAN SARGE)


Un serveur Web Apache ou Apache2
Un ou plusieurs routeurs Cisco ici un 2800.
Un litre de bon café bien chaud minimum

N.B. :

Le serveur MySQl n’est nécessaire que si vous souhaitez conserver les statistiques dans des bases de données au lieu des archives,
de plus MRTG (comme vous le verrez dans les captures d’écran plus loin est capable du suivi des statistiques SUR LA PAGE
WEB sur UN AN !)

I.I Installation et configuration de l’agent SNMP et du programme MRTG sur le serveur Linux.
A noter qu’il s’agit ici de la distribution DEBIAN GNU/LINUX

Dans un terminal avec les droits ROOT (symbolisé sous linux par sigle # dans la console) tapez les commandes suivantes :

#apt-get update && apt-get upgrade (pour mettre à jour les sources et les paquets)

#apt-get install snmp snmpd mrtg

I.II Configuration de SNMP

Editez le fichier de configuration SNMP avec la commande suivante :

#nano /etc/snmp/snmpd.conf

Le fichier de configuration de SNMP s’affiche, recherchez les SECTIONS suivantes :

a) Autoriser l’accès en lecture des données SNMP.

Dans la section :

#################################
#Access Control

Cherchez les lignes suivantes

####
# First, map the community name (COMMUNITY) into a security name
# (local and mynetwork, depending on where the request is coming
# from):

# sec.name source community


com2sec paranoid default public  commentez cette ligne en ajoutant le signe #
#com2sec readonly default public  puis dé - commentez celle-ci en enlevant le signe #
#com2sec readwrite default private  dé - commentez pour avoir les droits d’écriture

b) Renseigner les champs syslocation et syscontact

Dans la section :

SECTION: System Information Setup (et/ou system contact information)

syslocation emplacement_géographique_du_serveur
syscontact nom <root@localhost>  recevoir les messages d’alerte sur root@linux_srv

Redémarrez le service SNMP avec la commande suivante :


#/etc/init.d/snmpd restart

II.I configurer MRTG


a) Créez le répertoire de travail de MRTG où il créera les graphiques :

#mkdir /var/www/mrtg

b) Construire une configuration basique de MRTG :

# cfgmaker \
--global 'WorkDir: /var/www/mrtg' \
--global 'Language: french' \
--global 'Options[_]: bits,growright' \
--ifdesc=descr public@localhost \
--output /var/www/mrtg/

L’antislash permet de saisir une commande longue sur plusieurs lignes tout en
indiquant au shell qu’il s’agit de la même commande.

WorkDir déclare le répertoire de travail de MRTG.


Language permet de choisir la langue de la page WEB.
L’option bits growright permet de préciser que nous voulons des bits comme unités de
mesure par seconde et que nous souhaitons voir le graphique évolué depuis la droite de
la page.
IfDesc permet de préciser la description de l’interface utilisée ici eth0 et eth1.
Output permet d’indiquer où va « sortir » le résultat de cette commande de
configuration, dans notre cas /var/www/mrtg/local/.

Si le résultat de la config s’affiche sans erreur vous pouvez relancer la commande ci-
dessus en indiquant dans l’option
–-output /var/www/mrtg/local.cfg
pour inscrire la configuration en dur dans un fichier .cfg

c) Modifier la table de CRON pour la mise à jour de la page WEB avec le


nouveau fichier de configuration :

Ensuite modifiez la ligne inscrite automatiquement à l’installation de MRTG dans la


crontab dans /etc/cron.d/mrtg pour lui indiquer le nouveau fichier de config
à utiliser pour l’actualisation de la page WEB :

ancienne ligne :

0-59/5 * * * * root /usr/bin/mrtg /var/www/html/mrtg/mrtg.cfg

Nouvelle ligne :

0-59/5 * * * * root /usr/bin/mrtg /var/www/mrtg/local.cfg

Pour afficher les résultats de la config dans un index.html :

indexmaker /var/www/mrtg/local.cfg >> /var/www/mrtg/index.html


ou
indexmaker /var/www/mrtg/fichier_de_config.cfg et copier le résultat dans le fichier d’index.html

Résultats des manipulations sous forme de captures d’écran:

Vous pouvez voir que les deux premiers graphiques sont les résultats des commandes pour la surveillance
du serveur linux
Les graphiques suivants ceux du serveur debian.srv sont les résultats d’une configuration de l’agent SNMP
sur un routeur CISCO 2800 avec une configuration de MRTG sur le serveur Linux pour afficher les résultats
envoyés par le routeur.

Configurer l’agent SNMP-SERVER du routeur CISCO pour envoyer les informations


au serveur Linux :

Sur le routeur à paramétrer en mode privilégié saisir les commandes suivantes :

snmp-server community public RO


snmp-server community private RW
snmp-server trap authentication acl-failure  si le routeur possède une list d’ACL configurée
ce qui n’est pas forcément nécessaire ici
snmp-server enable traps  le routeur vous répond qu’il ne pourra activer les traps que pour le changement
d’état des interfaces
snmp-server host ip_du_serveur_linux

Voilà pour les options de base.

Configurer MRTG pour récupérer les informations du routeur :

Reprenez la commande cfgmaker en passant d’autres arguments :

#cfgmaker \
--global 'WorkDir: /var/www/mrtg' \
--global 'Language: french' \
--global 'Options[_]: bits,growright' \
--ifdesc=descr public@172.16.0.131 \  ip de l’interface du routeur
--output /var/www/mrtg/cisco1.cfg

Même chose pour la seconde interface en 192.168.0.254 avec cisco2.cfg etc…


Ajouter un fichier dans /etc/cron.d/ pour automatiser l’update de MRTG contenant la commande suivante :

mrtg /var/www/mrtg/nom_du_fichier_de_config.cfg

Ce qui donne une fois mrtg actualisé :

Annexes :

Vous pouvez sécuriser l’accès au repertoire de travail de MRTG avec un fichier .htaccess ou avec du SSL.

MRTG peut récupérer d’autres informations que l’utilisation de la bande passante telles que celle de la
mémoire ou des ressources disques et processeur. Ceci passe par un script qu’il faut ensuite déclarer à
MRTG :
Exemple de script pour l’utilisation de la mémoire :

#!/bin/sh

PATH=/usr/local/bin

USED=`free -b|grep cache:|cut -d ":" -f2|cut -c1-11`


FREE=`free -b|grep cache:|cut -d ":" -f2|cut -c12-22`

echo $FREE
echo $USED

Déclaration du script dans votre fichier de configuration principal de MRTG ici local.cfg :
#---------Memory--------------------
Target[mem]: `/etc/mrtg/mem`
Options[mem]: nopercent,growright,gauge,noinfo, nobanner
Unscaled[mem]:dwmy
MaxBytes[mem]: 261025792 Kilo[mem]:1024
YLegend[mem]: RAM
ShortLegend[mem]: o
Legend1[mem]: Mémoire libre
Legend2[mem]: Mémoire utilisée
LegendI[mem]: Mém. Libre:
LegendO[mem]: Mém. Utilisée:
Title[mem]: Mémoire
PageTop[mem]: <h1>Mémoire</h1>
WithPeak[mem]:wmy
Legend3[mem]: Mémoire libre max
Legend4[mem]: Mémoire utilisée max
#--------end Memory-----------------------------

Résultat :
Fichier de configurations :

Routeur CISCO 2800 :

######################################################################################
#
version 12.4
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption

hostname routeurADSL-cisco2800

boot-start-marker
boot-end-marker

enable secret 5 $1$gHLZ$h8Z9bAhpIuTSH6i0dAMww.

no aaa new-model

ip cef

no ip domain lookup

voice-card 0
no dspfarm

interface GigabitEthernet0/0
ip address 192.168.0.254 255.255.255.0
ip nat inside
ip virtual-reassembly
duplex auto
speed auto

interface GigabitEthernet0/1
ip address 172.16.0.131 255.255.255.0
ip nat outside
ip virtual-reassembly
duplex auto
speed auto

interface Serial0/0/0
no ip address
shutdown
clock rate 125000

interface Serial0/0/1
no ip address
shutdown
clock rate 125000

router rip
version 2
network 172.16.0.0
network 192.168.0.0

ip route 0.0.0.0 0.0.0.0 172.16.0.4

ip http server
no ip http secure-server
ip nat inside source list 3 interface GigabitEthernet0/1 overload

access-list 1 remark SDM_ACL Category=2


access-list 1 permit 192.168.0.0 0.0.0.255
access-list 2 remark SDM_ACL Category=2
access-list 2 permit 192.168.0.0 0.0.0.255
access-list 3 remark SDM_ACL Category=2
access-list 3 permit 192.168.0.0 0.0.0.255
snmp-server community public RO
snmp-server community private RW
snmp-server trap link ietf
snmp-server enable traps snmp authentication linkdown linkup coldstart warmstart
snmp-server enable traps vrrp
snmp-server enable traps ds1
snmp-server enable traps tty
snmp-server enable traps eigrp
snmp-server enable traps xgcp
snmp-server enable traps flash insertion removal
snmp-server enable traps ds3
snmp-server enable traps envmon
snmp-server enable traps icsudsu
snmp-server enable traps isdn call-information
snmp-server enable traps isdn layer2
snmp-server enable traps isdn chan-not-avail
snmp-server enable traps isdn ietf
snmp-server enable traps ds0-busyout
snmp-server enable traps ds1-loopback
snmp-server enable traps atm subif
snmp-server enable traps bgp
snmp-server enable traps bulkstat collection transfer
snmp-server enable traps cnpd
snmp-server enable traps config-copy
snmp-server enable traps config
snmp-server enable traps dial
snmp-server enable traps dsp card-status
snmp-server enable traps entity
snmp-server enable traps event-manager
snmp-server enable traps frame-relay
snmp-server enable traps frame-relay subif
snmp-server enable traps hsrp
snmp-server enable traps ipmobile
snmp-server enable traps ipmulticast
snmp-server enable traps mpls ldp
snmp-server enable traps mpls traffic-eng
snmp-server enable traps mpls vpn
snmp-server enable traps msdp
snmp-server enable traps mvpn
snmp-server enable traps ospf state-change
snmp-server enable traps ospf errors
snmp-server enable traps ospf retransmit
snmp-server enable traps ospf lsa
snmp-server enable traps ospf cisco-specific state-change nssa-trans-change
snmp-server enable traps ospf cisco-specific state-change shamlink interface-old
snmp-server enable traps ospf cisco-specific state-change shamlink neighbor
snmp-server enable traps ospf cisco-specific errors
snmp-server enable traps ospf cisco-specific retransmit
snmp-server enable traps ospf cisco-specific lsa
snmp-server enable traps pim neighbor-change rp-mapping-change invalid-pim-message
snmp-server enable traps pppoe
snmp-server enable traps cpu threshold
snmp-server enable traps rsvp
snmp-server enable traps rtr
snmp-server enable traps syslog
snmp-server enable traps l2tun session
snmp-server enable traps vsimaster
snmp-server enable traps vtp
snmp-server enable traps isakmp policy add
snmp-server enable traps isakmp policy delete
snmp-server enable traps isakmp tunnel start
snmp-server enable traps isakmp tunnel stop
snmp-server enable traps ipsec cryptomap add
snmp-server enable traps ipsec cryptomap delete
snmp-server enable traps ipsec cryptomap attach
snmp-server enable traps ipsec cryptomap detach
snmp-server enable traps ipsec tunnel start
snmp-server enable traps ipsec tunnel stop
snmp-server enable traps ipsec too-many-sas
snmp-server enable traps voice poor-qov
snmp-server enable traps voice fallback
snmp-server enable traps dnis
snmp-server host 172.16.0.130 public

control-plane

line con 0
password 7 094F471A1A0A
logging synchronous
login
line aux 0
line vty 0 4
password 7 070C285F4D06
login

scheduler allocate 20000 1000

end
######################################################################################

Thomas Simon 29.03.2007