Munin : Surveiller ses serveurs de façons très simple

From Deimos.fr / Bloc Notes Informatique
Jump to: navigation, search

1 Introduction

Munin est un outil de monitoring assez méconnu mais qui contrairement à Cacti est très très simple d'utilisation et d'installation. Il regorge en plus de fonction assez surprenantes.

Voici un aperçu :

  • Simplicité
  • Interface web de consutation
  • Architecture client/serveur
  • Support de RRDTool, pour la génération de graphiques
  • Très nombreux plugins disponible
  • Envoi d’alertes vers Nagios
  • Support du protocole SNMP
  • Détection automatique des services présents sur la machine.

Pour une démo : http://munin.ping.uio.no/

2 Installation

Pour installer Munin, il y existe 2 choses :

  • Munin : Le serveur
  • Munin-node : Le client

Le serveur doit être installé sur la machine principale car elle contiendra une partie graphique web.

2.1 Serveur

Pour installer le serveur, c'est assez simple :

apt-get install munin

Munin est a présent installé.

2.2 Client

Pour installer le client, tapez cette commande :

apt-get install munin-node

Ensuite il faut passer à la configuration.

3 Configuration

Vous avez trouvé l'installation simple ? Et bien ca configuration c'est pareil !

3.1 Serveur

Editez le fichier "/etc/munin/munin.conf" et adaptez à votre configuration :

[fire.deimos.fr] # Entrez le nom de votre première machine
   address 127.0.0.1 # Si c'est le serveur également ne changez pas cette ligne
   use_node_name yes 
[burnin.deimos.fr] # Ici le nom de mon client
   address 10.8.0.6 # Ici l'adresse IP de mon client
   use_node_name yes

3.1.1 Accélerer la collecte des données

Pour accélerer la collecte des données avec munin-update, ajoutez dans /etc/munin/munin.conf du master :

Configuration File /etc/munin/munin.conf
fork yes

Ainsi munin fera un fork par machine à aller interroger, plutôt que bêtement les unes après les autres.

3.2 Client

Le client est maintenant installé, éditez le fichier "/etc/munin/munin-node.conf" :

allow ^127\.0\.0\.1$

Remplacez cette adresse si le client n'est pas installé sur le serveur. Si c'est juste le client qui est installé sur cette machine, alors remplacez l'adresse et indiquez celle du serveur.

Redémarrez ensuite le client :

/etc/init.d/munin-node restart

4 Add-ons

  • L’ensemble des services disponibles sur la machine sont détectés par la commande munin-node-configure :
munin-node-configure –suggest | grep yes
cpu | no | yes
df | no | yes
df_inode | no | yes
entropy | no | yes
exim_mailqueue | no | yes
exim_mailstats | no | yes
forks | no | yes
if_ | no | yes +eth0 +eth1
if_err_ | no | yes +eth0 +eth1
interrupts | no | yes
  • Le paquet debian, active les plugins pour les services détectés en créant les liens dans le répertoire /etc/munin/plugins :
ls -l /etc/munin/plugins
lrwxrwxrwx 1 root root 28 Nov 20 18:14 cpu -> /usr/share/munin/plugins/cpu
lrwxrwxrwx 1 root root 27 Nov 20 18:14 df -> /usr/share/munin/plugins/df
  • Vous pouvez désactiver un plugin en supprimant son lien symbolique et l’activer en créant un lien symbolique :
ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/

4.1 ZFS

C’est un plugin solaris only (utilisation du module Kstat oblige) qui permet de monitorer les I/O sur les pools ZFS :

Configuration File munin-zfs-io.pl
#!/usr/perl5/bin/perl -w
# ZFS munin plugin for (Open)Solaris
# By Nico <[email protected]>
 
use strict;
use Sun::Solaris::Kstat;
 
my $Kstat = Sun::Solaris::Kstat->new();
my $bytes_read = ${Kstat}->{unix}->{0}->{vopstats_zfs}->{read_bytes};
my $bytes_write = ${Kstat}->{unix}->{0}->{vopstats_zfs}->{write_bytes};
 
if($ARGV[0] && $ARGV[0] eq "config") {
	print "graph_title ZFS Read/Write bytes\n";
	print "graph_args --base 1024 -l 0\n";
	print "graph_category disk\n";
	print "read.label Bytes read\n";
	print "read.info Bytes read on the ZFS pools\n";
	print "write.label Bytes written\n";
	print "write.info Bytes written on the ZFS pools\n";
	print "read.type DERIVE\n";
	print "read.min 0\n";
	print "write.type DERIVE\n";
	print "write.min 0\n";
	exit 0;
}
 
print "read.value ".$bytes_read."\n";
print "write.value ".$bytes_write."\n";

5 Ressources

Documentation on Monitoring Multiple Systems With munin
Monitoring with Munin
http://www.rottenbytes.info/?p=79