
Windows Serveur 2012 : Active Directory et DNS
Windows Serveur 2012 : Active Directory et DNS Contrairement à Windows 2008 R2, il faut débord installer le rôle avant de créer L'active Directory. Pré-requis: - Une adresse IP statique doit être configuré. I - Installation du service Active directory et DNS Dans la console "Server Manager", rendez-vous dan[...]

Les types de comptes d’utilisateurs windows
Les types de comptes d’utilisateurs Windows Il existe plusieurs types de comptes d’utilisateurs dans Windows : Comptes Administrateur : Ils permettent aux utilisateurs d’ouvrir une session en tant qu’administrateurs. Ce compte peut exécuter n'importe quelle instruction sur le[...]

Comment tester un login Windows sans ouvrir de session
Comment tester un login Windows sans ouvrir de session. Voici un utilitaire qui me rend de grand service. testADLogin permet de tester la validité d’un compte dans une architecture Active Directory sans ouvrir de session. En plus le programme est hyper simple. Tout est dit dans le titre, vous allez pouvoir t[...]

Gérer Windows Server en ligne de commande
Pourquoi installer Windows Server Core ? Lorsque l’on installe Windows Server, deux options s’offrent à nous : une installation complète comprenant l’interface graphique, et une installation minimale – presque – sans interface graphique (core). Installer Windows Server en mode « core » ne signi[...]

Windows Serveur 2012 : DHCP
Windows Serveur 2012 : DHCP Ce tutoriel traitera des options de base du rôle DHCP, les configurations avancée sera traité dans un autre tutoriel. I) Installation du service DHCP Dans la console "Server Manager", rendez-vous dans la partie "Dashboard" puis cliquer sur "Add roles and features", La fenêtre ci-[...]

Simuler un réseau WAN entre deux réseaux LAN
Simuler un réseau WAN entre deux réseaux LAN A partir de sa version 2.6, le noyau Linux dispose d'une fonction permettant de simuler certaines caractéristiques comme un délais de transit, une perte de paquets ou même un débit maximal sur une simple interface réseau locale. J'avais déjà parlé de ce s[...]

Simuler un lien WAN sous Linux
Simuler un lien WAN sous Linux Il peut être utile, dans le cadre de tests applicatifs, de simuler sur votre réseau local (LAN), les caractéristiques d'une liaison distante (WAN). En effet, vos applications peuvent très bien fonctionner sur un réseau LAN et devenir inexploitable sur des liaisons WAN. Nous allons [...]

surveiller un réseau informatique, de nombreuses commandes
Normal 0 21 false false false FR X-NONE AR-SA [...]

Découpage d'une plage d'adresses
Découpage d'une plage d'adresses Ce chapitre va vous demander beaucoup d'attention et de réflexion. Il va y avoir pas mal de calculs et de notions à maîtriser. Ne les négligez pas, car la compréhension des notions abordées sera nécessaire pour la suite du cours ! Les découpages que nous allons aborde[...]

Scanner les adresses IP utilisées sur un réseau sans aucun
Si vous souhaitez scanner une plage d’adresse IP sur votre réseau afin de vérifier la disponibilité d’une ou plusieurs adresses ou inventorier vos machines, voici une astuce toute simple pour le faire sans outils spécifiques,depuis une invite de commande Windows. Pour cela nous allons utiliser [...]

Installation de Zimbra OSE 7.1.3 sous Ubuntu 10.04 LTS 64bi
Installation de Zimbra OSE 7.1.3 sous Ubuntu 10.04 LTS 64bits Dans ce premier tutoriel consacré à Zimbra vous allez voir comment installer une machine virtuelle sous Ubuntu 10.04 LTS pour accueillir notre serveur Zimbra. Environnement de test: Comme je l’ai dit dans mon premier article consacré à Zimbr[...]

Serveur DHCP sous Linux
Serveur DHCP sous Linux I. Présentation Un serveur DHCP permet de fournir automatiquement une configuration IP à une machine, par exemple à des ordinateurs, des smartphones, des imprimantes réseau, en gros tous ceux qui peut être connecté à un réseau. Cette configuration IP est composée : d’une adresse IP d’[...]

Configuration d'un serveur dédié de A à Z
Installation d'un serveur dédié de A à Z Installation, configuration et administration d'un serveur dédié Ces tutoriaux ont été réalisés sous Debian (versions Etch 4.0 et Lenny 5.0) mais peuvent être transposés à d'autres distributions Linux, notamment Ubuntu. Ils sont applicables aux serveurs dédiés 1&[...]

Installation pas à pas de Xen sous Debian
Installation pas à pas de Xen sous Debian Le but de ce billet est d'installer un serveur de de virtualisation Xen (Wiki) sur un système GNU/Linux Debian. Ce dernier pourra héberger de manière virtuelle (c'est à dire sur la même machine physique) un nombre important de serveurs, mutualisant ainsi votre [...]

Simuler un réseau WAN entre deux réseaux LAN
Simuler un réseau WAN entre deux réseaux LAN A partir de sa version 2.6, le noyau Linux dispose d'une fonction permettant de simuler certaines caractéristiques comme un délais de transit, une perte de paquets ou même un débit maximal sur une simple interface réseau locale. J'avais déjà parlé de ce s[...]

Installation pas à pas de Xen sous Debian
Installation pas à pas de Xen sous Debian Le but de ce billet est d'installer un serveur de de virtualisation Xen (Wiki) sur un système GNU/Linux Debian. Ce dernier pourra héberger de manière virtuelle (c'est à dire sur la même machine physique) un nombre important de serveurs, mutualisant ainsi votre [...]

Administration et utilisation d'Hyper-V R2
Administration et utilisation d'Hyper-V R2 Nous allons voir dans ce guide comment administrer Hyper-V R2. Une fois connecté sur votre console d'administration (Hyper-V Manager), toutes les actions disponibles se trouvent dans la partie droite de votre MMC (partie « Actions »). [...]
Installation et configuration de VMware Vcenter Server 5.0
Installation et configuration de VMware Vcenter Server 5.0 I - Pré-requis Le .NET Framework 3.5 ou plus doit etre installé sur le serveur, comme le montre l'image ci-dessous, II - Installation de la partie serveur Inséré le DVD ou monté l'image ISO sur le serveur, la fenêtre ci-dessous s'ouvre, cliquer su[...]

installer un hyperviseur VMware ESXi 5.5
Vmware est pour moi la meilleur solution de Virtualisation. Je profite justement d’une install d’un Hyperviseur Vmware Esxi 5.5 pour vous rédiger un petit tutoriel sur son installation. 1) Installation d’un hyperviseur ESXI -Tous d’abord inscrivez vous sur le site de Vmware est téléchargez gratuitement l’I[...]

mise en place du rôle Hyper-V sous Windows Serveur 2012 R2
mise en place du rôle Hyper-V sous Windows Serveur 2012 R2 ainsi que la configuration d’une machine virtuel. Rappel : Hyper-V, également connu sous le nom de Windows Server Virtualisation, est un système de virtualisation basé sur un rôle de Windows Server. Hyper-V vous permet de consolider les charges de[...]

Windows Serveur 2012 : Active Directory et DNS
Windows Serveur 2012 : Active Directory et DNS Contrairement à Windows 2008 R2, il faut débord installer le rôle avant de créer L'active Directory. Pré-requis: - Une adresse IP statique doit être configuré. I - Installation du service Active directory et DNS Dans la console "Server Manager", rendez-vous dan[...]

Lister les comptes ordinateurs inactifs de votre domaine av
Lister les comptes ordinateurs inactifs de votre domaine avec la commande DSQUERY Lister les comptes ordinateurs inactifs de votre domaine avec la commande DSQUERY. Dans ce tutoriel, nous utiliserons la commande dsquery, pour effectuer quelques tâches d’administrations sur notre domaine Acti[...]

Les types de comptes d’utilisateurs windows
Les types de comptes d’utilisateurs Windows Il existe plusieurs types de comptes d’utilisateurs dans Windows : Comptes Administrateur : Ils permettent aux utilisateurs d’ouvrir une session en tant qu’administrateurs. Ce compte peut exécuter n'importe quelle instruction sur le[...]

Comment tester un login Windows sans ouvrir de session
Comment tester un login Windows sans ouvrir de session. Voici un utilitaire qui me rend de grand service. testADLogin permet de tester la validité d’un compte dans une architecture Active Directory sans ouvrir de session. En plus le programme est hyper simple. Tout est dit dans le titre, vous allez pouvoir t[...]

Active Directory
Active Directory I. L’Active Directory L’Active Directory est un annuaire LDAP pour les systèmes d’exploitation Windows, le tout étant créé par Microsoft. Cet annuaire contient différents objets, de différents types (utilisateurs, ordinateurs, etc.), l’objectif étant de centraliser deux fonctionnalit[...]

la mise en place de MDT pour réaliser des déploiements d'OS
la mise en place de MDT pour réaliser des déploiements d'OS Ce qu’il vous faut Windows ADK http://www.microsoft.com/fr-fr/download/details.aspx?id=39982 Une ISO Windows 8.1 http://technet.microsoft.com/fr-fr/evalcenter/hh699156.aspx Plus d’info sur le choix de l’ISO : choix-iso-creation-mas[...]

Masquer la connexion Wifi au déploiement de Windows 8.1 ave
Masquer la connexion Wifi au déploiement de Windows 8.1 avec MDT 2013 Il y a un bug dans MDT 2013 à la création de la séquence de tâches pour déployer Windows 8.1. En effet la séquence de tâches utilise le mauvais modèle de fichier de réponse où il manque plusieurs propriétés dans la section <OOBE>, com[...]

Migration Windows XP vers Windows 8.1 avec MDT 2013
Migration Windows XP vers Windows 8.1 avec MDT 2013 Vous souhaitez réaliser une migration Windows XP vers Windows 8.1 avec MDT 2013? C’est possible, mais pas si simple. Avant d’entrer dans le vif du sujet, il faut voir les nouveautés de Windows ADK pour Windows 8.1 et les nouveautés MDT 2013. Étant donné qu’USMT[...]

Créer l’image de référence Windows 8.1 avec MDT 2013
Précédemment j’ai écrit comment déployer Windows 8.1 avec MDT 2013. Mais qu’en est-il de l’image de référence? Cette méthode consiste à déployer Windows 8.1, installer vos logiciels, configurer certains options puis exécuter sysprep et capturer l’image. C’est cette image que vous utiliserez par la suite en produc[...]

Déployer Windows 8.1 avec MDT 2013
Si vous êtes nouveau dans le déploiement de Windows, je recommande toujours Microsoft Deployment Toolkit (MDT) aux professionnels de l’informatique qui souhaitent personnaliser et déployer Windows dans leurs petites et moyennes organisations. Cet outil fournit une interface utilisateur facile à utiliser et automa[...]

Configurer et vérifier NTP dans le mode client et le mode s
Configurer et vérifier NTP dans le mode client et le mode serverSynchronisation temporelle NTP1. Network Time Protocol (NTP)Network Time Protocol (NTP) est un protocole TCP/IP qui permet de synchroniser à travers le réseau l’horloge locale des ordinateurs sur une date et une heure de référence. Le projet NTP propose u[...]

ROUTAGE STATIQUE
ROUTAGE STATIQUE Normal 0 21 false false false FR X-NONE AR-SA [...]

Configurer un tunnel IPSec Cisco entre deux réseaux locaux
Configurer un tunnel IPSec Cisco entre deux réseaux locaux Un petit poste "pense-bête" pour configurer un tunnel IPSec avec "pre-share key" (c'est à dire une clés secrète seulement connue par les deux sites) et cryptage AES 256 bits entre deux LAN connectés à Internet par des routeurs Cisco (compatible avec I[...]

Installer un serveur TFTP pour vos Cisco
Installer un serveur TFTP pour vos Cisco Un rapide billet pour rappeler les étapes nécessaires à la mise en place d'un serveur TFTP sur un système GNU/Linux (Debian Squeeze) afin de sauvegarder les configurations de vos routeurs Cisco. Installation du serveur TFTPD On utilise le paquet tftpd qui se trouve dan[...]

Cisco et le routage inter VLAN
Cisco et le routage inter VLAN Nous allons dans ce billet mettre en place une architecture réseau basée sur des équipements Cisco (un routeur 1841 et un switch 2960). Deux réseaux LAN différents (un pour les chefs, un autre pour le peuple) seront disponibles sur le même switch (en utilisant les fonctions VLAN). L[...]
Installation pas à pas de Nagios
Installation pas à pas de Nagios Trêve de blabla, entrons directement dans le vif du sujet avec l'installation du système d'exploitation et des pré-requis systèmes qui vont servir de base à notre serveur de supervision. Avant de commencer L’installation de Nagios est à ré[...]

Installation Opsview sur Ubuntu 8.04 LTS
Installation Opsview sur Ubuntu 8.04 LTS Pré-Requis L’installation Opsview demande quelques pré-requis, mais il s’avère qu’il est très simple de les satisfaire. Entrer le dépôt d’Opsview dans la source.list de APT Java est obligatoire (mais pas d’inquiétude, il sera installé avec les autres dépendances) [...]

Installation de Cacti sous Debian
Installation de Cacti sous Debian Les systèmes informatiques d'entreprise associent une diversité de services proposés (routage, proxy, serveur web...), à plusieurs types de réseaux (LAN, Intranet, DMZ, Internet...). La disponibilité et le bon fonctionnement de chaque machine participant à cet ensemble[...]

Le serveur de supervision libre – PART 4
Le serveur de supervision libre – PART 4 Nous arrivons bientôt à la fin de l'installation de notre serveur de supervision. Avec Nagios et Centreon il est parfaitement opérationnel. Je trouve cependant qu'il manque encore à Centreon des fonctions de graphes évoluées. C'est pour cela que je propose d'ajouter s[...]

Le serveur de supervision libre – PART 1
Le serveur de supervision libre – PART 1 Cela fait maintenant un petit moment que ce blog existe. Il aborde bien des sujets autours des logiciels libres mais il y en a un qui suscite plus d'intérêt que les autres: la supervision système et réseau. La complexité de ces logiciels et la faible docum[...]

Configurer pas-à-pas un Windows 2008 en version CORE
Configurer pas-à-pas un Windows 2008 en version CORE La nouvelle version du système d’exploitation serveur de Microsoft est vraiment géniale, à mon sens ! Pleins de nouveautés font leurs apparitions, comme le mode CORE, par exemple. Mais tout «indowsien/ne » que n[...]

Basculer entre les modes Graphique et Core sur Windows Serv
Basculer entre les modes Graphique et Core sur Windows Server 2012 Un serveur Windows Server 2008 ou Windows Server 2012 peut être installé dans un mode appelé mode Core ou Minimale. Il s’agit d’un mode d’installation épuré ou le Shell graphique n’est pas installé. Autrement dit il n’y a ni bu[...]

Windows Server 2012 : Activer l’interface graphique après u
Windows Server 2012 : Activer l’interface graphique après une installation en mode Core Si vous avez installé Windows Server 2012 en mode « Core » et que vous souhaitez finalement activer l’interface graphique, pas de panique, vous n’aurez pas à tout réinstaller ! Ce petit tutoriel vous explique [...]

Installer Windows Server en mode « core »
Installer Windows Server en mode « core » I. Les options d’installation Il existe deux manières d’utiliser en mode « core » : Windows Server Core « standard » Il s’agit tout simplement d’une installation minimale qui donne lieu à un système sans interface graphique et allégé tel [...]

Modifier la résolution de l’écran
Modifier la résolution de l’écran Pour changer la résolution d’écran, nous utiliserons la commande Set-DisplayResolution. En fait, c’est simple d’utilisation puisqu’il suffit de préciser la largeur et la hauteur de l’écran qui définiront la résolution. Par exemple, si l’on veut définir une résol[...]

Le JavaScript++
TypeScript est un langage très récent (février 2012) qui a été conçu par Anders Hejlsberg, également concepteur du langage C#. Le but premier de TypeScript est de rendre plus facile et plus fiable l'écriture de code en JavaScript pour des applications de grande ampleur. Cet article présentera de fa[...]

Lister les alias Powershell
Lister les alias Powershell Il est possible d’utiliser des Alias pour appeler les CmdLets de Powershell. Autrement dit il est possible d’utiliser un raccourcis plutôt qu’une commande parfois fastidieuse à taper ou à se souvenir. Voici comment obtenir la liste des Aliaspro[...]

exécuter un script PowerShell
Comment exécuter un script PowerShell Dans l’article comment installer et vérifier le bon fonctionnement de PowerShell, nous avions ouvert l’interpréteur de commande PowerShell et exécuté quelques instructions. Si l’utilisation de l’interpréteur suffit pour lancer quelques commandes occasionnelles,[...]

PowerShell : Arbre de processus
PowerShell : Arbre de processus Depuis quelques temps, je travaille avec PowerShell, le langage de scripts de Microsoft. C'est un langage que j'ai eu beaucoup de mal à prendre en main. En avançant dans l'apprentissage, on se rend compte que cet outil peut se révéler très puis[...]

Empêcher les mises à jour Adobe Reader DC
Empêcher les mises à jour Adobe Reader DC Un problème qui se pose lorsqu'on administre un parc informatique est celui des droits utilisateurs. Ne pas leur laisser les droits administrateurs est une règle de base. Cependant, cela peut parfois bloquer les mises à jour de c[...]

Zimbra OSE
Zimbra OSE Dans cette série de tutoriel consacré à Zimbra, nous allons voir comment intégrér un serveur mail Zimbra dans une infrastructure système déja existante et comment l’intégrer dans un domaine Active Directory. Cela va se passer en plusieurs étapes: Configuration du serveur pour installer Zi[...]

Zimbra: Installation et configuration de Zpush 2
Zimbra: Installation et configuration de Zpush 2 Bonjour, cela faisait longtemps que je n’avais pas fait de tutoriel pour Zimbra. Dans ce tuto je vais vous expliquer la configuration de Zpush 2 pour Zimbra 8 sous Ubuntu 12.04 LTS Qu’est-ce que ZPush? La version payante de Zimbra (NE) permet la synch[...]

Installation de Zimbra OSE 7.1.3 sous Ubuntu 10.04 LTS 64bi
Installation de Zimbra OSE 7.1.3 sous Ubuntu 10.04 LTS 64bits Dans ce premier tutoriel consacré à Zimbra vous allez voir comment installer une machine virtuelle sous Ubuntu 10.04 LTS pour accueillir notre serveur Zimbra. Environnement de test: Comme je l’ai dit dans mon premier article consacré à Zimbr[...]

la messagerie électronique
NOTIONS DE BASE RÉSEAU INFORMATIQUE réseau informatique Le réseau la reconnaissance des machines entre elles, le transport de l'information. L'adresse IP Les serveurs : à votre service ! Serveur / Client Les protocoles Exemple : Les serveurs mails 1. L'expéditeur écrit le courrier. 2. Il le post[...]

Qu’est-ce qu’un système PBX?
Qu’est-ce qu’un système PBX? Le terme PBX revient souvent dans les offres des fournisseurs téléphoniques, parfois sous la forme de PBX hébergé, PBX IP ou Cloud PBX. Pour ceux qui connaissent moins leur lexique téléphonique, l’offre d’un système PBX avec des fonctionnalités quelconque[...]

De la téléphonie IP très facilement avec Asterisk
De la téléphonie IP très facilement avec Asterisk Je vous propose en ce début d’année un tuto assez simple sur Asterisk. Si vous ne le connaissez pas, c’est un logiciel libre qui permet de faire de la téléphonie par IP, c’est assez sympa à faire ! Le tutorial a été réalisé sur une Debian 7.3 64bits m[...]

Qu’est ce que la Voix sur IP (VoIP)?
Qu’est ce que la Voix sur IP (VoIP)? La Voix sur IP, raccourci de voix par le protocole internet, est aussi connue sous le terme de VoIP. La voix sur IP se réfère à la diffusion du flux de la voix sur les réseaux Internet, au lieu des réseaux téléphoniques RTC traditionnels. Le protocole Internet (IP) a ét[...]

Installer Asterisk 13 sur Debian 7
Installer Asterisk 13 sur Debian 7 Bonjour à tous Nous allons voir dans ce tutoriel comment installer Asterisk 13 sur une machine virtuelle sous Debian 7. Installation d’ Asterisk Préparation à l’installation On commence par mettre à jour notre distribution et installer les dépendances nécéssair[...]

mettre en place sa téléphonie grâce à Asterisk
la ligne téléphonique d'une freebox (et sûrement des autres "box") à Skype en passant par les très nombreuses offres disponibles sur le Net, la VoIP (Voice over IP) est partout. Pris dans le contexte d'une architecture domestique ou d'entreprise, la VoIP (Voice over IP ou Voix sur IP) est un nouveau faisc[...]
Fortinet VPN SSL Vous souhaitez que vos utilisateurs nomades aient toujours accès aux applications présentes au sein de votre entreprise au travers d’un navigateur web? Dans ce tutoriel, je vais vous montrer comment configurer un Firewall Fortinet (Fortigate) [...]
Configurer et vérifier NTP dans le mode client et le mode server
Configurer et vérifier NTP dans le mode client et le mode serverSynchronisation temporelle NTP1. Network Time Protocol (NTP)Network Time Protocol (NTP) est un protocole TCP/IP qui permet de synchroniser à travers le réseau l’horloge locale des ordinateurs sur une date et une heure de référence. Le projet NTP propose u[...]
Création d’une règle de pare-feu avec un Fortigate
Création d’une règle de pare-feu avec un Fortigate I. Présentation Après avoir découvert ce qu’est un Fortinet dans un premier article, je voudrais vous montrer comment mettre en place une règle de Firewall avec quelques-unes des options de sécurité les plus utilisées pour la sécurité ou l’optimisation de n[...]
Qu’est-ce qu’un système PBX?
Qu’est-ce qu’un système PBX? Le terme PBX revient souvent dans les offres des fournisseurs téléphoniques, parfois sous la forme de PBX hébergé, PBX IP ou Cloud PBX. Pour ceux qui connaissent moins leur lexique téléphonique, l’offre d’un système PBX avec des fonctionnalités quelconque[...]
Le JavaScript++
TypeScript est un langage très récent (février 2012) qui a été conçu par Anders Hejlsberg, également concepteur du langage C#. Le but premier de TypeScript est de rendre plus facile et plus fiable l'écriture de code en JavaScript pour des applications de grande ampleur. Cet article présentera de fa[...]
De la téléphonie IP très facilement avec Asterisk
De la téléphonie IP très facilement avec Asterisk Je vous propose en ce début d’année un tuto assez simple sur Asterisk. Si vous ne le connaissez pas, c’est un logiciel libre qui permet de faire de la téléphonie par IP, c’est assez sympa à faire ! Le tutorial a été réalisé sur une Debian 7.3 64bits m[...]
Qu’est ce que la Voix sur IP (VoIP)?
Qu’est ce que la Voix sur IP (VoIP)? La Voix sur IP, raccourci de voix par le protocole internet, est aussi connue sous le terme de VoIP. La voix sur IP se réfère à la diffusion du flux de la voix sur les réseaux Internet, au lieu des réseaux téléphoniques RTC traditionnels. Le protocole Internet (IP) a ét[...]
Quelques astuces pour assurer la sécurité de vos données informatiques
Quelques astuces pour assurer la sécurité de vos données informatiques Sécurité informatique Chaque année, de nombreux utilisateurs et entreprises se font malheureusement piratés leurs données informatiques qu’elles soient personnelles ou professionnelles. Pour éviter e[...]
Installer une VM Linux sur ESXi
VMware vSphere ESXi Hypervisor comment configurer ESXi, le plus célèbre des virtualiseurs dit "barre métal" ou encore "hyperviseur type 1" (système dédié à la virtualisation) qui à une version gratuite limitée, mais largement utilisable pour un usage perso. Il a la particularité d'être extrêmement fiab[...]
VMware vSphere ESXi Hypervisor
VMware vSphere ESXi Hypervisor comment configurer ESXi, le plus célèbre des virtualiseurs dit "barre métal" ou encore "hyperviseur type 1" (système dédié à la virtualisation) qui à une version gratuite limitée, mais largement utilisable pour un usage perso. Il a la particularité d'être extrêmement fiable, [...]
Home » supervision »
Installation pas à pas de Nagios
Trêve de blabla, entrons directement dans le vif du sujet avec l'installation du système
d'exploitation et des pré-requis systèmes qui vont servir de base à notre serveur de supervision.
Avant de commencer
L’installation de Nagios est à réserver à des utilisateurs ayant des bases en système d'exploitation GNU/Linux. Si ce n'est pas le cas, je vous conseille de vous tourner vers FAN (Fully Automated Nagios), une distribution Linux avec les outils Nagios mais aussi Centreon pré-installés.
Installation du système d'exploitation GNU/Linux
J'ai choisi d'utiliser la distribution Ubuntu Server
Edition 10.04 LTS. Sans juger de la qualité
technique de cette distribution, je trouve que le
support Francophone est très bien fait notamment
par le biais de site comme Ubuntu-fr. Comme je le dis souvent sur mon blog, il est important d’utiliser une distribution avec laquelle on est “à l’aise”.
Installation de pré-requis système
On commence par mettre à jour le système en saisissant les commandes suivantes:
# sudo aptitude update
# sudo aptitude safe-upgrade
Dans cette série d'articles nous allons avoir besoin de compiler des sources de logiciels, il faut
donc dans un premier temps installer le package "build-essential" qui comporte les librairies de
développement de bases:
# sudo aptitude install build-essential
Nagios offre aux utilisateurs une interface de type Web. Il faut donc installer un serveur HTTP
sur notre machine de supervision. On ne va pas être très original... On va utiliser Apache 2.
Bien qu’il soit possible d’utiliser des solutions plus légères et rapide comme Nginx.
# sudo aptitude install apache2 wget
Certaines librairies sont également nécessaires au bon fonctionnement de Nagios et de ces
plugins :
# sudo apt-get install bind9-host dnsutils libbind9-60 libdns66 libisc60 libisccc60 libisccfg60 liblwres60 libradius1 qstat radiusclient1 snmp snmpd
Pour tester votre serveur Web, il faut commencer par le lancer...
# sudo apache2ctl start
Puis on ouvre un navigateur Web sur un PC connecté en réseau à votre serveur et on saisie
l’URL suivante: http://<adresse_ip_serveur>. Une page de bienvenue devrait s’afficher.
On installe les librairies qui serviront à Nagios pour afficher de beaux diagrammes de votre réseau:
# sudo aptitude install libgd2-noxpm-dev libpng12-dev libjpeg62 libjpeg62-dev
# sudo /usr/sbin/useradd nagios
# sudo passwd nagios
# sudo /usr/sbin/groupadd nagios
# sudo /usr/sbin/usermod -G nagios nagios
# sudo /usr/sbin/usermod -G nagios www-data
Il est maintenant temps de passer au chose sérieuse en installant le coeur de notre système:
le logiciel Nagios. A l'heure ou je rédige cette procédure d’installation, la dernière version de
Nagios est la 3.2.3 (à adapter si une nouvelle version est disponible).
Téléchargement des sources de Nagios
Il faut dans un premier temps se rendre à la page officielle des téléchargements, puis noter les derniers numéro de version de Nagios et des plugins Nagios (respectivement 3.2.3 et 1.4.14 lors de la rédaction de ce billet).
# sudo -s
# cd /usr/src
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-3.2.3.tar.gz
# wget http://prdownloads.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.15.tar.gz
Compilation de Nagios depuis les sources
# tar xzf nagios-3.2.3.tar.gz
# cd nagios-3.2.3
Nous allons lancer la compilation grâce aux commandes suivantes:
# ./configure --with-command-group=nagios
...
General Options:
-------------------------
Nagios executable: nagios
Nagios user/group: nagios,nagios
Command user/group: nagios,nagios
Embedded Perl: no
Event Broker: yes
Install ${prefix}: /usr/local/nagios
Lock file: ${prefix}/var/nagios.lock
Check result directory: ${prefix}/var/spool/checkresults Init directory: /etc/init.d
Apache conf.d directory: /etc/apache2/conf.d
Mail program: /bin/mail
Host OS: linux-gnu
# make all
# make install
# make install-config
# make install-commandmode
On installe ensuite le script de démarrage pour que Nagios se lance automatiquement avec votre serveur de supervision:
# make install-init
# ln -s /etc/init.d/nagios /etc/rcS.d/S99nagios
Il faut ensuite installer l’interface Web:
# make install-webconf
# sudo htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin REMARQUE: Saisir le mot de passe pour le compte nagiosadmin de l'interface Web
# /etc/init.d/apache2 reload
Compilation des plugins Nagios depuis les sources
# sudo aptitude install fping libnet-snmp-perl libldap-dev libmysqlclient-dev libgnutls-dev libradiusclient-ng-dev
# cd /usr/src
# tar xzf nagios-plugins-1.4.15.tar.gz
# cd nagios-plugins-1.4.15
# ./configure --with-nagios-user=nagios --with-nagios-group=nagios
# make
# make install
Installation automatique depuis un script
Il y a plusieurs méthodes pour installer Nagios, le système de supervision libre, sur un nouveau serveur. La plus simple est d'utiliser les dépôts officiels de votre distribution GNU/Linux, avec le désavantage de ne pas avoir les dernières versions disponibles. La seconde que nous avons vu dans le chapitre précédant permet d’effectuer une installation depuis les sources.
Je vous propose dans ce chapitre une troisième voie, qui mixe la simplicité de la première méthode et la finesse de la seconde. J'ai en effet développé un petit script (sous licence GPL) permettant d'automatiser l'installation d'un serveur Nagios complet sur une distribution GNU/ Linux Ubuntu (j'ai validé le script sur Ubuntu Desktop et Ubuntu Server). Libre à vous de modifier ce script pour l'adapter à vos besoins. Si des âmes charitables veulent modifier le script pour l'adapter à d'autres distribution GNU/Linux ou BSD, je suis preneur pour les mettre en téléchargement sur Internet.
Récupération du script d’installation automatique
On lance la commande suivante pour télécharger le script sur son serveur et le rendre exécutable:
# wget http://svn.nicolargo.com/nagiosautoinstall/trunk/nagiosautoinstall-ubuntu.sh # chmod a+x nagiosautoinstall-ubuntu.sh
PS: vous pouvez télécharger le script directement par l'URL suivante:
http://svn.nicolargo.com/nagiosautoinstall/trunk/nagiosautoinstall-ubuntu.sh
Exécution du script d’installation automatique
# sudo ./nagiosautoinstall-ubuntu.sh
Informations sur l'installation
Dans la version actuelle du script la configuration finale est la suivante:
Nagios Core version
Nagios Plugins version
Utilisateur système:
Groupe système:
3.2.3
1.4.15
nagios
nagios
URL de l'interface Web: http://localhost/nagios/
Utilisateur pour l'interface Web: nagiosadmin
Premier test de Nagios
Nagios est distribué avec une configuration initiale opérationnelle (elle permet notamment de surveiller... son serveur de supervision).
Nous allons donc tester les fichiers de configuration grâce à la commande suivante:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Si tout ce passe bien vous devriez avoir le message suivant qui s"affiche:
Total Warnings: 0
Total Errors: 0
Things look okay - No serious problems were detected during the pre-flight check
Ensuite, on peut lancer le serveur Nagios:
# /etc/init.d/nagios start
Si le message suivant s'affiche, vous pouvez l’ignorer, ce n'est pas important...
Starting nagios:No directory, logging in with HOME=/
Il ne reste plus qu'à lancer un navigateur Web sur un PC de votre réseau et à saisir l'URL
suivante (attention de bien mettre le / à la fin de l’URL):
Après une bannière d'authentification (login: nagiosadmin / password: <votremotdepasse>), vous devriez voir s'afficher:
Puis le détail des services supervisés en cliquant sur "localhost":
Vous pouvez dès à présent configurer Nagios à votre besoin.
Maintenir à jour son serveur Nagios, la
Quand une nouvelle version de Nagios est mise à disposition, il est conseiller de mettre à jour vos serveurs de supervision. Ce chapitre a pour but de détailler la procédure à suivre pour mettre à jour son serveur Nagios entre une version 3.x et une version 3.y (pour une migration entre une version 2.x et une version 3.y, vous pouvez consulter ce tutorial).
Backup de l'ancienne version
Il est préférable de sauvegarder son ancienne configuration... au cas ou..
# cd /tmp
# tar zcvfh ./nagios-backup.tgz /usr/local/nagios --exclude var/ archives
# cp /usr/local/nagios/share/side.php side.php.MODIF
Si quelque chose se passe mal au niveau de la mise à jour, il sera toujours possible de revenir en arrière en saisissant les commandes suivantes:
# cd /tmp
# tar zxvf ./nagios-backup.tgz
Téléchargement de la dernière version de Nagios
Il faut au préalable des opérations suivantes, se loguer en tant qu'utilisateur nagios afin que les fichiers soient générés avec les bons droits.
# sudo - nagios
Puis télécharger la dernière version stable (3.2.0 au moment de l'écriture de ce billet).
# mkdir src
# cd src
# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios- 3.2.0.tar.gz
Compilation et installation
# tar zxvf nagios-3.2.0.tar.gz
# cd nagios-3.2.0
# ./configure --with-command-group=nagios
# make all
Si la compilation se termine sans erreur, vous pouvez l'installer sur votre système, sinon je vous
conseille de poster votre erreur dans le forum officiel de Nagios:
# make install
# cp /usr/local/nagios/share/side.php /tmp/side.php.DEFAULT
# cp /tmp/side.php.MODIF /usr/local/nagios/share/side.php
Vérification de la configuration et redémarrage de
Nagios
On va dans un premier temps vérifier que nos fichiers de configurations sont compatibles avec cette nouvelle version:
# /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg
Si vous avez ce rapport à la fin:
Total Warnings: 0Total Errors: 0
C’est que tout est OK !
Finalement on relance Nagios (en repassant en mode root) dans la nouvelle version:
# /etc/init.d/nagios restart
Mise à jour des plugins de Nagios
Comme vous le savez tous (ou pas), Nagios est composé d'un coeur (Nagios le bien nommé actuellement en version 3.x) et de packages d'extensions (NDO, Nagios-plugins...).
Téléchargement des plugins
Il faut au préalable des opérations suivantes, se loguer en tant qu’utilisateur nagios afin que les fichiers soient générés avec les bons droits.
Sur Fedora:
su -l nagios
Sur Ubuntu ou Debian:
sudo -s nagios
Puis télécharger la dernière version stable des plugins (1.4.12 au moment de l’écriture de ce
billet).
mkdir src
cd src
wget http://heanet.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.12.tar.gz tar zxvf nagios-plugins-1.4.12.tar.gz
cd nagios-plugins-1.4.12
On commence par compiler les plugins:
./configure
make
puis on installe en lieu et place des anciens plugins:
make install
exit
Certains plugins (check_dhcp) nécessitent les droits root pour être installés:
su - root
make install-root
exit
Redémarrage de Nagios
Afin que les plugins soit pris en compte, il faut redémarrer Nagios en utilisant les commandes suivantes:
Sur Fedora:
service nagios restart
Sur Ubuntu ou Debian:
/etc/init.d/nagios restart
Et voili, un beau Nagios et ses plugins à jour !
Maintenir à jour son serveur Nagios, la méthode automatique
Ce script est une synthése des articles "Comment mettre à jour son serveur Nagios ?" et "Mise à jour des plugins Nagios". Il ne doit être utilisé que si vous avez installé Nagios à partir de cette procédure ou de ce script d'installation automatique.
Le script est distribué sous licence GPL. Libre à vous de le modifier pour l'adapter à vos besoins. Si des âmes charitables veulent modifier le script pour l'adapter à d'autres distribution GNU/Linux ou BSD, je suis preneur pour les mettre en téléchargement sur mon serveur.
Récupération du script
On lance la commande suivante pour télé-charger le script sur son serveur et le rendre exécutable:
wget http://svn.nicolargo.com/nagiosautoinstall/trunk/nagiosautoupdate-ubuntu.sh chmod a+x nagiosautoupdate-ubuntu.sh
PS: vous pouvez télécharger le script directement par l'URL suivante:
http://svn.nicolargo.com/nagiosautoinstall/trunk/nagiosautoupdate-ubuntu.sh
Lancement du script
Il suffit ensuite de lancer le script et de répondre aux questions posées par le système:
sudo ./nagiosautoupdate-ubuntu.sh
Et si la mise à jour se passe mal ?
Le script archive la configuration n-1, il suffit donc d'ouvrir un terminal et de saisir les commandes suivantes pour revenir dans l'ancienne version:
cd /
sudo tar zxvf /tmp/nagios-backup.tgz
Informations sur la mise à jour
Nagios Core version 3.2.3 Nagios Plugins version 1.4.15
Configuration de Nagios
Le passage en version 3.0 de Nagios (l'outil de monitoring système et réseau) a apporté son lot de nouveautés. L'une d'elle est la réorganisation des fichiers de configuration. Nous allons dans ce billet détailler cette structure et préparer notre configuration de Nagios pour qu'elle soit facile à administrer...
Arborescence des fichiers de configuration
Si vous avez suivi ce tutorial pour l'installation de Nagios 3 depuis les sources, vos fichiers de configuration (fichiers se terminant avec l'extension .cfg) se trouve sous le répertoire/usr/local/ nagios/etc/.
Personnellement, j'utilise la structure suivante:
cgi.cfg
> Définition des paramètres des scripts CGI. Vous pouvez utiliser le fichier fourni par défaut par Nagios.
nagios.cfg
> Fichier de configuration de Nagios. A modifier par vos soins selon votre configuration et l'arborescence choisie. Vous pouvez partir du fichier fourni en standard par Nagios et le modifier selon votre configuration.
resource.cfg
> Définition des ressources externes. Vous pouvez utiliser le fichier fourni par défaut par Nagios.
objects/
> C'est dans ce sous-répertoire que sont centralisé les définitions des machines et services à surveiller part votre serveur Nagios.
objects/commands.cfg
> C'est là que nous allons définir les commandes utilisées par Nagios pour interroger vos machines. Vous pouvez partir du fichier fourni en standard par Nagios et le modifier selon votre configuration.
objects/contacts.cfg
> Dans ce fichier, il faut configurer les contacts pouvant être prévenu en cas d'alerte. Vous pouvez partir du fichier fourni en standard par Nagios.
> Ce fichier est à créer, il comportera la définition de toutes vos machines clients à surveiller (c'est à dire les postes utilisateurs). Ce fichier n'existe pas dans la structure de base de Nagios.
objects/hostservers.cfg
> Ce fichier est à créer, il comportera la définition de toutes vos machines serveurs à surveiller (c'est à dire les serveurs Web, DNS, DB...). Ce fichier n'existe pas dans la structure de base de Nagios.
objects/localhost.cfg
> Ce fichier est là pour que Nagios puisse surveiller le serveur sur lequel il est installé (localhost). Vous pouvez partir du fichier fourni en standard par Nagios.
objects/templates.cfg
> C'est le fichier ou se trouve la définition des "templates". Vous pouvez partir du fichier fourni en standard par Nagios.
objects/timeperiods.cfg
> Ce fichier défini les périodes de temps. Vous pouvez partir du fichier fourni en standard par Nagios.
objects/network.cfg
> Ce fichier est à créer, il comporte la définition de toutes les machines composant l'infrastructure de votre réseau (routeur, switch ou hub, borne Wifi ...)
C'est une bonne base de départ mais vous pouvez l'adapter en fonction de vos besoins (par exemple avec un découpage plus fin au niveau des hosts).
Attention aux droits sur ces fichiers. Il doivent être lisible par l'utilisateur système avec lequel le daemon Nagios est lancé (user nagios par défaut). Pour être sur de ne pas avoir de problème, je vous conseille de taper les commandes suivantes quand vous avez fini la configuration de vos fichiers:
# cd /usr/local/nagios/etc
# chown -R nagios *
Configuration des fichiers cgi.cfg, nagios.cfg et
resource.cfg
Ces 3 fichiers définissent la configuration "maître" de Nagios. Ils sont donc à configurer de manière préalable à tous les autres fichiers .cfg.
Configuration de Nagios: nagios.cfg
log_file=/var/log/nagios.log
Attention, ce fichier doit être en lecture/écriture l'utilisateur avec lequel le daemon Nagios est
lancé (user nagios par défaut).
La deuxième chose à faire est de définir l'arborescence des fichiers de configuration. Dans notre cas, cela donne:
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
cfg_file=/usr/local/nagios/etc/objects/contacts.cfg
cfg_file=/usr/local/nagios/etc/objects/hostclients.cfg
cfg_file=/usr/local/nagios/etc/objects/hostservers.cfg
cfg_file=/usr/local/nagios/etc/objects/localhost.cfg
cfg_file=/usr/local/nagios/etc/objects/templates.cfg
cfg_file=/usr/local/nagios/etc/objects/timeperiods.cfg
cfg_file=/usr/local/nagios/etc/objects/network.cfg
Les options suivantes permettent de configurer l'utilisateur et le groupe système utilisés
pour lancer Nagios. Je vous conseille de laisser les valeurs par défaut (sinon il faut créer les
utilisateurs).
nagios_user=nagios
nagios_group=nagios
Je vous laisse consulter les autres options de ce fichier.
Configuration des CGI: cgi.cfg
Comme vous le savez, Nagios se base sur une interface Web pour générer ses rapports. Cette interface Web est générée dynamiquement par des scripts CGI. Le fichier cgi.cfg à pour but de configurer ces CGI selon votre configuration. Là encore, je vous conseille de partir du fichier fourni par défaut.
On commence par définir l'emplacement du fichier nagios.cfg. En effet ce dernier doit être lisible par les CGI.
main_config_file=/usr/local/nagios/etc/nagios.cfg
url_html_path=/nagios
Enfin, il est fortement conseiller d'utiliser une authentification (même si c'est une basique
authentification HTTP) pour accéder à Nagios:
use_authentication=1
authorized_for_system_information=admin
Configuration des ressources externes: resource.cfg
Nagios utilise un système de plugins. Le fichier resources est là pour définir ou sont ces plugins. Le fichier fourni en standard défini un moyen pour accèder aux plugins standards:
$USER1$=/usr/local/nagios/libexec
Libre à vous d'ajouter d'autres répertoires de plugins.
Configuration des objets
Entrons dans le vif du sujet avec la définition des fichiers de configuration des objets composants notre réseau à surveiller. On commence par les fichiers génériques: commands.cfg, contacts.cfg, templates.cfg et timeperiods.cfg
Vous pouvez utiliser les fichiers fournis en standard avec Nagios. Pour l'adapter à notre besoin, j'ai juste modifié le fichier templates.cfg pour y ajouter les templates suivants:
Un premier template pour les machines de type Linux:
# Linux host definition template - This is NOT a real host, just a template!
define host{
name linux-host ; The name of this host template
use generic-host ; This template inherits other values from the generic-
host template
check_period 24x7 ; By default, Linux hosts are checked round the clock
check_interval 5 ; Actively check the host every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals
max_check_attempts 10 ; Check each Linux host 10 times (max)
check_command check-host-alive ; Default command to check Linux hosts
; Note that the notification_period variable is being overridden from
; the value that is inherited from the generic-host template! notification_interval 120 ; Resend notifications every 2 hours notification_options d,u,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A
TEMPLATE!
action_url /nagios/pnp/index.php?host=$HOSTNAME ; PNP
# BSD host definition template - This is NOT a real host, just a template!
define host{
name bsd-host ; The name of this host templateuse linux-host ; This template inherits other values from the generic- host template
}
# Apple host definition template - This is NOT a real host, just a template!
define host{
name apple-host ; The name of this host template
use bsd-host ; This template inherits other values from the generic-host
template
}
Pour les machines sous Windows:
define host{
name windows-host ; The name of this host template
use generic-host ; Inherit default values from the generic-host template check_period 24x7 ; By default, Windows servers are monitored round the clock
check_interval 5 ; Actively check the server every 5 minutes retry_interval 1 ; Schedule host check retries at 1 minute intervals max_check_attempts 10 ; Check each server 10 times (max)
check_command check-host-alive ; Default command to check if servers are "alive"
notification_period 24x7 ; Send notification out at any time - day or night
notification_interval 30 ; Resend notifications every 30 minutes notification_options d,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE
Et enfin pour les machines composant votre infrastructures réseaux:
define host{
name network-host ; The name of this host template
use generic-host ; Inherit default values from the generic-host template check_period 24x7 ; By default, switches are monitored round the clock check_interval 5 ; Switches are checked every 5 minutes
retry_interval 1 ; Schedule host check retries at 1 minute intervals max_check_attempts 10 ; Check each switch 10 times (max)
check_command check-host-alive ; Default command to check if routers are "alive"
notification_period 24x7 ; Send notifications at any time notification_interval 30 ; Resend notifications every 30 minutes notification_options d,r ; Only send notifications for specific host states
contact_groups admins ; Notifications get sent to the admins by default register 0 ; DONT REGISTER THIS - ITS JUST A TEMPLATE
}
Définition des machines réseaux: network.cfg
On va utiliser le template network-host et définir chaque noeud de votre réseau (routeur, switch...). Il faut bien sur que ces machines est une adresse IP. Les services à surveiller dépendent de votre configuration (par exemple la MIB des routeurs Cisco est très verbeuse). Par défaut Nagios "pingue" les machines et affiche leur status (UP/DOWN). Mais on peut allre bien plus loin, apr exemple en mettant des alertes si un interface réseau est saturé, si la charge CPU de votre Firewall devient trop grande...
On utilise l'option hostgroups pour insérer le serveur dans le groupe monreseau. Un exemple de définition pour un routeur Cisco et un switch réseau:
define host{
use network-host
host_name monboswitch
alias Switch réseau 100 Mbps
address 192.168.0.254
hostgroups monreseau
}
define host {
use network-host
host_name monborouteur
alias Routeur acces Internet
address 192.168.0.1
parents monboswitch
hostgroups monreseau
define host{
use network-host
host_name internet
alias Liaison Internet (ping Google)
address www.google.fr
parents monborouteur
hostgroups monreseau
}
Définition des machines serveurs: hostservers.cfg
On va utiliser un des templates (linux|bsd|apple|windows)-host et définir tous les serveurs de votre réseau. Pour chaque serveur, on va définir dans le même fichier (c'est une nouveauté par rapport à Nagios 2.x) les services à surveiller (par exemple on va vérifier que le serveur Web est bien lancé grâce au plugin check_http).
On utilise également l'option hostgroups pour insérer le serveur dans le groupe messerveurs.
define host{
use linux-host
host_name monboserveur
alias Serveur Web
address 192.168.0.100
parents monboswitch
hostgroups messerveurs
}
define service{
use generic-service
host_name monboserveur
service_description HTTP
check_command check_http!8080
}
Définition des machines clientes (utilisateurs): hostclients.cfg
On va utiliser un des templates (linux|bsd|apple|windows)-host et définir toutes les machines
On utilise également l'option hostgroups pour insérer le serveur dans le groupe mesclients (il est possible de faire appartenir un même host à plusieurs groupes en listant dans les même options les différents groupes séparés par des virgules).
define host{
use apple-host
host_name monboportable
alias MacBookPro
address 192.168.0.200
parents monboswitch
hostgroups mesclients
}
define host{
use linux-host
host_name monbopc
alias Ubuntu
address 192.168.0.201
parents monboswitch
hostgroups mesclients
}
Durées et fréquences des checks
Pour surveiller votre réseau, Nagios utilise un certain nombre d'objets (machines, services, contacts...). Par défaut, un objet hérite une grande partie de ses paramètres du template nommé "generic-*". Nous allons dans ce billet nous focaliser sur les notions de temps et de fréquences de ces objets.
Pour rappel, à un instant t, un objet peut avoir un des les états suivants:
● OK: tout va bien, votre objet fonctionne correctement
● WARNING: votre objet ne fonctionne pas nominalement ● CRITICAL: votre objet ne fonctionne plus
● UNKNOWN: impossible de déterminer l'état de votre objet
Un exemple: imaginons un service qui surveille la débit de votre liaison Internet...
● OK: le débit est inférieure à 70% de la bande passante totale
● WARNING: la débit est supérieure à 70% de la bande passante totale
● CRITICAL: la liaison Internet est DOWN (plus de connectivité avec Internet) ● UNKNOWN: impossible de récupérer les valeurs du débit
La variable check_period permet de définir l'intervalle de temps durant lequel l'objet est actif. On définie une période de temps en utilisant la structure timeperiod.
Par exemple pour définir une période de temps correspondant aux heures ouvrées de votre entreprise vous pouvez utiliser la définition suivante:
define timeperiod { timeperiod_name workhours
alias Heures ouvrées
monday 09:00-18:00 ; Lundi
tuesday 09:00-18:00; Mardi
wednesday 09:00-18:00; Mercredi
thursday 09:00-18:00; Jeudi
Friday 09:00-18:00; Vendredi
}
La déclaration de cette période de temps dans notre objet (par exemple un service) se fera ainsi:
define service {
...
check_period workhours}
Définition des intervalles de vérification d'un objet
Quand on se trouve dans une période d'activité d'un service, plusieurs paramètres rentrent en jeu pour fixer la durée et la fréquence des vérifications (checks) du objet en question. Quand un objet est OK, il est vérifié toutes les check_interval minutes. Si il passe WARNING, CRITICAL ou UNKNOWN, il est alors vérifié max_check_attempts fois à un intervalle deretry_interval minutes. Si l'état de l'objet n'est pas revenu à OK au bout desmax_check_attempts essais, l'intervalle de vérification redevient de check_interval minutes...
Je sais ce n'est pas très simple mais ce schéma devrait vous aider à comprendre.
define service {
...
check_interval 10 retry_interval 2 max_check_attempts 3}
Et les notifications ?
Il existe des variables permettant de fixer comment les notifications sont remontés aux administrateurs.
La première variable est first_notification_delay. Elle permet de définir le temps (en secondes) que Nagios doit attendre avant d'envoyer une notification quand un objet passe d'un état OK à un état WARNING, CRITICAL ou UNKNOWN. Une valeur de 0 permet d'envoyer la notification dès ce changement d'état. La variable notification_interval permet, en cas de problème sur
Par exemple, pour que la première notification se fasse immédiatement, sans répétition, un objet doit être défini ainsi:
define service {
...
first_notification_delay 0 notification_interval 0}
Nagios et les greffons (aka plugins)
A mes yeux, la principale force de Nagios est sa grande modularité qui lui permet de s'adapter aux besoins des utilisateurs. Il est ainsi possible de surveiller un grands nombres de paramètres sur les machines de votre réseau. Nous allons dans ce billet évoquer les différentes méthodes que l'on peut utiliser pour récupérer ces informations.
Le protocole SNMP
C'est LE protocole pour la gestion de réseaux. Basée sur UDP (port 161), ce protocole de communication permet la remontée d'informations stockées dans la table MIB ("Management Information Base") des machines. SNMP se base sur une architecture client (Nagios) / serveur (la machine à surveiller). Il est donc nécessaire que vos machines soient compatibles SNMP. C'est le cas de la plupart des équipements réseaux de type routeurs, commutateurs Ethernet...
Sur les serveurs de type Linux, il suffit d'installer le daemon snmpd de la suite Open-SNMP. Sur Windows, il est également possible d'installer le daemon Net-SNMP. Enfin, Mac OS X inclue un daemon SNMP (UCD-SNMP), il suffit de suivre cette procédure pour l'activer.
Les plugins locaux
En standard, SNMP ne remonte que des informations systèmes basiques. Pour aller plus loin et surveiller des processus plus complexe, Nagios à mis en place un système de type plugins locaux. Un plugin local est un script localisé sur le serveur Nagios (/usr/lib/nagios/plugins sous Linux, c'est pour cela que l'on dit qu'il est local).
Ce script, lancé à la demande de Nagios, doit retourner un code dont la signification est la suivante:
● Code0:OK-Toutvabien ● Code 1: WARNING - Alerte
● Code 3: UNKNOWN - Problème lors de l'exécution du plugin
En plus de ces codes, un plugins peut fournir d'autres informations (sous la forme d'une chaine de caractères) qui seront affichées à coté du statut de la machine.
Les plugins actifs avec NRPE
A la différence des plugins locaux, le plugin NRPE permet l'exécution de plugins dit actifs directement sur les machines à surveiller.
L'architecture est la suivante (schéma trouvé sur le site officiel de Nagios):
● le daemon NRPE hébergé sur la machine H, reçoit la requête d'exécution du plugin P ● le plugin P est exécuté sur la machine H
● le daemon NRPE de la machine H envoie le résultat du plugin P au serveur Nagios ● le serveur Nagios interprète les résultats retournés par le pugin P
Les plugins passifs avec NSCA
Comme l'on vient de le voir NRPE est déclenché à l'initiative du serveur Nagios. Ce mode de fonctionnement peut poser problème, par exemple dans le cas ou les machines à surveiller son derrières un réseau sécurisé par un Firewall ou si le processus à surveiller demande une fréquence d'exécution très courte. Le plugin NSCA répond à ce problème en proposant l'exécution de plugins passifs sur les machines à surveiller.
Les plugins NRPE et NSCA ne sont disponibles que pour Linux et Mac OS X. Si vous souhaitez surveiller des machines sous Windows (il vaut mieux les surveiller de prêt ces bêtes là...) , il va falloir utiliser le plugin NSClient.
Quelques exemples de plugins 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.
● 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
Superviser un serveur Web
Nous utilisons pour cela le plugin check_http qui permet de tester si un serveur HTTP est bien lancé sur la machine à superviser.
Exemple:
define command{
command_name check_http
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$
}
define host{
use generic-host
host_name monserveur
alias Serveur Web
address 192.168.0.100
define service{
use generic-service
host_name monbeauserveur
service_description HTTP
check_command check_http
}
Le plugin utilise par défaut une requête sur le port TCP/80. Pour changer ce port, vous pouvez utiliser l’option -p et créer une nouvelle commande (à utiliser dans le check_command de votre nouveau service):
define command{
command_name check_http_8080
command_line $USER1$/check_http -I $HOSTADDRESS$ $ARG1$-p 8080
}
Superviser un serveur Web sécurisé
Si votre serveur Web est sécurisé avec le protocole SSL. Il faut créer une nouvelle commande basée sur check_http.
Exemple:
define command{
command_name check_http
command_line $USER1$/check_http -S -I $HOSTADDRESS$ $ARG1$
}
define host{
use generic-host
host_name monserveur
alias Serveur Web
address 192.168.0.100
}
define service{
use generic-service
host_name monbeauserveur
service_description HTTPs
check_command check_https
Pour surveiller un serveur Mail proposant les protocoles SMTP, POP3 et IMAP (merciDovecot), nous allons utiliser les plugins check_smtp, check_pop et check_imap.
Exemple:
define host{
use generic-host
host_name monserveur
alias Serveur de messagerie
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description SMTP
check_command check_smtp
}
define service{
use generic-service
host_name monserveurmail
service_description POP
check_command check_pop
}
define service{
use generic-service
host_name monserveurmail
service_description IMAP
check_command check_imap
}
Superviser un serveur Asterisk
Pour surveiller un serveur SIP (par exemple votre serveur Asterisk), nous allons utiliser le plugin check_sip. n’étant pas fourni en standard, il faut d’abord l’installer puis le configurer avant de pouvoir l’utiliser comme service.
Installation:
cd /usr/src
wget http://www.bashton.com/downloads/nagios-check_sip-1.2.tar.gz
tar zxvf nagios-check_sip-1.2.tar.gz
cd nagios-check_sip-1.2
cp check_sip /usr/local/nagios/libexec/
chown apache:nagios /usr/local/nagios/libexec/check_sip
Configuration (à ajouter dans votre fichier commands.cfg de Nagios):
###### SIP #####
define command{
command_name check_sipcommand_line $USER1$/check_sip -H $HOSTADDRESS$ -u sip:user@mondomaine.com
}
Il faut penser à mettre un nom d’utilisateur SIP valide après l’option -u. Et enfin un exemple de service:
define host{
use generic-host
host_name monserveur
alias Serveur SIP
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description SIP
check_command check_sip
}
Superviser un serveur de fichiers
Un serveur de fichier peut se baser sur de nombreux protocoles. Nous allons nous focaliser sur un serveur Windows ou Linux (avec Samba), souvent utilisé en entreprise grâce au protocole SMB.
Configuration (à ajouter dans votre fichier commands.cfg de Nagios):
###### SMB #####
define command{
command_name check_smb
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 445
define host{
use generic-host
host_name monserveur
alias Serveur de fichiers
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description SMB
check_command check_smb
}
Superviser un serveur LDAP
Un serveur est souvent le coeur d'un système d'information. C'est donc un poihnt critique à surveiller dans Nagios. Nous allons pour celà utiliser le service check_ldap qui prend en paramètres l'adresse du serveur LDAP ainsi que le DN à tester.
Configuration (à ajouter dans votre fichier commands.cfg de Nagios):
###### LDAP #####
define command{
command_name check_ldap
command_line $USER1$/check_ldap -H $HOSTADDRESS$ -b $ARG1$
}
Exemple de service:
define host{
use generic-host
host_name monserveur
alias Serveur LDAP
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description LDAP
check_command check_ldap!"dc=mondomaine,dc=com"
MySQL et pgSQL sont des serveurs de base de données open-source très répandus. Il existe donc deux plugins spécifiques check_mysql et check_pgsql disponible en standard avec Nagios. Personnellement, je n'utilise pas ces deux plugins car ils peuvent présenter une faille dans votre réseau. En effet, il utilise une requête SQL nécessitant un login/password. Hors ce couple apparaîtra dans la liste des processus lors de l'éxecution du plugin par Nagios. Je préfère donc utiliser des plugins basés sur check_tcp.
Configuration (à ajouter dans votre fichier commands.cfg de Nagios):
###### SQL #####
define command{
command_name check_pgsql
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 5432
}
define command{
command_name check_mysql
command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 3306
}
Exemple de service:
define host{
use generic-host
host_name monserveur
alias Serveur MYSQL
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description MYSQL
check_command check_mysql
}
Superviser un serveur réseau
DHCP et DNS sont la base de votre infrastructure réseau. Nous allons donc utiliser les pluginscheck_dns et check_dhcp pour les surveiller de prêt.
###### DNS #####
define command{
command_name check_dns
command_line $USER1$/check_dns -H www.google.fr -s $HOSTADDRESS$
}
###### DHCP #####
define command{
command_name check_dhcp
command_line $USER1$/check_dhcp -s $HOSTADDRESS$
}
Pour le check_dns, Je vous conseille de mettre un serveur qui ne risque pas de disparaître du jour au lendemain dans les DNS mondiaux en paramètre -H.
Exemple de service DNS:
define host{
use generic-host
host_name monserveur
alias Serveur DNS
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description DNS
check_command check_dns
}
Exemple de service DHCP:
define host{
use generic-host
host_name monserveur
alias Serveur DHCP
address 192.168.0.100
}
define service{
use generic-service
host_name monserveur
service_description DHCP
check_command check_dhcp
Supervision de disques RAID hardware HP Proliant
Le but est de surveiller le bon état des disques RAID d'un serveur HP Proliant sour FreeBSD. Nous allons passé par un script lancé par NRPE.
Configuration à faire sur le serveur ou se trouve les disques RAID:
cd /usr/local/libexec/nagios/
wget http://www.klintrup.dk/soren/proliant/check_smartarray.sh
chmod 555 check_smartarray.sh
Il faut également modifier ce script pour qu'il soit exécutable par l'utilisateur Nagios (le user
utilisé par NRPE).
Ligne 6> PATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin"
Ligne 7> DEVICES="$(sudo camcontrol devlist|grep "COMPAQ RAID"|sed - Ee 's/.*(pass[0-9]{1,3}).*/\1/')"
Ligne 14> DEVICENAME="$(sudo camcontrol devlist|grep ${DEVICE}|sed - Ee 's/.*(da[0-9]{1,3}).*/\1/')"
Ligne 15> DEVICESTRING="$(sudo camcontrol inquiry ${DEVICE} -D|sed -n -e 's/ ^[^<]*<\([^>]*\)>.*$/\1/p')"
Puis enfin ajouter la ligne suivante au fichier /usr/local/etc/sudoers:
nagios ALL = NOPASSWD: /sbin/camcontrol
Edition du fichier /usr/local/etc/nrpe.cfg en ajoutant la ligne suivante:
command[check_raid]=/usr/local/libexec/nagios/check_smartarray.sh
Redémarrage du process NRPE:
/usr/local/etc/rc.d/nrpe2 restart
Configuration de Nagios, avec un nouveau service pour surveiller les disques RAID:
define service{
use
generic-service
monserveuravecduraid
RAID
check_nrpe!check_raid
host_name
service_description
check_command
Le but est de surveiller le bon état des disques RAID 1 logiciel d'un serveur sous FreeBSD.
On commence par configurer le serveur ou se trouve les disques RAID. Pour permettre le user nagios à lancer la commande de surveillance des disques RAIS, on doit ajouter la ligne suivante au fichier /usr/local/etc/sudoers:
nagios ALL= NOPASSWD: /sbin/gmirror status
Edition du fichier /usr/local/etc/nrpe.cfg en ajoutant la ligne suivante:
command[check_raid]=/usr/local/bin/sudo /sbin/gmirror status | tail +2
Redémarrage du process NRPE:
/usr/local/etc/rc.d/nrpe2 restart
Configuration de Nagios, avec un nouveau service pour surveiller les disques RAID:
define service{
use
host_name
service_description
check_command
}
Supervision d'un trunk IAX sur un serveur Asterisk
Quand vous voulez relier deux serveurs Asterisk entre eux, il faut utiliser un trunk IAX. Un trunk IAX est en fait un tunnel UDP (port 4569). Si vous voulez vérifier qu'un serveur Asterisk est apte à recevoir un trunk IAX, il faut lui envoyer une commande "POKE" sur le port UDP/4569, il répondra normalement par un "PONG".
Le script check_iax permet d'automatiser ce test. Une fois le script compilé (il est écrit en C) et installé dans le répertoire /usr/local/nagios/libexec, il faut créer la commande dans Nagios:
# 'check_iax' command definition, 800ms WARNING, 1000ms CRITICAL
define command{
command_name check_iaxcommand_line $USER1$/check_iax -H $HOSTADDRESS$ -w 800 -c 1000
}
Ensuite, il ne reste plus qu'a définir un service associé à une machine hébergeant le serveur
generic-service
monserveuravecduraid
RAID
check_nrpe!check_raid
define service{
use generic-service host_name asterisk service_description IAX trunk check_command check_iax
}
Superviser l’espace disque avec Nagios via SNMP
Les pré-requis sont les suivants:
-
● avoir un Nagios correctement installé
-
● la machine à surveiller doit héberger un serveur SNMP dont la configuration permette
au serveur Nagios de lire les informations (l'accès read-only v1/v2 de SNMP est
suffisant)
-
● suivre la suite de ce billet
Configuration de la machine à surveiller
Après avoir installé et configuré son serveur SNMP, il faut ajouter la ligne suivante au fichier de configuration snmpd.conf (la localisation de ce dernier est os dépendant):
disk / 100000
PS: le deuxième paramètre permet de fixer le seuil en dessous duquel une alerte SNMP est remontée. Il n'est pas très important pour nous car c'est Nagios qui va générer cette alerte avec nos propres valeurs.
On doit bien sûr relancer le service snmpd pour lire la configuration, par exemple:
/etc/init.d/snmpd restart
Configuration du serveur Nagios
La première chose à faire est de vérifier que l'on arrive bien à récupérer les informations SNMP sur la machine à surveiller (d'adresse IP 192.168.0.200 dans notre exemple). Pour cela on peut utiliser la commande suivante:
snmpget -v 1 -c public 192.168.0.200 .1.3.6.1.4.1.2021.9.1.9.1
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 32
La commande a réussi. On a bien récupéré la valeur 32 par SNMP. Donc On a 32% d'espace
disque occupé sur le disque de la machine 192.168.0.200.
On configure Nagios de la manière suivante, on édite le fichier commands.cfg:
#################
# check_snmp_disk
#################
# Check free disk space using SNMP (add the "disk 1000000" line to the
snmpd.conf)
define command{
command_name check_snmp_disk
command_line $USER1$/check_snmp -H $HOSTADDRESS$ -
o .1.3.6.1.4.1.2021.9.1.9.1 -C $ARG1$ -w $ARG2$ -c $ARG3$ -u "% used" }
Puis on configure le service pour la machine à surveiller (dans un autre fichier comme par exemple services.cfg):
define service{
use
host_name
service_description
check_command
}
La fonction check_snmp_disk prend 3 paramètres:
● le nom de la communauté SNMP (public)
● le seuil au dessus duquel un warning est généré par Nagios (90%) ● le seuil au dessus duquel un error est généré par Nagios (95%)
Il ne reste plus qu'a relancer Nagios pour prendre en compte la configuration !
generic-service
Ma_Machine_192.168.0.200
DISK SPACE
check_snmp_disk!public!90!95
Nous allons voir dans ce chapitre 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:
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
host_name
service_description
check_command
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%.
generic-service
monserveur
Disk space
check_disk_smb!servernas!monpartage!monuser!
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 chapitre 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 etSerial
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 rendre 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_intcommand_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
alias
address
Routeur liaison WAN
<adresseIProuteurcisco>
generic-service
define service{
use
host_name
service_description
check_command
cisco
LS 1
check_snmp_int!public!"Serial3/0"
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...
Détection des attaques DDOS avec Nagios
Nous allons dans ce billet voir comment utiliser Nagios pour envoyer des alertes en cas de détection d'une attaque de type DDOS SYN Flood.
Pour cela j'ai développé (sous licnce GPL v3) un plugin Nagios disponible à l'adresse suivante:
http://svn.nicolargo.com/nagiosautoinstall/trunk/check_ddos.pl
Installation du script
Il faut disposer d'un serveur Nagios correctement configuré. Puis exécuter les commandes suivantes:
cd /usr/local/nagios/libexec
sudo rm -f check_ddos.pl
wget http://svn.nicolargo.com/nagiosautoinstall/trunk/check_ddos.pl
chmod a+rx check_ddos.pl
sudo chown nagios:nagios check_ddos.pl
Test du script:
./check_ddos.pl -w 50 -c 60
No DDOS attack detected (5/50)
Configuration de Nagios
Pour ajouter un service de détection DDOS SYN Flood sur la machine locale (en clair pour vérifier les attaques DDOS vers le serveur hébergeant Nagios), il faut dans un premier temps éditer le fichier commands.cfg (par défaut dans le répertoire /usr/local/nagios/etc/objects) pour ajouter la nouvelle commande de detection DDOS SYN Flood:
# check_ddos
define command{
command_name check_ddos
command_line $USER1$/check_ddos.pl -w $ARG1$ -c $ARG2$
}
Puis il faut éditer le fichier localhost.cfg (qui se trouve également dans le répertoire /usr/local/ nagios/etc/objects):
# Define a DDOS SYN Flood detection service
# http://blog.nicolargo.com/?p=4100
# Warning: >50 SYN_RECV
# Critical: >70 SYN_RECV
define service{
use local-service
host_name bilbo
service_description DDOS SYN Flood detect
check_command check_ddos!50!70
}
Nous venons ainsi de définir un service qui va émettre une alerte Warning quand le serveur aura plus de 50 connexions de type SYN_RECV ouvertes (plus de 70 pour une alerte Critical). Ces chiffrent sont bien sur à adapter selon les serveurs...
En bonus, si une alerte est généré, le plugin affiche le TOP 10 des adresses IP des machines zombies (pratique pour les bloquer avec des règles de Firewall Iptables).
Si vous souhaitez surveiller les attaques DDOS SYN Flood sur une autre machine, il faut utiliser le plugin NRPE qui va faire l'interface entre le serveur Nagios et le serveur à superviser.
Surveiller vos serveurs Windows avec Nagios
Voici un chapitre 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
# 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"
○ décommentanttouslesmoduleslistédanslasection[modules]sauf CheckWMI.dll et RemoteConfiguration.dll
○ décommentantlaligneallowed_hostsdanslasection[Settings]eteny 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 billgatesalias 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
Surveiller vos serveurs GNU/Linux avec Nagios
Installation de NRPE depuis les sources
Afin de disposer de la dernière version de NRPE (le plugin pour superviser vos serveurs GNU/Linux, BSD ou Mac OS X sous Nagios), il est parfois nécessaire de la compiler depuis les sources. Voici donc une simple procédure pour installer NRPE 2 et les plugins Nagios "standards" sous une distribution GNU/Linux.
Nous partons, bien sûr, sur l'hypothèse ou votre machine cible (c'est à dire celle ou vous aller compiler NRPE) dispose des logiciels de développement de base (configure, make, gcc...).
Si votre machine dispose d'un accès internet, vous pouvez saisir les commandes suivantes (en remplacent les numéros de versions par les dernières disponibles):
wget http://surfnet.dl.sourceforge.net/sourceforge/nagios/nrpe-2.12.tar.gz
wget http://heanet.dl.sourceforge.net/sourceforge/nagiosplug/nagios-plugins-1.4.13.tar.gz
Préalablement à l'installation de NRPE, il faut créer un utilisateur 'nagios' sur votre machine:
Pour des raisons de sécurité, il est préférable que cet utilisateur n'est pas de shell:
vipw
Remplacer la ligne:
nagios:x:500:500::/home/nagios:/bin/bash
Par:
nagios:x:500:500::/home/nagios:/bin/noshell
Installation de NRPE
On lance la fameuse séquence:
tar zxvf nrpe-2.12.tar.gz
cd nrpe-2.12
./configure
make all
make install
Lors de la compilation il est possible qu'il manque des dépendances. Par exemple, si vous avez le message suivant:
checking for SSL headers... configure: error: Cannot find ssl headers
Il faut installer les librairies SSL (libssl-dev sous Ubuntu):
apt-get install libssl-dev
Installation des plugins Nagios standards
Pareil que miguel...:
tar zxvf nagios-plugins-1.4.13.tar.gz
cd nagios-plugins-1.4.13
./configure
make install
Puis une initialisation du script de configuration (/usr/local/nagios/etc/nrpe.conf):
mkdir /usr/local/nagios/etc
cp sample-config/nrpe.cfg /usr/local/nagios/etc
De base, les plugins sont installés avec les droits de l'utilisateur qui à lancé la compilation. Pour être sûr que NRPE puisse lancer les plugins, on doit saisir la commande suivante:
chown -R nagios:nagios /usr/local/nagios/
Lancement automatique au démarrage
Un script standard est fourni dans les sources:
cp init-script /etc/init.d/nrpe
chmod 755 /etc/init.d/nrpe
Surveiller vos serveurs Linux avec Nagios et NRPE
Suite à l'introduction sur les greffons Nagios, voici une simple procédure pour mettre en place le monitoring de serveurs sous Linux (voir ce billet pour des serveurs BSD ou Mac OS X) à partir de Nagios en utilisant le plugin NRPE.
Sur votre serveur Nagios...
... il faut installer le plugin NRPE. Pour cela, le plus simple est de faire confiance à votre gestionnaire de paquets.
Sous Fedora, la commande suivante devrait suffire:
sudo yum install nagios-plugins-nrpe
Sous Ubuntu/Debian:
sudo apt-get install nagios-nrpe-plugin
Il faut également vérifier que la définition du plugin est bien présente dans le fichier de
configuration des commandes (commands.cfg):
...
######
# NRPE
######
# 'check_nrpe' command definition
define command{
command_name check_nrpe
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$
}
Sur votre serveur Linux à surveiller...
La procédure est un peu plus longue. Il faut d'abord installer le daemon NRPE et les plugins Nagios (qui vont être lancés localement par le daemon NRPE):
Sous Fedora:
# sudo yum install nrpe
# sudo yum install nagios-plugins-all
Sous Ubuntu/Debien:
# sudo apt-get install nagios-nrpe-server
# sudo apt-get install nagios-plugins
Puis éditer le fichier /etc/nagios/nrpe.cfg pour modifier la ligne suivante:
...
allowed_hosts = Mettre ici l'adresse IP de votre serveur Nagios ...
On automatise le lancement du daemon au démarrage du serveur avec la commande:
# chkconfig --add nrpe
On ajoute une règle pour autoriser le Firewall IPtable à laisser passer les requêtes NRPE (à
adapter selon vos règles):
# iptables -I RH-Firewall-1-INPUT 10 -p tcp --dport 5666 -j ACCEPT
Il ne reste plus qu'à lancer le daemon:
Sous Fedora:
# service nrpe start
Sous Ubuntu/Debien:
# /etc/init.d/nagios-nrpe-server start
On teste la communication...
Pour tester que la communication entre le serveur Nagios et le serveur à surveiller se passe bien, il suffit de se rendre dans le répertoire des plugins (/usr/lib/nagios/plugins) de Nagios et de tester le plugin NRPE:
# ./check_nrpe -H Adresse_IP_du_serveur_Linux
NRPE v2.7
Si tout est OK, cette commande devrait renvoyer la version du daemon NRPE. Vous pouvez
tester directement les plugins avec la commande suivante (exemple donnée pour un check de
la charge):
# ./check_nrpe -H Adresse_IP_du_serveur_Linux -c check_load
On configure Nagios...
La dernière étape consiste à modifier les fichiers de configuration de Nagios pour intégrer le monitoring du/des serveur Linux. Il faut dans un premier temps éditer votre fichier de configuration des hosts (hosts.cfg par défaut) et y ajouter votre machine Linux:
define host {
use generic-host
host_name linus
alias Ma machine Linux
address 192.168.0.7
}
Puis ajouter les services offerts par NRPE (dans le fichier services.cfg), quelques exemples:
# Charge CPU
define service{
use generic-service
host_name remotehost
service_description CPU Load
check_command check_nrpe!check_load
# Memoire
define service{
use generic-service
host_name remotehost
service_description Memory
check_command check_nrpe!check_mem
}
Pour ajouter des nouveaux plugins executable par NRPE, il faut éditer le fichier /etc/nagios/ nrpe.cfg et ajouter une ligne par service:
...
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hda
...
Ne pas oublier de relancer le daemon quand on change le fichier de configuration (nrpe.cfg):
# service nrpe restart
Il est bien entendu possible d'écrire son propre plugin Nagios et de le faire exécuter par NRPE.
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:
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:
● sous Linux: check_memory
● ou sous FreeBSD: check_mem
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
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
address
}
define service{
Mon beau serveur
192.168.0.200
use
host_name
service_description
check_command
generic-service
monserveur
Memoire vive
check_nrpe!check_mem
Related posts:
- Installation pas à pas de Nagios
- Installation Opsview sur Ubuntu 8.04 LTS
- Installation de Cacti sous Debian
- Le serveur de supervision libre – PART 4
- Le serveur de supervision libre – PART 1
- Installation et configuration de Centreon 2
- NAGIOS La supervision Informatique
- NAGIOS La supervision Informatique
- Installation de Nagios
- Qu’est-ce que la supervision
Si vous avez apprécié cet article , abonnez-vous pour recevoir plus grand contenu tout comme il
-
Installation pas à pas de Nagios Trêve de blabla, entrons directement dans le vif du sujet avec l'installation d...
-
Si vous souhaitez scanner une plage d’adresse IP sur votre réseau afin de vérifier la disponibilité d’une ou plusieurs...
-
Installation de Cacti sous Debian Les systèmes informatiques d'entreprise associent une diversité de services proposés (rout...
-
C’est quoi le DFS ? I. Présentation Ce premier article a pour but d’expliquer ce qu’est le DFS, accessible dans u...
-
Qu’est-ce que le NAT ? Commençons par la signification du NAT, Network Address Translation (en Français Translation d’Adresse Réseau)...
-
Création d’une règle de pare-feu avec un Fortigate I. Présentation Après avoir découvert ce qu’est un Fortinet dans un premier ...
-
Active Directory I. L’Active Directory L’Active Directory est un annuaire LDAP pour les systèmes d’exploitation Windows, l...
-
IPerf: des exemples… Nous commençons l'année 2008 avec un billet regroupant des exemples d'utilisation d'IPerf, l'...
-
Comment exécuter un script PowerShell Dans l’article comment installer et vérifier le bon fonctionnement de PowerShell , nous av...
-
Routage RIP Définitions Avant de parler de routage RIP, il faut que j’explique qu’est-ce qu’un routeur et quel est son but. Le ...
pobular post

Configurer et vérifier NTP dans le mode client et le mode s
Configurer et vérifier NTP dans le mode client et le mode serverSynchronisation temporelle NTP1. Network Time Protocol (NTP)Network Time Protocol (NTP) est un protocole TCP/IP qui permet de synchroniser à travers le réseau l’horloge locale des ordinateurs sur une date et une heure de référence. Le projet NTP propose u[...]
Création d’une règle de pare-feu avec un Fortigate
Création d’une règle de pare-feu avec un Fortigate I. Présentation Après avoir découvert ce qu’est un Fortinet dans un premier article, je voudrais vous montrer comment mettre en place une règle de Firewall avec quelques-unes des options de sécurité les plus utilisées pour la sécurité ou l’optimisation de n[...]

Qu’est-ce qu’un système PBX?
Qu’est-ce qu’un système PBX? Le terme PBX revient souvent dans les offres des fournisseurs téléphoniques, parfois sous la forme de PBX hébergé, PBX IP ou Cloud PBX. Pour ceux qui connaissent moins leur lexique téléphonique, l’offre d’un système PBX avec des fonctionnalités quelconque[...]

Le JavaScript++
TypeScript est un langage très récent (février 2012) qui a été conçu par Anders Hejlsberg, également concepteur du langage C#. Le but premier de TypeScript est de rendre plus facile et plus fiable l'écriture de code en JavaScript pour des applications de grande ampleur. Cet article présentera de fa[...]

De la téléphonie IP très facilement avec Asterisk
De la téléphonie IP très facilement avec Asterisk Je vous propose en ce début d’année un tuto assez simple sur Asterisk. Si vous ne le connaissez pas, c’est un logiciel libre qui permet de faire de la téléphonie par IP, c’est assez sympa à faire ! Le tutorial a été réalisé sur une Debian 7.3 64bits m[...]

Qu’est ce que la Voix sur IP (VoIP)?
Qu’est ce que la Voix sur IP (VoIP)? La Voix sur IP, raccourci de voix par le protocole internet, est aussi connue sous le terme de VoIP. La voix sur IP se réfère à la diffusion du flux de la voix sur les réseaux Internet, au lieu des réseaux téléphoniques RTC traditionnels. Le protocole Internet (IP) a ét[...]

Quelques astuces pour assurer la sécurité de vos données in
Quelques astuces pour assurer la sécurité de vos données informatiques Sécurité informatique Chaque année, de nombreux utilisateurs et entreprises se font malheureusement piratés leurs données informatiques qu’elles soient personnelles ou professionnelles. Pour éviter e[...]
0 commentaires pour ce poste
Leave a reply