Catégories
Open-source Reseau

Surveiller les interfaces de son Cisco avec Nagios

Qui veut surveiller l’état des interfaces de ses routeurs Cisco doit obligatoirement se plonger dans l’arborescence des MIB SNMP. Heureusement, Patrick Proy a eu la bonne idée d’intégrer dans un seul et même script Perl toutes les fonctions pour répondre à ce besoin.

Nous allons dans ce billet voir comment installer et tester le plugin check_snmp_int.pl puis configurer Nagios pour prendre en compte ce nouveau plugin.

Installation du plugin

Il faut dans un premier temps se rendre dans le répertoire ou les plugin Nagios sont stockés (/usr/local/libexec/nagios par exemple) puis y télécharger la dernière version du plugin (1.4.8 au moment de l’écriture de ce billet):

cd /usr/local/libexec/nagios
wget http://nagios.manubulon.com/check_snmp_int.pl

Ensuite on le rend executable par Nagios:

chown nagios:nagios check_snmp_int.pl
chmod 555 check_snmp_int.pl

Enfin on vérifie que l’utilisateur Nagios (ou celui qui doit lancer Nagios) peut exécuter ce script:

su – nagios
nagios> /usr/local/libexec/nagios/check_snmp_int.pl -h
… la syntaxe va s’afficher …
nagios> exit

Si vous avez une erreur lors de l’éxécution du script, cela peut être dû à l’absence des pré-requis suivants sur votre système:

  • Perl doit être installé dans le répertoire /usr/bin/perl
  • La librairie Perl nommée Net::SNMP doit être installé (via CPAN)
  • Le fichier ‘utils.pm doit être présent dans le répertoire des plugins Nagios

Test du plugin

Nous allons dans un premier temps chercher la liste des interfaces réseau du routeur Cisco (ou autre compatible avec MIB-2 standard) à superviser:

/usr/local/libexec/nagios/check_snmp_int.pl -H <adresseIPdurouteur> -C public -n zzzz -v
Alarm at 15 + 5
SNMP v1 login
Filter : zzzz
OID : 1.3.6.1.2.1.2.2.1.2.26, Desc : Async54
OID : 1.3.6.1.2.1.2.2.1.2.28, Desc : Async56
OID : 1.3.6.1.2.1.2.2.1.2.18, Desc : Async46
OID : 1.3.6.1.2.1.2.2.1.2.12, Desc : Async40
OID : 1.3.6.1.2.1.2.2.1.2.31, Desc : Async59
OID : 1.3.6.1.2.1.2.2.1.2.19, Desc : Async47
OID : 1.3.6.1.2.1.2.2.1.2.22, Desc : Async50
OID : 1.3.6.1.2.1.2.2.1.2.34, Desc : Async62
OID : 1.3.6.1.2.1.2.2.1.2.13, Desc : Async41
OID : 1.3.6.1.2.1.2.2.1.2.23, Desc : Async51
OID : 1.3.6.1.2.1.2.2.1.2.4, Desc : Null0
OID : 1.3.6.1.2.1.2.2.1.2.35, Desc : Loopback0
OID : 1.3.6.1.2.1.2.2.1.2.30, Desc : Async58
OID : 1.3.6.1.2.1.2.2.1.2.5, Desc : Async33
OID : 1.3.6.1.2.1.2.2.1.2.11, Desc : Async39
OID : 1.3.6.1.2.1.2.2.1.2.1, Desc : Ethernet3/0
OID : 1.3.6.1.2.1.2.2.1.2.39, Desc : Virtual-Access2
OID : 1.3.6.1.2.1.2.2.1.2.14, Desc : Async42
OID : 1.3.6.1.2.1.2.2.1.2.37, Desc : Virtual-Template1
OID : 1.3.6.1.2.1.2.2.1.2.16, Desc : Async44
OID : 1.3.6.1.2.1.2.2.1.2.20, Desc : Async48
OID : 1.3.6.1.2.1.2.2.1.2.17, Desc : Async45
OID : 1.3.6.1.2.1.2.2.1.2.29, Desc : Async57
OID : 1.3.6.1.2.1.2.2.1.2.36, Desc : Tunnel0
OID : 1.3.6.1.2.1.2.2.1.2.3, Desc : Serial3/1
OID : 1.3.6.1.2.1.2.2.1.2.25, Desc : Async53
OID : 1.3.6.1.2.1.2.2.1.2.2, Desc : Serial3/0
OID : 1.3.6.1.2.1.2.2.1.2.7, Desc : Async35
OID : 1.3.6.1.2.1.2.2.1.2.33, Desc : Async61
OID : 1.3.6.1.2.1.2.2.1.2.9, Desc : Async37
OID : 1.3.6.1.2.1.2.2.1.2.6, Desc : Async34
OID : 1.3.6.1.2.1.2.2.1.2.15, Desc : Async43
OID : 1.3.6.1.2.1.2.2.1.2.10, Desc : Async38
OID : 1.3.6.1.2.1.2.2.1.2.27, Desc : Async55
OID : 1.3.6.1.2.1.2.2.1.2.32, Desc : Async60
OID : 1.3.6.1.2.1.2.2.1.2.8, Desc : Async36
OID : 1.3.6.1.2.1.2.2.1.2.21, Desc : Async49
OID : 1.3.6.1.2.1.2.2.1.2.24, Desc : Async52

Il faut ensuite noter le nom système des interfaces à surveiller (par exemple Serial 3/0 et Serial 3/1 dans mon cas).

Puis on lance ensuite la commande pour vérifier l’état de l’interface Serial 3/0:

/usr/local/libexec/nagios/check_snmp_int.pl -H <adresseIPdurouteur> -C public -n « Serial3/0 » -r
Serial3/0:UP:1 UP: OK

On a donc maintenant la commande à éxécuter, il ne reste plus qu’a l’intégrer dans notre configuration de Nagios.

Configuration de Nagios

On commence par se rednre dans le répertoire ou se trouve les fichiers de configuration de Nagios (/usr/local/etc/nagios par exemple):

cd /usr/local/etc/nagios

Puis si vous êtes sous Nagios 3.x ou supérieur dans le sous-répertoire objects:

cd objects

Enfin on édite le fichier commands.cfg puis on y ajoute la section suivante:

###################
# check_snmp_int.pl
###################

# ‘check_snmp_int.pl’, vérifier l’état de l’interface reseau
define command{
command_name    check_snmp_int
command_line    $USER1$/check_snmp_int.pl -H $HOSTADDRESS$ -C $ARG1$ -n $ARG2$ -r
}

On vient donc de créer une nouvelle commande Nagios qui appelera le plugin check_snmp_int avec deux paramètres:

  • $ARG1$: nom de la communauté SNMP à utiliser (public la plupart du temps)
  • $ARG2$: nom de l’interface à superviser

Enfin , on ajoute un nouveau service pour le routeur Cisco à superviser (par exemple dans le fichier network.cfg):

define host{
use             routeur
host_name       cisco
alias           Routeur liaison WAN
address         <adresseIProuteurcisco>
}
define service{
use                     generic-service
host_name               cisco
service_description     LS 1
check_command           check_snmp_int!public!« Serial3/0 »
}

Et si en plus je veux…

…surveiller la bande passante utilisée et envoyer une alerte si celle-ci dépasse un certain seuil ? Aller Noël n’est pas si loin…

Il suffit de créer une nouvelle commande Nagios et d’utiliser l’option -k du plugin. Par exemple pour surveiller un interface Serial3/0 et emmettre une alerte de warning si  débit dépasse 1.6 Mbps puis une alerte critique si ce dernier passe la barre des 1.9 Mbps ?

/usr/local/libexec/nagios/check_snmp_int.pl -H <adresseIPdurouteur> -C public -n « Serial3/0 » -k -w 1600,1600 -c 1900,1900

Je vous laisse convertir cette commande système vers une commande Nagios, cela vous fera un bon exercice 😉

Catégories
Open-source Reseau Systeme

Exemples de check de services Nagios

Quelques exemples de services pour Nagios. N’hésitez pas à donner d’autres exemples via les commentaires ou ma fiche de contact.

J’intégrerai les exemples les plus pertinents au billet.

On menu du jour:

  • superviser un serveur Web (HTTP)
  • superviser un serveur Web sécurisé (HTTP over SSL)
  • superviser un serveur de messagerie (mail)
  • superviser un serveur VoIP (sip)
  • superviser un serveur de fichiers (samba)
  • superviser un serveur annuaire (LDAP)
  • superviser un serveur de base de données (mySQL ou pgSQL)
  • superviser un serveur réseau (DHCP et DNS)
  • supervision de disques RAID (carte hardware HP Proliant)
  • supervision de disques RAID 1 logiciel sous FreeBSD
  • supervision d’un serveur Asterisk (suivre ce lien)
  • supervision d’un trunk IAX sur un serveur Asterisk

< tous les plats sont accompagnés de frites et de salade >

Catégories
Open-source Reseau

Surveiller vos espaces disques SMB avec Nagios

Une petite astuce pour surveiller facilement avec Nagios, l’espace disque disponible sous ses serveurs Windows ou Samba (protocole SMB).

La première chose à faire est de tester le plugin en ligne de commande. Par exemple pour surveiller l’espace disque monpartage du serveur monserveur (\\monserveur\monpartage) en utilisant le couple login/password monuser/monpassword:

/usr/local/nagios/libexec/check_disk_smb -H monserveur -s monpartage -u monlogin -p monpassword

Il est possible que vous rencontriez l’erreur suivante sous Ubuntu 8.10:

Can't exec "//monserveur/monpartage": No such file or directory at /usr/local/nagios/libexec/check_disk_smb line 166.
Use of uninitialized value $res in split at /usr/local/nagios/libexec/check_disk_smb line 172.
Use of uninitialized value $_ in pattern match (m//) at /usr/local/nagios/libexec/check_disk_smb line 180.
Result from smbclient not suitable

Dans ce cas, je vous conseille la lecture de cette discussion dans le forum pour corriger le problème.

On commence par éditer le fichier commands.cfg pour ajouter le plugin:

define command{

command_name    check_disk_smb

command_line    $USER1$/check_disk_smb -H $HOSTADDRESS$ -s $ARG1$ -u $ARG2$ -p $ARG3$

}

Puis on utilisera la définition de service suivante (à mettre par exemple dans le fichier objects/servers.cfg):

define service{

use                     generic-service

host_name               monserveur

service_description     Disk space

check_command           check_disk_smb!servernas!monpartage!monuser!monpassword

}

Un alerte d’avertissement (warning) sera générée si l’espace disque est inférieur à 15%, une alerte critique (critical) si cette valeur passe à 5%.

Catégories
Blog

Un bon plugin pour les commentaires de votre blog

WP Comment Remix est un plugin WordPress (testé avec WP 2.6) qui ajoute quelques fonctions intéressantes aux commentaires de votre blog:

  • ajout d’un bouton « Répondre » en bas de chaque commentaire (celà va automatiquement insérer un lien vers  le commentaire en question dans le commenatire que vous êtes en train de rédiger)
  • ajout d’un bouton « Citer » en bas de chaque commentaire (pour citer un commentaire d’une autre personne)
  • gestion des tags par commentaires
  • mise à disposition d’un widget pour afficher les derniers commentaires
  • mise à disposition d’un widget pour afficher les derniers trackbacks
  • mise à disposition d’un widget pour afficher les billets les plus commentés
  • mise à disposition d’un widget pour afficher les commenatires les plus actifs

Après installation, il suffit de ce rendre dans les options pour configurer le plugin selon vos besoins (notamment pour changer les mots clès de l’Anglais vers le Francais).

Celà donne cela sur votre blog:

C’est le genre de plugin tout en un que je trouve assez pratique.

A télécharger ici.

Catégories
Open-source Reseau Systeme

Surveiller la mémoire de vos serveurs avec Nagios

Voici un petit billet de plus sur Nagios. Nous aborderons le sujet de la supervision à distance de la mémoire vive (RAM) de nos serveurs.

Nous allons pour cela utiliser deux plugins, le premier est NRPE (il permet de lancer des commandes à distance sur d’autres machines), le second est un script permettant d’obtenir un état de la mémoire vive à un instant « t ».

Nous utiliserons donc le schéma suivant:

Installation de NRPE

Ce premier plugin doit être installé sur le serveur Nagios et sur toutes les machines à superviser.

Pour une procédure d’installation sous GNU/Linux, lire ce billet. Si vous voulez surveiller des machines FreeBSD, lire celui là.

A ce stade vous devez donc avoir un plugin NRPE opérationnel entre votre serveur Nagios et les machines à surveiller.

Installation du plugin de supervision de la mémoire

Il existe un grand nombre de méthodes pour obtenir la mémoire libre sur une machine. Personnellement j’utilise les deux scripts suivants selon que je sois:

Mais, si le coeur vous en dit, vous pouvez écrire vous-même le plugin le plus adapté à votre système (Windows, Unix divers et varié…).

Une fois connecté sur votre machine à superviser, il faut mettre le plugin dans le répertoire /usr/local/libexec/nagios/ et lui donner les droits en lecture et exécution:

cp ./check_memory.pl /usr/local/libexec/nagios/
chmod 555 /usr/local/libexec/nagios/check_memory.pl

Vous pouvez tester localement le plugin grâce la commande suivante:

/usr/local/libexec/nagios/check_memory.pl -f -w 90 -c 50
Memory WARNING – 87.5% (1879588864 kB) free |pct=87.5

Configuration de NRPE pour prendre en compte le script check_memory

Toujours sur la machine cible, il faut éditer le fichier de configuration de NRPE pour y ajouter la définition du plugin check_memory:

vi /usr/local/etc/nrpe.cfg


command[check_mem]=/usr/local/libexec/nagios/check_memory.pl -f -w 30 -c 15

Dans la configuration ci-dessus, on demande à check_memory de déclencher une alerte (warning) si la mémoire passe en dessous des 30% et une erreur (critical) si elle descend en dessous des 15%. Avous d’adpater ces valeurs selon vos besoins.

Pour que NRPE prenne en compte la nouvelle configuration il faut relancer le daemon:

Sous Linux:

service nrpe2 restart

ou

/etc/init.d/nrpe2 restart

Sous FreeBSD:

/usr/local/etc/rc.d/nrpe2 restart

Configuration du serveur Nagios

Il ne reste plus qu’à modifier la configuration du serveur Nagios pour ajouter le service à superviser, voici un exemple:

# Mon serveur
define host{
use        generic-host
host_name    monserveur
alias        Mon beau serveur
address        192.168.0.200
}
define service{
use                     generic-service
host_name               monserveur
service_description     Memoire vive
check_command           check_nrpe!check_mem
}

Et voila le résultat:

Catégories
Open-source Reseau Systeme

Supervision de vos serveurs FreeBSD avec Nagios et NRPE

En complément du billet sur la supervision des serveurs Linux, voici une simple procédure pour mettre en place le monitoring de serveurs sous FreeBSD (ou Mac OS X) à partir de Nagios en utilisant le plugin NRPE.

Catégories
Blog Open-source

Le ZikiPlugin WordPress passe en version 0.8

Je viens de mettre en ligne la version 0.8 du plugin ZikiPlugin. Pas de révolution, j’ai juste ajouté une fonction, demandée par des utilisateurs, pour afficher le nombre de fans et d’amis dans le widget. En voici un aperçu:

Bon test et j’attends vos retours et remarques…

Catégories
Open-source Reseau

Surveiller vos serveurs Windows avec Nagios

Dans la longue série des billets sur Nagios, en voici un tout spécialement dédié aux lecteurs qui ont à administrer des machines sous Windows. Nous allons décrire l’installation de NSClient, un plugin permettant de récupérer un nombre important de d’informations à surveiller sur une machine Windows.

Comme les plugins NRPE et NSCA (disponible seulement sous Linux et Mac OS X), NSClient se base sur une architecture client/serveur. La partie cliente (nommée check_nt), doit être disponible sur le serveur Nagios. La partie serveur (NSClient++) est à installer sur chacune des machines Windows à surveiller.

Installation de check_nt

Il y a de forte chance que le plugin check_nt soit installé par défaut sur votre serveur Nagios. Pour le vérifier, il faut se rendre dans le répertoire Nagios ou se trouve vos plugins (/usr/lib/nagios/plugins sur Fedora).

# cd /usr/lib/nagios/plugins
# ls check_nt
check_nt

Si ce n’est pas le cas, il suffit de l’installer grâce aux commandes suivantes:

Fedora:
# sudo yum install nagios-plugins-nt

Ubuntu:
# sudo apt-get install nagios-plugins-nt

Installation de NSClient++

Remarque: cette opération est à faire sur l’ensemble des PC Windows à surveiller.

La première chose à faire est de télécharger la dernière version (0.2.5e ou supérieure) à l’adresse suivante: Sourceforge de NSClient++.

Ensuite il faut:

  • « dézipper » le client dans le répertoire c:\nsclient
  • ouvrir une commande DOS (cmd.exe)
  • puis entrer les commandes suivantes:
    • cd \nsclient
    • nsclient++ /install
  • Ouvrir le gestionnaire des services et vérifier que le service est autorisé à « Interagir avec le bureau »
  • Editer le fichier c:\nsclient\NSC.INI en:
    • décommentant tous les modules listé dans la section [modules] sauf CheckWMI.dll et RemoteConfiguration.dll
    • décommentant la ligne allowed_hosts dans la section [Settings] et en y ajoutant l’adresse du serveur Nagios.
  • puis entrer les commandes suivantes dans votre fenêtres DOS:
    • cd \nsclient
    • nsclient++ /start

Pour tester que l’installation à bien marché, le plus simple est de faire un test depuis le serveur Nagios. Pour cela, il faut:

# cd /usr/lib/nagios/plugins

# ./check_nt -H IPMACHINEWINDOWS -v CLIENTVERSION -p  12489

Si tout ce passe bien, le client doit envoyer la version de NSClient (0.2.5e)

Si cela ne fonctionne pas, il faut peut être vérifier que la requête (TCP sur port 12489) n’est pas bloqué par un Firewall.

Configuration de Nagios pour surveiller vos machines Windows

Une fois le client et le serveur installé, il faut configurer Nagios de la manière suivantes. Il faut dans un premier temps éditer votre fichier de configuration des hosts (hosts.cfg par défaut) et y ajouter votre machine Windows:

define host {
use generic-host
host_name billgates
alias Ma machine Win
address 192.168.6.66
}

Puis ajouter les services offerts par NSClient (dans le fichier services.cfg):

# Affiche la version du NSClient
define service {
use generic-service
host_name billgates
service_description VERSION
check_command check_nt!CLIENTVERSION
}

# Temps écoulé depuis le dernier reboot (uptime)
define service {
use generic-service
host_name billgates
service_description UPTIME
check_command check_nt!UPTIME
}

# Charge CPU
# WARNING si charge > 80% pendant plus de 5 minutes
# CRITICAL si charge > 90% pendant plus de 5 minutes
define service {
use generic-service
host_name billgates
service_description CPU
check_command check_nt!CPULOAD!-l 5,80,90
}

# Etat de la mémoire vive libre
# WARNING si mémoire > 80%
# CRITICAL si mémoire > 90%
define service {
use generic-service
host_name billgates
service_description MEM
check_command check_nt!MEMUSE!-w 80 -c 90
}

# Etat de la mémoire disque libre (sur disque c:)
# WARNING si mémoire > 80%
# CRITICAL si mémoire > 90%
define service {
use generic-service
host_name billgates
service_description DISK
check_command check_nt!USEDDISKSPACE!-l c -w 80 -c 90
}

Il est également possible de surveiller l’état d’un service (SERVICESTATE) ou d’un processus (PROCSTATE).

Catégories
Blog

Un abonnement RSS à la carte ?

De nombreux blog abordent plusieurs sujets différents. Il peut être pénible pour un abonné d’avoir à écarter 10 billets pour en trouver 1 qui corresponde à son centre d’intérêt. Il est possible dans WordPress de proposer un abonnement non pas basé sur la totalité des billets écrits mais sur une catégorie bien précise.

Pour mettre en place ce type d’abonnement sélectif, il faut connaitre les URLs des différentes catégories de votre blog. Pour obtenir le flux RSS associé, il suffit d’y accoler « /feed » dans l’URL.

Par exemple, mon blog à une catégorie nommé Open-Source. L’URL permettant d’accèder aux billets de cette catégorie est:

http://blog.nicolargo.com/category/open-source

L’URL du flux RSS pour cette catégorie est donc:

http://blog.nicolargo.com/category/open-source/feed

Il existe de nombreux plugins exploitant cette fonction dont le très bon JPF Category Feeds (utilisé sur mon blog dans l’entête des billets). L’utilisation de ce dernier est très simple: il suffit d’insérer un code PHP au bon endroit dans votre thème. Par exemple pour afficher la liste des catégories avec un lien vers le flux RSS, il faut utiliser le code PHP:

< ? php jpf_catfeed('','/wp-images/icons/rss.gif', '', '', ', '); ? >

Bref une astuce bien pratique que j’aimerai bien trouver sur tout les blogs 😉

PS: connaissez-vous un plugin équivalent mais pour créer des flux RSS à partir des tags WordPress ?

Catégories
Blog

Le ZikiPlugin WordPress passe en version 0.5

Grosse activité sur le plugin Ziki pour WordPress que je développe. Pour rappel, ZikiPlugin est un widget pour WordPress afin d’afficher des informations stockées dans votre profil numérique Ziki. Le widget est téléchargeable à partir de cette page.

Les nouveautés de la version 0.5 sont:

  • amélioration de la présentation du widget
  • ajout de l’affichage de la citation (baseline)
  • lien vers le flux RSS
  • lien vers « add favorite » de Technorati
  • modification de la page de configuration du widget