Introduction J'ai réalisé un stage sur l'installation et la configuration d'un logiciel de monitoring d'un parc serveur. Le choix se porta sur Nagios, pour le noyau, qui va effectuer des requêtes SNMP vers les serveurs et nous alerter en cas de surcharge ou soucis de disques durs tels qu'un système RAID. La 1ère partie décrit l'installation de Nagios, la 2ème partie porte sur l'installation et la configuration d'Oréon pour faciliter la configuration de Nagios. En effet, Nagios ne se configure qu'avec des fichiers de configuration et tout faire à la main est vite rébartitif. Oréon permet de créer les fichiers de configuration pour Nagios par l'intermédiaire d'une interface Internet. Tout cela ne s'installe que sous Linux, et j'utilise Debian Etch 4 comme système d'exploitation. Ce guide est plus technique que d'habitude et peut-être qu'il ne vous intéressera pas, mais vue la difficulté que j'ai rencontré lors de la mise en place de cette solution (avec les tutoriels sur Internet parfois trop anciens) je partage la documentation que j'ai réalisée et j'espère qu'elle pourra servir à d'autres personnes ;) Lors de l'installation de Debian (version 4 Etch maintenant), choisissez les LOCALES -> FR_fr@Euro. Installation de NAGIOS apt-get install g++ gcc apache2 mysql-server-4.1 snmp snmpd // si SNMP n'est pas installé sur le serveur, le plug in check_snmp ne sera pas disponible su cd /tmp wget http://www.pc-fute.com/materiel/images/nagios_oreon/nagios-2.9.tar.gz tar xzf nagios-2.9.tar.gz adduser nagios mkdir /usr/local/nagios chown -R nagios.nagios /usr/local/nagios Quel User sous Apache ? grep "^User" /etc/apache2/apache2.conf //grep "^User" /etc/httpd/conf/httpd.conf /usr/sbin/groupadd nagcmd /usr/sbin/usermod -G nagcmd www-data /usr/sbin/usermod -G nagcmd nagios cd nagios-2.9 ./configure --prefix=/usr/local/nagios --with-cgiurl=/nagios/cgi-bin --with-htmurl=/nagios/ --with-nagios-user=nagios --with-nagios-group=nagios --with-command-group=nagioscmd // Si utilisation de PerfParse pour Nagios, ajout --with-default-perfdata --with-gd-lib=/usr/lib --with-gd-inc=/usr/include Compte-rendu une fois l’installation finie : --- General Options: ------------------------- Nagios executable: nagios Nagios user/group: nagios,nagios Command user/group: nagios,nagioscmd Embedded Perl: no Event Broker: yes Install ${prefix}: /usr/local/nagios Lock file: ${prefix}/var/nagios.lock Init directory: /etc/init.d Host OS: linux-gnu Web Interface Options: ------------------------ HTML URL: http://localhost/nagios/ CGI URL: http://localhost/nagios/cgi-bin/ Traceroute (used by WAP): /usr/sbin/traceroute -------------------------- Liste des commandes à taper et à réaliser les unes à la suite des autres : make all make install make install-init make install-config make cgis Contenu de « cd /usr/local/nagios » bin/ -> Nagios core program etc/ -> Main, resource, object, and CGI configuration files should be put here sbin/ -> CGIs share/ -> HTML files (for web interface and online documentation) var/ -> Empty directory for the log file, status file, retention file, etc. var/archives -> Empty directory for the archived logs var/rw -> Empty directory for the external command file libexec/ -> Plugins Configuration Apache 2 A rajouter dans le httpd.conf qui est vide (pour le trouver : « find / -name httpd.conf ») : ScriptAlias /nagios/cgi-bin /usr/local/nagios/sbin <Directory "/usr/local/nagios/sbin"> Options ExecCGI AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthType Basic AuthUserFile /usr/local/nagios/etc/htpasswd.users Require valid-user </Directory> Alias /nagios /usr/local/nagios/share <Directory "/usr/local/nagios/share"> Options None AllowOverride None Order allow,deny Allow from all AuthName "Nagios Access" AuthType Basic AuthUserFile /usr/local/nagios/etc/htpasswd.users Require valid-user </Directory> /etc/init.d/apache2 reload // redémarrage d'Apache2 Définition droit d'accès htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin // Debian nous invite à choisir un MDP Accès web : http://IP_du_Serveur/nagios/ Test des fichiers .cfg su // etre en root /usr/local/nagios/bin/nagios -v /usr/local/nagios/etc/nagios.cfg Si erreur dans /usr/local/nagios/var : Error: Could not create external command file '/usr/local/nagios/var/rw/nagios.cmd' su nagios mkdir /usr/local/nagios/var/rw Si Nagios ne peut pas démarrer : il faut utiliser les fichiers de configuration livrés pour l’exemple : transfert cp -R /tmp/nagios2.7/sample-config /usr/local/nagios/etc chown -R nagios.nagios /usr/local/nagios/etc chmod 755 START NAGIOS cd /usr/local/nagios/etc cp cgi.cfg-sample cgi.cfg cp commands.cfg-sample commands.cfg cp localhost.cfg-sample localhost.cfg cp nagios.cfg-sample nagios.cfg cp resource.cfg-sample resource.cfg /usr/local/nagios/bin/nagios /usr/local/nagios/etc/nagios.cfg Si Absence fichier statusmap.cgi Il se peut que certaines commandes ne fonctionnent pas car elles fonctionnaient avec la version Sarge de Debian : apt-get install php4-gd libgd2 libfreetype6-dev libjpeg62-dev libpng2-dev xlibs-dev zlib1g-dev libgd2-xpm libgd2-xpm-dev libgd2 libgd2-dev apt-get install libgd2-noxpm libgd2-noxpm-dev libgd2-xpm libgd2-xpm-dev Pour Debian Etch 4 : apt-get install libgd-dev Dans "nano /etc/php4/apache2/php.ini" (ou "nano /etc/php4/apache/php.ini") -> décochez le ";" devant gd.so Dans un dossier où nagios est décompressé, faire un : cd /tmp/nagios-2.9 make devclean ./configure --with-gd-lib=/usr/lib --with-gd-inc=/usr/include // GD, PNG, and/or JPEG libraries could not be located make cgis // reconfection des CGI cd cgi cp *.cgi /usr/local/nagios/sbin // copie nouveaux CGI vers le rep des CGI de nagios -- 3-D status MAP : navigateur tente de télécharger le fichier -> il manque le plug-in VRML Téléchargez le client sur : http://cic.nist.gov/vrml/vbdetect.html ou http://www.parallelgraphics.com/products/cortona/ REGLAGES http://nagios.sourceforge.net/docs/2_0/xodtemplate.html localhost.cfg -> contient les contacts, services, etc. nagios.cfg -> configuration des variables cgi.cfg -> autorisation TEST PERFORMANCE NAGIOS http://nagios.sourceforge.net/docs/2_0/nagiostats.html /usr/local/nagios/bin/nagiostats -c /usr/local/nagios/etc/nagios.cfg Les résultats de la ligne « Active Service Latency » ne doivent pas être trop importants (plusieurs dizaines/centaines de secondes) : Active Service Latency: 0.043 / 0.862 / 0.462 sec Ces chiffres augmentent de manière importante quand il y a des hôtes ou services en état DOWN ou UNKNOWN. PLUGINS Récupérez la dernière version des plug-ins : http://nagiosplug.sourceforge.net http://sourceforge.net/project/showfiles.php?group_id=29880 Je place les plugins que j'ai utilisé sur le site mais je vous recommande de récupérer les dernières versions. cd /tmp wget http://www.pc-fute.com/materiel/images/nagios_oreon/nagios-plugins-1.4.8.tar.gz tar xzf nagios-plugins-1.4.8.tar.gz cd nagios-plugins-1.4.8 ./configure make all make install SNMP pour Debian apt-get install nmap librrds-perl libgd-gd2-perl libnet-snmp-perl cd /tmp wget http://nagios.manubulon.com/nagios-snmp-plugins.1.1.tgz tar xzf nagios-snmp-plugins.1.1.tgz cd nagios_plugins ./install.sh A l'écran s'affiche le compte-rendu : Will now install all script(s) : in directory : /usr/local/nagios/libexec perl : /usr/bin/perl temp directory : /tmp Le script se termine par : Installation completed OK You can delete all the source files and directory Remember to look for informtation at http://www.manubulon.com/nagios/ Configuration SNMP nano /etc/snmp/snmpd.conf commenter la ligne « com2sec paranoid default public » en rajoutant un « # » supprimer le « # » de la ligne « com2sec readonly default public ». Installation SNMP sous Windows Le CD de Windows vous sera peut-être demandé. Panneau de config Ajout de composant Outil de gestion et d'analyse Cocher SNMP Configuration dans Services -> SNMP Installation d'Oréon 1.4 Lors de l'écriture de ce guide, Oréon est en version 1.4 et il existe 5 patchs à appliquer. Au lieu d'installer Oréon et de lui appliquer les 5 patchs, j'ai préféré récupérer Oréon 1.4 puis de patcher les sources directement et enfin de lancer l'installation. apt-get install rrdtool sudo apt-get install php4 php4-gd php4-cgi php4-mysql libapache2-mod-php4 php4-snmp php4-ldap php4-pear libconfig-inifiles-perl Il faut activer mysql.so et snmp.so ldap.so en décommentant la ligne dans le php.ini -> parfois cela est déjà fait ! Récupérez la dernière version d'Oréon sur le site officiel : http://www.oreon-project.org/download.html cd /tmp wget http://www.pc-fute.com/materiel/images/nagios_oreon/oreon-1.4.tar.gz tar xzf oreon-1.4.tar.gz // PATCH 1 wget http://download.oreon-project.org/patch/oreon-patch-1.4-1.tgz tar -xvzf oreon-patch-1.4-1.tgz cd oreon-1.4 for i in $(ls /tmp/oreon-patch/*.patch); do patch -p1 < ${i} ; done // PATCH 2 cd .. wget http://download.oreon-project.org/patch/oreon-patch-1.4-2.tgz tar xzf oreon-patch-1.4-2.tgz cd oreon-1.4 patch -p1 < /tmp/22-oreon-2004_04_05_-_17_55.patch // PATCH 3 cd .. wget http://download.oreon-project.org/patch/oreon-patch-1.4-3.tgz tar xzf oreon-patch-1.4-3.tgz cd oreon-1.4 patch -p1 < /tmp/23-oreon-2007_04_10_-_16_27.patch // PATCH 4 cd .. wget http://download.oreon-project.org/patch/oreon-patch-1.4-4.tgz tar xzf oreon-patch-1.4-4.tgz cd oreon-1.4 patch -p1 < /tmp/oreon-patch-1.4-4/24-oreon-2007_04_13_-_19_28.patch cd /tmp/oreon-1.4/ODS_SRC_ETC patch -p0 < /tmp/oreon-patch-1.4-4/25-oreon-init_ods_2007_04_13.patch // PATCH 5 cd .. cd .. wget http://download.oreon-project.org/patch/oreon-patch-1.4-5.tgz tar xzf oreon-patch-1.4-5.tgz cd oreon-1.4 patch -p1 < /tmp/oreon-patch-1.4-5/26-oreon-2007_04_24.patch Sauvegarde du dossier patché avec les sources oreon cp -R oreon-1.4 /root Installation de Pear pear upgrade DB pear install Date DB_DataObject Numbers_Roman HTML_Common HTML_QuickForm HTML_QuickForm_advmultiselect pear install Archive_Tar Console_Getopt HTTP Image_Color Image_GraphViz Mail Mail_Mime Net_SMTP Net_Socket Net_Ping XML_RPC PEAR_PackageFileManager pear install -o -f --alldeps DB_DataObject_FormBuilder MDB2 Numbers_Words HTML_Table Auth_SASL Image_Canvas pear install -o -f --alldeps Image_Graph Net_Traceroute Validate Puis on retourne dans le dossier d'Oréon puis on lance l'installation : cd /tmp/oreon-1.4 ./install.sh enter enter etc. Where is PEAR Path ? default to [/usr/share/pear]:/usr/share/php/ Oreon efface les nouveaux plug-ins SNMP donc on reinstalle ceux de http://nagios.manubulon.com/ cd nagios_plugins ./install.sh On continue l’installation d’Oréon : http://IP_du_Serveur/oreon/ I accept laisser par défaut nagios 2.X next next Partie 5 ok si installation pear install a bien été effectuée next Définir un mot de passe mysql à root : dans une console Putty, taper « mysqladmin password "choisir_un_mot_de_passe" » car il est possible de se connecter avec root en tapant mysql directement sans mot de passe MDP oreon_bdd ods_bdd MDP différent de root mettre le même >4.1 - PASSWORD() next next oreonadmin MDP MDP Prénom Nom nagios@localhost fr next no - LDAP next next next next On vérifie que l'installation s'est bien passée : http://IP_du_Serveur/oreon/index.php Création du module pour l’enregistrement des données dans MySQL : nano /usr/local/nagios/libexec/process-service-perfdata #!/bin/bash # some parameters passed on command line TIMET=$1 HOSTNAME=$2 SERVICEDESC=$3 OUTPUT=$4 SERVICESTATE=$5 PERFDATA=$6 PERFFILE="/usr/local/nagios/var/service-perfdata" /usr/bin/printf "%b" "$TIMET\t$HOSTNAME\t$SERVICEDESC\t$OUTPUT\t$SERVICESTATE\t$PERFDATA\n" >> $PERFFILE // on lui donne les droits en lecture et exécution chmod +rx /usr/local/nagios/libexec/process-service-perfdata Oreon -> Configuration -> Nagios -> Nagios.conf set 'Performance Data Processing Option' option to YES in 'Service Performance Data Processing Command', select 'process-service-perfdata' plugin save changes and restart Nagios Ce qui donne : ![]() Configuration d’ODS ODS est un service intégré à Oréon (depuis la 1.4) qui récupére les données de Nagios pour les intégrer dans la base de données Mysql. Cela est pratique car on peut facilement développer une interface WEB qui va lire cette base de données et afficher la charge des loadbalancers ou autre de façon très claire et cela sans passer par l'interface de Nagios ou Oréon. ![]() // démarrer ODS /etc/init.d/ods start // placer au boot le démon ODS update-rc.d ods start 20 3 4 5 . stop 20 0 1 6 . // tester les CRON nano /etc/cron.d/oreon Exécutez les CRON pour les tester, si des erreurs apparaissent il va falloir modifier les liens, ce que j'ai dû faire pour Debian. Remplacer : « /usr/local/oreon/cron/reporting/inventory_cron_update.php » par « /usr/local/oreon/cron/inventory_update.php » les "php" par "/usr/bin/php4-cgi" si la version de PHP est la 5, pour connaitre la version "php -v" /usr/bin/php4-cgi /usr/local/oreon/cron/inventory_update.php LOGS Oréon Tous les fichiers de log se trouvent dans « cd /usr/local/oreon/log ». Correction bug graphique RRD Sur ma machine, j'ai remarqué qu'au bout de plusieurs jours et avec une dizaine de services : les graphes ne s'affichent plus !! En fait, il s'agit d'un mauvais paramétrage de "heartbeat metric" qui est à 300 par défaut. En la passant à 600, tout rentre dans l'ordre :) J'ai donc codé un petit script qui passe toutes les bases RRD "heartbeat metric" à 600. nano /root/correct_rrd.sh #!/bin/sh cd /usr/local/oreon/OreonDataStorage for f in *.rrd; do rrdtool tune $f --heartbeat metric:600; done exit 0 chmod +x /root/correct_rrd.sh Pour l’exécuter : ./root/correct_rrd.sh Correction des dents de scie « check_graph_traffic » Un bug se produit sur le plug-in check_graph_traffic (peut-être qu'il sera corrigé au moment où vous lirez ces lignes), c'est à dire que les courbes de trafic font des pics en temps de scie, or une fois corrigé, les courbes sont bien lisses ;) -> Téléchargez le plugin corrigé cp /usr/local/nagios/libexec/check_graph_traffic.pl /usr/local/nagios/libexec/check_graph_traffic_old.pl nano /usr/local/nagios/libexec/check_graph_traffic.pl // ligne 295 remplacer les 2 IF par : if (($in_bits - $last_in_bits > 0) && defined($last_in_bits)) { my $total = 0; if ($in_bits - $last_in_bits < 0){ $total = 4294967296 - $last_in_bits + $in_bits; } else { $total = $in_bits - $last_in_bits; } my $pct_in_traffic = $in_traffic = abs($total / (time - $last_check_time)); } else { if ($in_bits - $last_in_bits < 0){ my $total = 0; $total = 4294967296 * 8 - $last_in_bits + $in_bits; my $pct_in_traffic = $in_traffic = abs($total / (time - $last_check_time)); }else{ $in_traffic = 0; } } if ($out_bits - $last_out_bits > 0 && defined($last_out_bits)) { my $total = 0; if ($out_bits - $last_out_bits < 0){ $total = 4294967296 - $last_out_bits + $out_bits; } else { $total = $out_bits - $last_out_bits; } my $pct_out_traffic = $out_traffic = abs($total / (time - $last_check_time)); } else { if ($out_bits - $last_out_bits < 0){ my $total = 0; $total = 4294967296 * 8 - $last_out_bits + $out_bits; my $pct_out_traffic = $out_traffic = abs($total / (time - $last_check_time)); }else{ $out_traffic = 0; } } Si l’accueil est vide : c'est-à-dire qu’il n’y a pas de CAMEMBERT pie_chart_host.php -> erreur call to undefined function : setclipping() dpkg -l | grep gd gdb 6.3-6 The GNU Debugger gdm 2.6.0.8-1sarge GNOME Display Manager klogd 1.4.1-17 Kernel Logging Daemon libgd-gd2-perl 2.23-1 Perl module wrapper for libgd - gd2 variant libgd2 2.0.33-1.1sarg GD Graphics Library version 2 libgd2-xpm 2.0.33-1.1sarg GD Graphics Library version 2 libgd2-xpm-dev 2.0.33-1.1sarg GD Graphics Library version 2 (development v libgda2-3 1.2.1-2sarge1 GNOME Data Access library for GNOME2 libgda2-common 1.2.1-2sarge1 Common files for GNOME Data Access library f libgdbm3 1.8.3-2 GNU dbm database routines (runtime version) php4-gd 4.3.10-18 GD module for php4 sysklogd 1.4.1-17 System Logging Daemon find / -name arial.ttf /usr/share/pear/Image/Canvas/Fonts/arial.ttf /usr/share/php/Image/Canvas/Fonts/arial.ttf find / -name fontmap.txt /usr/share/pear/Image/Canvas/Fonts/fontmap.txt /usr/share/php/Image/Canvas/Fonts/fontmap.txt Placer arial.ttf et fontmap.txt dans /usr/share/php/PEAR/Image/Canvas/Fonts mkdir /usr/share/php/PEAR/Image mkdir /usr/share/php/PEAR/Image/Canvas mkdir /usr/share/php/PEAR/Image/Canvas/Fonts cp /usr/share/pear/Image/Canvas/Fonts/arial.ttf /usr/share/php/PEAR/Image/Canvas/Fonts cp /usr/share/pear/Image/Canvas/Fonts/fontmap.txt /usr/share/php/PEAR/Image/Canvas/Fonts pear upgrade-all pear install -f Image_Graph pear install -f Image_Canvas Décalage horaire d'1h entre le RRD fourni par "Simple Graphs Renderer" Pas de décalage avec "Graphs Plugins" ou "Graphs By Hosts" OPTIONS -> GMT : 1 Configuration des commandes "check" http://forums.opsyx.com/viewtopic.php?t=1322&postdays=0&postorder=asc&start=0 http://xavier.dusart.free.fr/netsaint/documentation-0.0.6/oldplugins.html http://www.nagios-wiki.de/doku.php/snmp/start http://www.oidview.com/mibs/detail.html http://support.ipmonitor.com/mibs_byoidtree.aspx cd /usr/local/nagios/libexec Si erreur : nagios@debian:/usr/local/nagios/libexec$ ./check_snmp_load.pl -V Can't locate Config/IniFiles.pm in @INC (@INC contains:… apt-get install libconfig-inifiles-perl Les lignes qui commencent par « $USER1$/ » sont les commandes à copier dans « Check Commands ». Les lignes qui commencent par « ./ » sont à exécuter directement sous Putty pour tester le plugins en temps réel et voir ce qu’il retourne dans la console. Une fois qu’il fonctionne, on peut l’utiliser dans le Check Commands pour que Nagios l’exécute. Il est possible de définir des arguments par défaut (Argument Example) pour le plugin dans le Check Commands. Par exemple, « !public » signifie qu’il faut spécifier le paramètre de la communauté SNMP lors de la configuration du service qui va être utilisé par Nagios. Sous Putty pour tester si le SNMP est activé : « snmpwalk -OX -c Nom_communauté -v 1 IP_A_Tester .1.3.6.1 » Pour connaître les arguments à utiliser pour chaque plugin, il faut taper « ./nom_plugin –h » et l’aide qui comporte la liste des paramètres s’affichera ! Uptime : va servir d’exemple Ligne à tester sous Putty : ./check_graph_uptime.pl -H localhost -C public ![]() Si l’on veut retourner le résultat en jour, il faudra rajouter « -d » : ![]() Ligne à placer dans Check Commands : ![]() Ce plugins est livré par défaut avec Oréon et comporte des paramètres pour Oréon tel que « -g –S ». RAM $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$,$ARG3$ -c $ARG4$,$ARG5$ -N -f !public!90!60!99!80 $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$ -m "^Virtual Memory" -f !public!80!90 Hits/sec => Get Requests/s et compteurs de performances $USER1$/check_graph_nt.pl -H $HOSTADDRESS$ -p 12489 -v $ARG1$ -l $ARG2$ -s $ARG3$ -w $ARG4$ -c $ARG5$ -S $ARG6$ !COUNTER!"\\Web Service(_total)\\Get Requests/sec"!None!1600!2000 En laissant l’argument –g, il se produit un bug particulièrement gênant : tous les services veulent grapher la même base RRD. En le supprimant, la sortie du plugin est utilisée et les graphiques sont correctement dessinés. Espace disque disponible $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ -m $ARG2$ -w $ARG3$ -c $ARG4$ -f !public!C:!80!90 Charge $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$% -c $ARG3$% -T $ARG4$ -f !public!80!90!stand Pour linux, il faut mettre « !public!2,2,2!4,4,4!netsl » Processus $USER1$/check_snmp_process.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$,$ARG3$ -c $ARG4$,$ARG5$ -n "" -f !public!10!150!10!500 Traffic ./check_graph_traffic.pl -H 192.168.100.102 -i "Interface 141" -w 80 -c 90 -C public Interface 3 => 3 Pas obligatoire de mettre Interface 3, possibilité de mettre 3 directement !65540!80!90!public!1 !16777220!80!90!public!1 !1!80!90!public!1 !3!80!90!public!1 ./check_graph_traffic.pl -H 192.168.1.244 -C public -s Interface 65540 :: Broadcom BCM5708C NetXtreme II GigE (NDIS VBD Client) #2 ./check_graph_traffic.pl -H 192.168.7.1 -C public -i 1 -s Interface 1 :: MS TCP Loopback interface Interface 65539 :: IBM Netfinity 10/100 Ethernet Adapter Interface 65540 :: IBM Netfinity 10/100 Ethernet Adapter #2 Service Windows Service test par exemple ./check_snmp_win.pl -H 192.168.7.1 -C public -n "ServiceTEST" $USER1$/check_snmp_win.pl -H $ARG1$ -C $ARG2$ -n $ARG3$ !192.168.10.5!public!"ServiceTEST" TCP ./check_tcp -H 192.168.7.1 -p 80 -w 10 -c 60 !192.168.10.5!80!10!60 $USER1$/check_tcp -H $ARG1$ -p $ARG2$ -w $ARG3$ -c $ARG4$ HTTP ./check_http -H domaine.com -I localhost -w 10 -c 60 port 80 -> warning 10 sec et critical 60 !192.168.10.5!10!60 $USER1$/check_http -H $ARG1$ -I localhost -w $ARG2$ -c $ARG3$ [b]Nbre de connexion au parefeu ./check_snmp_cpfw.pl -H 127.0.0.1 -C public -w -c 1000,5000 -f Ping $USER1$/check_graph_ping.pl -H $ARG1$ -w 400,40% -c 600,80% -f -n 3 -g -S $ARG2$ !000.000.000.000 -> adresse IP à pinguer DNS $USER1$/check_dns -H $ARG1$ -s $ARG2$ -w 10 -c 60 !domaine.com!IP_du_DNS Check_SNMP s’ils ne sont pas présents : cd /tmp wget http://www.pc-fute.com/materiel/images/nagios_oreon/nagios-plugins-1.4.8.tar.gz tar xzf nagios-plugins-1.4.8.tar.gz cd nagios-plugins-1.4.8 ./configure make FireWall Charge # Cisco catalyst cpu/load my $ciscocata_cpu_5m = ".1.3.6.1.4.1.9.9.109.1.1.1.1.5.1"; # Cisco CPU load (5min %) my $ciscocata_cpu_1m = ".1.3.6.1.4.1.9.9.109.1.1.1.1.4.1"; # Cisco CPU load (1min %) my $ciscocata_cpu_5s = ".1.3.6.1.4.1.9.9.109.1.1.1.1.3.1"; # Cisco CPU load (5sec %) $USER1$/check_snmp_load_fw.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$ -T $ARG4$ -f !public!80,80,80!90,90,90!cata JUNIPER ISG 1000 (Netscreen) # Netscreen cpu/load my $nsc_cpu_5m = "1.3.6.1.4.1.3224.16.1.4.0"; # NS CPU load (5min %) my $nsc_cpu_1m = "1.3.6.1.4.1.3224.16.1.2.0"; # NS CPU load (1min %) my $nsc_cpu_5s = "1.3.6.1.4.1.3224.16.1.3.0"; # NS CPU load (5sec %) $USER1$/check_snmp_load_fw.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$ -T $ARG4$ -f !public!80,80,80!90,90,90!nsc -> Téléchargez le plugin RAM $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$ -I –f !public!80!90 -> Téléchargez le plugin Trafic Juniper $USER1$/check_graph_traffic.pl -H $HOSTADDRESS$ -i $ARG1$ -w $ARG2$ -c $ARG3$ -C $ARG4$ -v $ARG5$ -g -S $ARG6$ !3!80!90!public!1 Trafic FireWall $USER1$/check_graph_traffic.pl -H $HOSTADDRESS$ -i $ARG1$ -w $ARG2$ -c $ARG3$ -C $ARG4$ -v $ARG5$ -g -S $ARG6$ !1!80!90!public!1 Loadbalancer Charge http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en&translate=Translate&objectInput=ciscoMgmt CPU : 5min .1.3.6.1.4.1.9.9.368.1.34.17.1.14.1.1 ./check_snmp_load_lb.pl -H 192.168.10.2 -C public -w 80,80,80 -c 90,90,90 -T cata –f $USER1$/check_snmp_load_lb.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$ -T $ARG4$ -f !public!80,80,80!90,90,90!cata -> Téléchargez le plugin check_snmp_load_lb.pl LB 1 - CSS 11000 -> .1.3.6.1.4.1.2467.1.34.17.1.13.1.1 ./check_snmp_load_lb_1.pl -H 192.168.10.1 -C public -w 80,80,80 -c 90,90,90 -T cata –f $USER1$/check_snmp_load_lb_1.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$ -T $ARG4$ -f -> Téléchargez le plugin check_snmp_load_lb_1.pl RAM FreeMemory : .1.3.6.1.4.1.9.9.368.1.34.17.1.10.1.1 InstalledMem : .1.3.6.1.4.1.9.9.368.1.34.17.1.12.1.1 $USER1$/check_snmp_mem_lb.pl -H $HOSTADDRESS$ -C $ARG1$ -w $ARG2$ -c $ARG3$ -f !public!80,80!90,90 -> Téléchargez le plugin check_snmp_mem_lb.pl Trafic $USER1$/check_graph_traffic.pl -H $HOSTADDRESS$ -i $ARG1$ -w $ARG2$ -c $ARG3$ -C $ARG4$ -v $ARG5$ -g -S $ARG6$ !3!80!90!public!1 HP - PROLIANT Status processeurs proliant: 1.3.6.1.4.1.232.1.2.2.1.1.6 Status disques proliant: 1.3.6.1.4.1.232.3.2.5.1.1.37 .1.3.6.1.4.1.232.3.2.2.1.1.1 Status raid proliant: 1.3.6.1.4.1.232.3.2.3.1.1.4 Status ventilation proliant: 1.3.6.1.4.1.232.6.2.6.5.0 Status canaux scsi proliant: 1.3.6.1.4.1.232.5.2.2.1.1.7 Test RAID : snmpwalk -OX -c public -v 1 192.168.2.1 .1.3.6.1.4.1.795 HP – Disques durs ./check_snmp -H 192.168.2.14 -C public -o .1.3.6.1.4.1.232.3.2.5.1.1.6.1.2 -r 2 -l 'Etat du Disque Dur 1' $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.232.3.2.5.1.1.6.$ARG2$ -r 2 -l 'Etat du disque dur $ARG3$' !public!chiffre!nbre 1 : other 2 : ok 3 : failed 4 : predictiveFailure Pour .20 !public!1.2!1 - 1er RAID !public!1.3!2 - 1er RAID !public!1.4!3 - 1er RAID !public!1.5!4 - 1er RAID !public!1.6!5 - 1er RAID !public!1.7!6 - 1er RAID !public!4.128!1 - 2eme RAID ... !public!4.152!14 - 2eme RAID Pour .19 !public!0.0!1 !public!0.1!2 !public!0.2!3 !public!0.3!4 Pour .18 !public!0.144!1 - 1er RAID !public!0.145!2 - 1er RAID !public!0.146!3 - 1er RAID !public!0.147!4 - 1er RAID !public!0.148!5 - 1er RAID !public!0.149!6 - 1er RAID !public!3.128!1 - 2eme RAID ... !public!3.143!14 - 2eme RAID Pour .17 !public!0.144!1 !public!0.145!2 !public!0.146!3 !public!0.147!4 !public!0.148!5 !public!0.149!6 HP ProCurve Switch 2848 Surveillance port 48 HP – Contrôleur RAID ./check_snmp -H 192.168.1.5 -C public -o .1.3.6.1.4.1.232.3.2.3.1.1.4.0.1 -r 2 -l 'Etat du RAID 1' $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.232.3.2.3.1.1.4.$ARG2$ -r 2 -l 'Etat du RAID $ARG3$' !public!chiffre!nbre snmpwalk -OX -c public -v 1 192.168.1.20 .1.3.6.1.4.1.232.3.2.3.1.1.4 pour afficher les RAID Nom des différents RAID : Pour 192.168.1.20 !public!1.1!1 !public!4.1!2 !public!4.2!3 Pour 192.168.1.19 !public!0.1!1 !public!0.2!2 2 : Ok 3 : Failed 4 : Unconfigured 5 : Recovering 6 : Ready Rebuild 7 : Rebuilding 8 : Wrong Drive 9 : Bad Connect 10 : Overheating 11 : Shutdown 12 : Expanding 13 : Not Available 14 : Queued For Expansion DELL http://support.ipmonitor.com/mibs/STORAGEMANAGEMENT-MIB/oids.aspx DELL – Contrôleur RAID $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.674.10893.1.20.130.1.1.5.1 -r 1 -l 'Etat du RAID' !public!chiffre!nbre ./check_snmp -H 192.168.2.21 -C public -o .1.3.6.1.4.1.674.10893.1.20.130.1.1.5.1 // 1 -> ID controlleur $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.674.10893.1.20.130.1.1.5.1 -r 1 -l 'Etat du RAID' 0: Unknown 1: Ready 2: Failed 3: Online 4: Offline 6: Degraded DELL - Batterie ./check_snmp -H 192.168.1.21 -C public -o .1.3.6.1.4.1.674.10893.1.20.130.15.1.4.1 $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.674.10893.1.20.130.15.1.4.1 -r 1 -l 'Etat batterie' !public 0: Unknown 1: OK 2: Failed 7: Reconditioning 9: High 10: Low 12: Charging 21: Missing DELL - Disques durs ./check_snmp -H 192.168.1.21 -C public -o .1.3.6.1.4.1.674.10893.1.20.130.4.1.23.1 -r 3 -l 'Etat du Disque Dur 1' $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.674.10893.1.20.130.4.1.23.$ARG2$ -r 3 -l 'Etat du Disque Dur $ARG2$' 1: Other 2: Unknown 3: OK 4: Non-critical 5: Critical 6: Non-recoverable IBM http://www.nagios-wiki.de/doku.php/snmp/start IBM - Controlleur RAID ./check_snmp -H 192.168.1.14 -C public -o .1.3.6.1.4.1.795.14.1.1000.1.1.11.1 // 1 -> ID controlleur $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.795.14.1.1000.1.1.11.1 -r 3 -l 'Etat du RAID' • !public IBM - Disques durs ./check_snmp -H 192.168.1.14 -C public -o .1.3.6.1.4.1.795.14.1.400.1.1.11.1 -r 3 -l 'Etat du Disque Dur 1' $USER1$/check_snmp -H $HOSTADDRESS$ -C $ARG1$ -o .1.3.6.1.4.1.795.14.1.400.1.1.11.$ARG2$ -r 3 -l 'Etat du Disque Dur $ARG2$' • !public!1 1 : unknown 2 : other 3 : okay 4 : warning 5 : failure -------------------------------------------------------------------------------------------- Pour grapher du « check_snmp_* » -> il ne faut pas oublier « -f » en argument ! TEMPS DES CHECKS ![]() - 3 essais avant de déclarer une erreur - Un check toutes les X * 60 secondes - Un nouvel essai toutes les X * 60 secondes NOTIFICATON Les mails d'alertes avaient une forme peu commode et il manquait des informations, voici ce que j'ai mis : Hotes-envoi-par-mail /usr/bin/printf "%b" "********* NAGIOS ********* Notification \n\n Type: $NOTIFICATIONTYPE$ \n Host: $HOSTNAME$ \n State: $HOSTSTATE$ \n Address: $HOSTADDRESS$ \n Groups: $HOSTGROUPNAME$ \n\n Last command name: $HOSTCHECKCOMMAND$ \n\n Info: $HOSTOUTPUT$ \n\n Date/Time: $SHORTDATETIME$ \n " | @MAILER@ -s "Host $HOSTSTATE$ alert for $HOSTNAME$ !" $CONTACTEMAIL$ Services-envoi-par-mail /usr/bin/printf "%b" "********* NAGIOS ********* Notification \n\n Type: $NOTIFICATIONTYPE$ \n Host: $HOSTNAME$ \n Service: $SERVICEDESC$ \n Address: $HOSTADDRESS$ \n Groups: $HOSTGROUPNAME$ \n\n State: $SERVICESTATE$ \n\n Date/Time: $SHORTDATETIME$ \n\n Last command name: $SERVICECHECKCOMMAND$ \n\n Additional Info: $SERVICEOUTPUT$" | @MAILER@ -s "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ TIPS DEBIAN Probleme de Locales Sous Debian choisir Locales -> FR_fr@Euro debian:~# dpkg-reconfigure locales perl: warning: Setting locale failed. perl: warning: Please check that your locale settings: LANGUAGE = (unset), LC_ALL = (unset), LANG = "fr_FR@euro" are supported and installed on your system. perl: warning: Falling back to the standard locale ("C"). locale: Cannot set LC_CTYPE to default locale: No such file or directory locale: Cannot set LC_MESSAGES to default locale: No such file or directory locale: Cannot set LC_ALL to default locale: No such file or directory /usr/bin/locale: Cannot set LC_CTYPE to default locale: No such file or directory /usr/bin/locale: Cannot set LC_MESSAGES to default locale: No such file or directory /usr/bin/locale: Cannot set LC_ALL to default locale: No such file or directory Generating locales (this might take a while)... fr_FR.ISO-8859-15@euro... done Generation complete. debian:~# /usr/bin/locale LANG=fr_FR@euro LC_CTYPE="fr_FR@euro" LC_NUMERIC="fr_FR@euro" LC_TIME="fr_FR@euro" LC_COLLATE="fr_FR@euro" LC_MONETARY="fr_FR@euro" LC_MESSAGES="fr_FR@euro" LC_PAPER="fr_FR@euro" LC_NAME="fr_FR@euro" LC_ADDRESS="fr_FR@euro" LC_TELEPHONE="fr_FR@euro" LC_MEASUREMENT="fr_FR@euro" LC_IDENTIFICATION="fr_FR@euro" LC_ALL= debian:~# Installation phpmyadmin cd /tmp wget http://www.pc-fute.com/materiel/images/nagios_oreon/phpMyAdmin-2.10.3-all-languages.tar.gz tar xzf phpMyAdmin-2.10.3-all-languages.tar.gz mv phpMyAdmin-2.10.3-all-languages /var/www/phpmyadmin http://localhost/phpmyadmin/ #1045 - Access denied for user 'root'@'localhost' (using password: NO) cd /var/www/phpmyadmin cp config.sample.inc.php config.inc.php nano config.inc.php // il faut spécifier un mot de passe $cfg['blowfish_secret'] = 'choisir_un_mot_de_passe'; Mettre à jour horloge apt-get install ntpdate /usr/sbin/ntpdate fr.pool.ntp.org apt-get install ntp-simple nano /etc/ntp.conf server 0.fr.pool.ntp.org server 1.fr.pool.ntp.org server 2.fr.pool.ntp.org /etc/init.d/ntp restart 0 */6 * * * /etc/init.d/ntp restart >> /tmp/cron_ntp_restart Changement IP nano /etc/network/interfaces iface eth0 inet static address 192.168.1.102 netmask 255.255.255.0 network 192.168.0.0 broadcast 192.168.255.255 gateway 192.168.10.254 /etc/init.d/networking restart ifup eth0 Installation POSTFIX apt-get install postfix courier-pop courier-base courier-authdaemon courier-imap myhostname = debnagios mydomain = localhost alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = $mydomain mydestination = $myhostname, localhost, $mydomain, localhost.$mydomain mynetworks = 192.168.0.0/16, 127.0.0.0/8 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all mail_owner = postfix relayhost = smpt.relais.com Accès extérieur Mysql Dans le code C# ou autre : "Database=perfparse;Data Source=192.168.2.90;User Id=stats_net;Password=plop;" Sous PHPmyAdmin : stats_net - % - Oui - SELECT - Non nano /etc/mysql/my.cnf #skip-external-locking #bind-address = 127.0.0.1 Ouvrir port 3306 du parefeu ou rediriger votre routeur. On teste en ligne de commande : "mysql -u stats_net -p -h 192.168.2.90". On rentre le mot de passe "plop" et on doit avoir la console MySQL. Si une erreur apparait, il s'agit d'une mauvaise configuration, vérifiez bien les manipulations effectuées plus haut. LIENS INTERNET Addons MOZILLA FireFox : https://addons.mozilla.org/fr/thunderbird/addon/3607 http://www.totkat.org/pages/nconf_commands.shtml http://nagios.manubulon.com/ http://www.totkat.org/pages/nagios.shtml Guide complet d’utilisation : http://wiki.oreon-project.org/index.php/DOSSIER_EXPLOITATION |











