Académique Documents
Professionnel Documents
Culture Documents
Jean Gabs
Prface de Cdric Temple (du projet FAN) Avec la contribution de Nat Makarvitch
Nagios 3
pour la supervision et la mtrologie
Dploiement, configuration et optimisation
Chez le mme diteur Dans la collection des Cahiers du programmeur Le livre de Packet Filter (PF), (coll. Cahiers de lAdmin). P. Hansteen, adapt par M. DercHe. N12516, 2009, 200 pages. Debian Lenny. Gnu/Linux . r. Hertzog, r. Mas. dirig par n. MakarvitcH. n12443, 2009, 442 pages avec dVd-rom. BSD, 2e dition (coll. Cahiers de lAdmin). e. Dreyfus. N11463, 2004, 300 pages. Scuriser un rseau Linux. B. BoutHerin, B. Delaunay. N11960, 3e dition, 2007, 250 pages. Le petit manuel des routeurs Cisco, (coll. Cahiers de lAdmin). M. lucas, adapt par M. DercHe. N12602, paratre. Asterisk. tudes de cas. (coll. Cahiers de lAdmin). P. sultan, dirig par N. MakarvitcH. N12434, paratre. Chez le mme diteur Scurit PHP 5 et MySQL. D. sguy, P. gaMacHe. N12554, 2e dition 2009, 286 pages. Scurit informatique. Principes et mthode lusage des DSI, RSSI et administrateurs. l. BlocH, C. WolfHugel. N12525, 2009, 292 pages. Adminsys. Grer son temps t. liMoncelli, adapt par S. BlonDeel. N11957, 2006, 274 pages. SSL VPN. Accs web et extranets scuriss. J. steinBerg, t. sPeeD, adapt par B. sonntag. N11933, 2006, 220 pages. Authentification rseau avec Radius. 802.1x. EAP. FreeRadius. s. BorDres, dir. n. MakarvitcH. N12007, 2007, 220 pages. Scuriser enfin son PC. Windows XP et Windows Vista. P. leganD. N12005, 2007, 500 pages. Mmento VMware Server. Virtualisation de serveurs. f. Manzano. N12320, 2008, 14 pages. Mmento Cisco. IOS Configuration gnrale. r. Bergoin, c. Bourg. N12347, 2008, 14 pages. Linux Administration. J.-f. BoucHauDy, g. gouBet. N12074, 2007, 800 pages. Mmento Unix/Linux. i. HurBain, avec la contribution de. Dreyfus. N11954, 2006, 14 pages. Debian. Administration et configuration avances. M. krafft, adapt par r. Hertzog et r. Mas. N11904, 2006, 674 pages. Management de la scurit de linformation. Implmentation ISO 27001. a. fernanDez-toro. N12218, 2008, 350 pages. Management de la continuit dactivit. e. Besluau. N12346, 2008, 256 pages.
ITIL pour un service informatique optimal. c. DuMont. N12102, 2e dition, 2007, 378 pages. Tableaux de bord de la scurit rseaux. c. llorens, l. levier, D. valois. N11973, 2e dition, 2006, 560 pages. Collection Accs Libre Linux aux petits oignons. K. Novak. N12424, 2009, 546 pages. Ubuntu efficace. l. Dricot. N12362, 3e dition 2009, 350 pages avec Cd-rom. MediaWiki efficace. D. Barrett. N12466, 2009, 372 pages. conomie du logiciel libre. f. elie. N12463, 2009, 195 pages. Freemind Boostez votre efficacit. X. Delengaigne, P. Mongin. N12448, 2009, 272 pages. Spip 2 Premiers pas pour crer son site avec Spip 2.0.3. A.-l. QuatravauX, d. QuatravauX. N12502, 2009, 300 pages. Russir son site web avec XHTML et CSS. M. neBra. N12307, 2e dition, 2008, 306 pages. Russir un site web dassociation avec des outils libres ! a.-l. QuatravauX et D. QuatravauX. N12000, 2e dition, 2007, 372 pages. Russir son site e-commerce avec osCommerce. D. Mercer. N11932, 2007, 446 pages. Open ERP Pour une gestion dentreprise efficace et intgre. f. Pinckaers, g. garDiner. N12261, 2008, 276 pages. PGP/GPG Assurer la confidentialit de ses mails et fichiers. M. lucas, ad. par d. garance , contrib. J.-m. tHoMas. N12001, 2006, 248 pages. Hackez votre Eee PC Lultraportable efficace. c. guelff. N12437, 2009, 306 pages. Monter son serveur de mails Postfix sous Linux M. Bck et al., adapt par P. tonnerre. N11931, 2006, 360 pages. Ergonomie web Pour des sites web efficaces. a. BoucHer. N12479, 2e dition 2009, 440 pages. Joomla et VirtueMart Russir sa boutique en ligne. v. isaksen, avec la contribution de t. tarDif. N12381, 2008, 306 pages. La 3D libre avec Blender. o. saraJa. N12385, 3e dition, 2008, 456 pages avec dVd-rom. Dessiner ses plans avec QCad Le DAO pour tous. A. Pascual N12397, 2009, 278 pages. Inkscape. Premiers pas en dessin vectoriel. n. Dufour, collab. e. De castro guerra. N12444, 2009, 376 pages. Inkscape efficace c. gMy N12425, 2009, 280 pages. Gimp 2.6 Dbuter en retouche photo et graphisme libre. d. roBert. N12480, 4e dition, 2009, 350 pages.
Nagios 3
pour la supervision et la mtrologie
Dploiement, configuration et optimisation
Jean Gabs
Prface de Cdric Temple (du projet FAN) Avec la contribution de Nat Makarvitch
le code de la proprit intellectuelle du 1er juillet 1992 interdit en effet expressment la photocopie usage collectif sans autorisation des ayants droit. Or, cette pratique sest gnralise notamment dans les tablissements denseignement, provoquant une baisse brutale des achats de livres, au point que la possibilit mme pour les auteurs de crer des uvres nouvelles et de les faire diter correctement est aujourdhui menace. en application de la loi du 11 mars 1957, il est interdit de reproduire intgralement ou partiellement le prsent ouvrage, sur quelque support que ce soit, sans autorisation de lditeur ou du Centre Franais dexploitation du droit de Copie, 20, rue des Grands-Augustins, 75006 Paris. Groupe eyrolles, 2009, iSBN : 978-2-212-12473-6
Prface
sa naissance, Netsaint (renomm plus tard en Nagios) entre dans les entreprises par la petite porte . Il sagit alors, pour les administrateurs de systmes dinformation, dinstaller un outil de supervision pour se faciliter la vie. Install sur un petit serveur reconverti, voire sur un ancien poste bureautique promu en serveur de supervision, Nagios ncessite peu de ressources : il se contente dans un premier temps de dtecter les serveurs et quipements rseau qui ne rpondent plus aux pings . Commence alors lvolution de Nagios au sein du SI. Sa mission stend en effet la vrification des services importants qui ne rpondent plus : services web (HTTP/HTTPS), services dinfrastructure (DNS, SMTP/POP/IMAP, DHCP, LDAP, etc.). Dans le mme temps, les administrateurs ne souhaitent plus tre avertis par les coups de tlphone de leurs utilisateurs... Ils mettent donc en place le principe de notification par e-mail, SMS ou messagerie instantane.
HUMOUR Le meilleur outil de supervision reste...
Le couple Utilisateur-Tlphone reste loutil de supervision le plus fiable... si on omet les faux positifs et lavalanche dalertes simultanes !
Pour une meilleure lisibilit, la supervision est ensuite couple un outil de tendances, gnralement bas sur RRDTool ou MRTG comme Cacti, par exemple. ce stade, seuls les administrateurs systme et rseau et ventuellement leurs responsables directs ont connaissance de lexistence doutils de supervision. Ces derniers restent donc trs techniques, et ne sont simples ni installer, ni utiliser. Ils sont mis en uvre par des administrateurs pour des administrateurs.
VI
Nagios 3
La tendance sinverse ensuite vers les annes 2003-2004. De nouvelles lois (Sarbanes/Oxley) imposent de garder trace des modifications sur le systme dinformation et, par voie de consquence, de superviser les quipements informatiques. De plus, la notion de production informatique commence enfin entrer dans les murs (mieux vaut tard que jamais !) : les directions informatiques souhaitent soutiller pour la mise en uvre dITIL, notamment. Ds lors, la communaut Nagios commence voir apparatre de nouveaux outils pour ces nouveaux publics ; ces outils ne sont plus installs par les administrateurs mais par des socits de services en ingnierie informatique (SSII) ou socits de services en logiciels libres (SS2L). Cest alors que Nagios commence entrer par la grande porte, en barrant la route aux logiciels de supervision historiques (Patrol, HP Open View). Dans un premier temps, il sagit de rendre Nagios plus attrayant. Finie la configuration en mode texte complexe et source derreurs, finie linterface web un peu austre : des thmes et des outils de configuration graphiques font leur apparition. Oreon (devenu Centreon comme Netsaint fut renomm Nagios avant lui) prend son essor grce une vritable rvolution dans le monde Nagios : la tendance est la centralisation de toutes les interfaces. Une seule interface est ncessaire dsormais pour faire la fois : la supervision ( visualisation en temps rel de ltat du SI ), la configuration de celle-ci, les graphiques de tendance et le reporting. En dehors de Centreon, qui a rellement pour but de mettre disposition toutes les fonctionnalits lies la supervision via une seule interface, il est aussi possible de btir une supervision qui semble pour lutilisateur unifie, mais qui reste btie sur de nombreuses briques. Par exemple, la supervision construite sur lensemble Nagios, NDOUtils, NagVis et Pnp4Nagios, une fois savamment configure, permet davoir un point unique dauthentification base sur le serveur LDAP du systme dinformation, tout en offrant la sensation dune interface unique. Ltape de dmocratisation suivante a consist fournir un ensemble intgr prconfigur, combinant de nombreux logiciels, mais pour autant dot dun systme dinstallation simple et efficace. Cest le but des projets comme EON (Eyes of Network) ou FAN (Fully Automated Nagios). Dautres ont choisi une voie lgrement diffrente mais avec les mmes buts en proposant des images de machines virtuelles prconfigures.
Prface
VII
tant lun des crateurs de FAN et responsable de ce projet, je ne peux gager de mon impartialit. Tous ces outils ont nanmoins pour but de proposer une supervision prte lemploi, fournie sur un systme dexploitation enrichi dapplicatifs de supervision. Par exemple, FAN est une distribution GNU/Linux totalement ddie la supervision Nagios. Toutes les mises jour sont intgres directement dans la distribution afin que ladministrateur se concentre sur ce quil doit superviser et non sur linstallation et les mises jour des outils. Aussi incroyable que cela paraisse, Nagios est donc bien lorigine de la cration de distributions dont il est le centre ! Peu doutils peuvent se targuer de cela. Tout cela vous est prsent dans ce livre avec de trs nombreux dtails. Vous apprendrez installer, configurer et administrer tous les outils. Les trs gros points forts de ce livre sont la progressivit et lexhaustivit du contenu. Tous les thmes importants y sont abords : pourquoi superviser, et quels lments superviser, les aspects psychologiques (plus importants quil ne paraissent et trop souvent ngligs), des conseils sur les bonnes pratiques, des points techniques trs dtaills (je conseille notamment le chapitre 14 sur la charge dun systme Unix/Linux !). La progression dans la difficult des lments abords est trs bien pense et satisfera tous les profils de lecteurs, du dbutant lexpert. Cest simple, si javais eu ce livre entre les mains mes dbuts, jaurais gagn un temps trs prcieux. Jean Gabs a ainsi crit le livre que jaurais toujours voulu avoir entre les mains. Outre ses connaissances techniques trs avances, son exprience et son talent dcrivain, il est dune gentillesse et dune simplicit rares. Il vous fait partager sa passion pour le monde de Nagios avec un regard prcis et intelligent, tout en gardant la distance et le recul ncessaires pour une analyse impartiale. Cdric Temple Responsable du projet FAN, Fully Automated Nagios Chef de projet chez MERETHIS, socit ditrice du logiciel Centreon
PREMIRE PARTIE
Nagios 3
CHAPITRE 2 Grandes lignes de ltude et de la mise en place dune solution de supervision .................................................... 15
Plus quun outil : un projet part entire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Revoir ses processus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Une rpartition de la charge de travail . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 La supervision doit voluer avec le SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Un outil faisant le lien entre les services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Une mise en place progressive . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 La tentation de tout superviser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Faire accepter le projet de supervision ses suprieurs . . . . . . . . . . . . . . . . . . . 18 Faire accepter loutil par le plus grand nombre . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Intrt de faire adhrer toute lquipe loutil . . . . . . . . . . . . . . . . . . . . . . . . . 19 Limiter le nombre dalertes et les hirarchiser . . . . . . . . . . . . . . . . . . . . . . . . . 19 Labandon face un trop grand nombre dalertes : une raction naturelle . . . . . 19 Rendre trs clair le niveau dimportance de chaque alerte . . . . . . . . . . . . . . . . 20 Alerter uniquement les bonnes personnes . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Pour un problme donn, une alerte, et une seule . . . . . . . . . . . . . . . . . . . . . 20 Lautomatisation complte : rgler automatiquement les problmes? . . . . . . . . 21 Des indicateurs aussi simples et clairs que possible . . . . . . . . . . . . . . . . . . . . . 22 Le problme du messager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 Big Brother is watching you ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 La conduite du changement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Beaucoup dindicateurs de performance, est-ce utile ? . . . . . . . . . . . . . . . . . . . 24 Le nombre dindicateurs est important . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Quelle dure de conservation des donnes ? . . . . . . . . . . . . . . . . . . . . . . . . . 25 Des chelles simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Superviseur mais galement hyperviseur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 La dure ralit de la supervision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Une seule console de supervision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Mthodes dobtention des informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 La modularit : rduire si possible le nombre de superviseurs . . . . . . . . . . . . . . 27 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
XI
Choix dune licence open source . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Le besoin dadaptabilit et de modularit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Transparence du mcanisme de remonte dalerte . . . . . . . . . . . . . . . . . . . . . . 30 De trs bonnes performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Mise en commun des expriences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 Critres de slection dun projet open source . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Un monde particulier, avec ses propres rgles . . . . . . . . . . . . . . . . . . . . . . . . . 31 Importance de la communaut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 Assistance aux entreprises . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Le choix de Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Histoire de Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Nagios ne fait rien sans ses plug-ins . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Position de Nagios par rapport la mtrologie . . . . . . . . . . . . . . . . . . . . . . . . . . . 33 Atouts de Nagios par rapport aux autres outils open source . . . . . . . . . . . . . . . . . 34 Zabbix : la supervision simplement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Cacti : la mtrologie avec SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 OpenNMS : la supervision trs SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Ganglia : la mtrologie des clusters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Zenoss : trs bonne supervision, mais pas compltement libre . . . . . . . . . . . . . 35 Orientation vers une totale modularit : tout est plug-in . . . . . . . . . . . . . . . . . 35 La modularit de Nagios : le rle des plug-ins . . . . . . . . . . . . . . . . . . . . . . . 35 Des plug-ins pour avertir ou ragir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Capacit grer un parc important de machines . . . . . . . . . . . . . . . . . . . . . . . 36 Performances de Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 Gestion de la configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 Pertes massives : la solution des dpendances . . . . . . . . . . . . . . . . . . . . . . . . 37 Architecture gnrale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Mthodes dobtention dinformations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Mthode active les alertes linitiative de Nagios . . . . . . . . . . . . . . . . . . . . . 38 Obtention sans rebond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Obtention avec rebond . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Mthode passive : les alertes linitiative des lments distants . . . . . . . . . . . . 39 Donnes dfinir dans Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Commandes de vrification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Arguments des commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Priodes de temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Dfinition des priodes de temps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Version simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Version plus complte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Commandes de notification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 De simples commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
XII
Nagios 3
Une grande libert . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Htes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 tats dun nud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Dfinition dun hte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Exemple de dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 tats des services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Dfinition dun service . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46 Exemple de dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Importance des services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Contacts : qui et comment ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Dfinition dun contact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 Exemple de dfinition de contact . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49 Plus dune manire de notifier un mme contact . . . . . . . . . . . . . . . . . . . . . . 50 Groupes de contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51 Plug-ins dobtention dinformations : les sondes . . . . . . . . . . . . . . . . . . . . . . . . . 51 Intrt des codes retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Une vrification simple du bon fonctionnement dun programme . . . . . . . . . . 52 Exemple de code retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Codes retour recommands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52 Positionner nos propres codes retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Aspect supervision de Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Interprtation des codes retour par Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Affichage des informations de retour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Conception dun script de vrification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 Codes retour non prvus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 lments complexes des plug-ins de vrification . . . . . . . . . . . . . . . . . . . . . . 56 Communication entre les Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Partie mtrologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Spcifier des donnes de performances dans les plug-ins . . . . . . . . . . . . . . . . . 58 Exemple de donnes de performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Arguments, macros et variables denvironnement . . . . . . . . . . . . . . . . . . . . . . 59 Arguments des commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Variables denvironnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 Ordonnancement des vrifications et des notifications . . . . . . . . . . . . . . . . . . . . 61 Ordonnancement initial des vrifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 taler la charge sur les machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 taler les vrifications sur le serveur Nagios . . . . . . . . . . . . . . . . . . . . . . . . 61 taler les vrifications sur les machines distantes . . . . . . . . . . . . . . . . . . . . . 62 Types dtat SOFT et HARD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
XIII
Exemple de changement de type dtat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Un tat SOFT un peu particulier : SOFT-RECOVERY . . . . . . . . . . . . . . . . 65 Notifications de problmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Notifications : le but des types dtat SOFT et HARD . . . . . . . . . . . . . . . . . 65 Renvoi de notifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 Exemple dordonnancement des notifications . . . . . . . . . . . . . . . . . . . . . . . . 66 Notifications : la configuration des contacts prime . . . . . . . . . . . . . . . . . . . . 67 En cas de problme persistant : lescalade des notifications . . . . . . . . . . . . . . . 68 Lorsque les problmes perdurent : on appelle un ami . . . . . . . . . . . . . . . . . . . 68 Bien penser laspect psychologique dune telle mise en place . . . . . . . . . . . . . . 68 Dfinition dans Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Exemple descalade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 Cas des notifications de type recovery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Destination de toutes les informations rcoltes . . . . . . . . . . . . . . . . . . . . . . . . . 70 Informations dtat, dalerte et de notification . . . . . . . . . . . . . . . . . . . . . . . . . 70 En cas de redmarrage : le fichier status.sav . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Un module dexport de donnes : NDOUtils . . . . . . . . . . . . . . . . . . . . . . . . . 71 Comment donner un ordre Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Fonctionnement de la communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 Ce quon peut lui demander . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Prise en compte dun tat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72 Forcer un rsultat de vrification dun service . . . . . . . . . . . . . . . . . . . . . . . 72 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
CHAPITRE 4 Premier niveau de test : rponse dun nud sur le rseau ..... 75
Tests directs sur le rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 Tests applicatifs simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Test des ports rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Un test simple et lger . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Test dun port TCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Un test suffisant pour la disponibilit dun hte . . . . . . . . . . . . . . . . . . . . . . 78 Test des services web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Principe des tests HTTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Le plug-in check_http . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 Cas des services web accs scuriss : authentification, HTTPS... . . . . . . . . . 81 Jouer un scnario plus complexe avec Webinject . . . . . . . . . . . . . . . . . . . . . . 83 Test des services DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 Mthode de supervision des DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Exemple de test DNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 Test des annuaires LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
XIV
Nagios 3
Mthode de supervision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Exemple dinterrogation LDAP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 Supervision du DHCP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Un lment indispensable pour les clients . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Sonde check_dhcp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 Problmes de droits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 La commande sudo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 Le bit SUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Supervision de la messagerie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Supervision dune base MySQL ou PostgreSQL . . . . . . . . . . . . . . . . . . . . . . . 92 Lorsque de simples vrifications rseau ne suffisent pas : les agents . . . . . . . . . . . 93 Rle des agents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Principaux agents disponibles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 NRPE : lancer des plug-ins distance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Fonctionnement de NRPE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Configuration du dmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Fichier de configuration principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Grer les exceptions de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Lancement de lagent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Exemple dinterrogation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 SSH peut galement faire laffaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Lancement de commandes travers SSH . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Problme de lauthentification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 Utilisation de SSH la place de NRPE . . . . . . . . . . . . . . . . . . . . . . . . . . 100 SNMP : une liste de donnes exportes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Le protocole SNMP et les OID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Exemple dinterrogation SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 SNMP sur les serveurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 NSClient++ : des plug-ins et des donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Mise en place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Un peu plus que des valeurs immdiates . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 Importance de WMI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
XV
Installation par le gestionnaire de paquetages . . . . . . . . . . . . . . . . . . . . . . . . 108 Avantages de linstallation par paquetage . . . . . . . . . . . . . . . . . . . . . . . . . 108 Quelques dsavantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Installation des paquetages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109 Principaux fichiers de configuration de Nagios . . . . . . . . . . . . . . . . . . . . . . . . . 111 Mise en place de la vrification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Description de lenvironnement supervis . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Configuration des contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Commandes denvoi de-mails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Configuration des priodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114 Configuration des contacts dans contacts.cfg . . . . . . . . . . . . . . . . . . . . . . . . 115 Configuration des htes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Commande de vrification des htes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Configuration des htes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Configuration des services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 Commande de vrification des services web . . . . . . . . . . . . . . . . . . . . . . . . 119 Configuration des services web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 Dfinition des fichiers de configuration dans nagios.cfg . . . . . . . . . . . . . . . . 121 Lancement de Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 Test de dtection dun problme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 Complexifions un peu larchitecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Supervision des systmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Importance de la supervision systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125 Supervision du serveur de supervision . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126 Prise en compte de localhost par Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 Supervision des systmes distants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 Mise en place de la console de supervision . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Une brique utile dans la solution de supervision . . . . . . . . . . . . . . . . . . . . . 133 Une interface qui volue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Mise en place de linterface web . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 Implications dune augmentation du nombre dlments . . . . . . . . . . . . . . . . . . 135 Une augmentation invitable du nombre de nuds . . . . . . . . . . . . . . . . . . . . 135 Une augmentation dangereuse du nombre de notifications . . . . . . . . . . . . . . 135 Une lourdeur croissante de la configuration . . . . . . . . . . . . . . . . . . . . . . . . . . 136 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137
DEUXIME PARTIE
XVI
Nagios 3
XVII
Comment obtenir le rsultat inverse dune commande . . . . . . . . . . . . . . . . . . 163 gayer (un peu) les alertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Le fond et la forme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 Un peu de couleur dans un monde de brutes . . . . . . . . . . . . . . . . . . . . . . . . . 165 Alertes en flux RSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Un vecteur dinformation trs employ et pratique . . . . . . . . . . . . . . . . . . . 166 Mise en place de rss-multiuser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Exemple de flux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 Alertes par SMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 Canaux dalerte non conventionels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Des moyens dalerte originaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Lecture dun son . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Alerte sur lcran LCD du clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 Le lapin qui chante et qui danse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171 Le lance-roquettes USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172 Les ractions sur alertes, ou comment rgler automatiquement les problmes . 173 Une solution sduisante double tranchant . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Gestionnaires dvnements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 Dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Gestion de leffet yoyo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Une tempte de messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Mthode de dtection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 Exemple de dtection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Gestion des priodes de maintenance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179
XVIII
Nagios 3
Suivi prcis des tats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Exemple de paramtrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Services passifs : exemple de gestion des alertes SNMP (traps) . . . . . . . . . . . . . 187 Intrt des services passifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Les vrifications actives ne peuvent pas tout . . . . . . . . . . . . . . . . . . . . . . . 187 Donner linformation dtat Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 Notion de fracheur dun tat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Limites des alertes passives simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Comme pour le poisson, la fracheur est importante . . . . . . . . . . . . . . . . . . . 189 Un plug-in toujours en erreur pour prvenir les administrateurs . . . . . . . . . 190 Exemple de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Positionnement correct du seuil de fracheur . . . . . . . . . . . . . . . . . . . . . . . . 191 Comment grer les traps SNMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Configuration de SNMPTRAPD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Configuration de SNMPTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Configuration du service TRAP pour la rception des alertes . . . . . . . . . . . . 194 Exemple de rception dune alerte SNMP . . . . . . . . . . . . . . . . . . . . . . . . . 195 Rception et traitement des alertes passives distantes . . . . . . . . . . . . . . . . . . . 195 Un moyen efficace de rcolter les tats distants : NSCA . . . . . . . . . . . . . . . . 195 Son fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Configuration du dmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Configuration du client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Lancement du dmon et du client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Exemple dapplication : traitement des journaux par un service distant . . . . . 199 Un type de vrification particulier : surveiller un cluster . . . . . . . . . . . . . . . . . . . 201 Des clusters varis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 Supervision des services rels . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 En actif / actif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 En actif / passif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 Avoir une vue agrge du cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Plug-in check_cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 Macros la demandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 Exemple de tests du cluster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 Ne pas oublier la vue utilisateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207
XIX
Grer simplement une configuration complexe . . . . . . . . . . . . . . . . . . . . . . . 211 Hritage de mme type : dfinition de modles . . . . . . . . . . . . . . . . . . . . . . . . . 213 Factorisation simple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Factorisation par modle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Mise en place dans Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213 Gestion des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Hritage sur les services et les contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 Cascade dhritages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Arbre dhritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216 Exemple darbre dhritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217 Hritages multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218 Avoir plus dun modle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Dfinition au sein de Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219 Exemple de dfinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Ordre dhritage entre modles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 Priorit la premire valeur assigne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Exemple dordre dhritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221 Rduction de la configuration : application des services sur les groupes de nuds . . . 223 Groupes de machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 Ajout de services un groupe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 Dfinir un service sur un groupe de nuds . . . . . . . . . . . . . . . . . . . . . . . . . 224 Dfinition et exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 Gestion des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226 Hritage implicite : hriter dun autre type . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228 Problmes soulevs par lassociation des services aux groupes . . . . . . . . . . . . . 228 chaque problme sa solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Rechercher les informations dupliques . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Raction de Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229 Exemple dhritage implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 Une solution ne pas utiliser systmatiquement . . . . . . . . . . . . . . . . . . . . . . 231 Hritages des macros variables : gnralisation de lhritage implicite . . . . . . 232 Lintrt des macros variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Exemple dutilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232 Hritage additif : ajouter une valeur au lieu de lcraser . . . . . . . . . . . . . . . . . . . 233 Limites des modles simples et solution de Nagios . . . . . . . . . . . . . . . . . . . . 234 Hritage additif sur hritage implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 235 Hritages : ordre de succession . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 Impact de cette puissance de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 238
XX
Nagios 3
XXI
Trouver un bon cache hit ratio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263 Options spcifiques aux environnements trs tendus . . . . . . . . . . . . . . . . . . 263 Suppression des variables denvironnement . . . . . . . . . . . . . . . . . . . . . . . . 264 Nettoyage de lespace mmoire des plug-ins . . . . . . . . . . . . . . . . . . . . . . . . 265 Suppression de la double duplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266 Utilisation conjointe des trois techniques . . . . . . . . . . . . . . . . . . . . . . . . . . 267 Positionnement des fichiers intermdiaires . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Systmes de fichiers en mmoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 268 Fichier status.dat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 269 Rpertoire checkresults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 270 Impact des fichiers temporaires en mmoire . . . . . . . . . . . . . . . . . . . . . . . . 270 Consommation de RAM de Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 Architectures distribues . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272
XXII
Nagios 3
Clients DNX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297 Avantages et inconvnients . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Utilisation de DNX et NDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299 Rpartition de charge haute-disponibilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Le besoin accru de disponibilit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 chaque Nagios son ombre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301 Haute-disponibilit pour NDO2DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Un service important doubler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 303 Mise en place de HeartBeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 304 Adresse virtuelle pour NSCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 Supervision de HeartBeat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 307
TROISIME PARTIE
XXIII
Un historique des alertes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324 Restrictions daccs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 Des informations prives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 Diminuer le nombre dlments affichs . . . . . . . . . . . . . . . . . . . . . . . . . . . 325 Des accs en modification surveiller . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Gestion des accs selon Centreon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326 Centreon, gestionnaire de la mtrologie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 328 CentStorage : le gestionnaire des donnes de performances . . . . . . . . . . . . . . 328 Destination des informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Accs aux courbes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 329 Des informations sur les performances de Nagios . . . . . . . . . . . . . . . . . . . . 330 Centreon facilite la gestion des alertes SNMP . . . . . . . . . . . . . . . . . . . . . . . . 331 Un chargement et une compilation automatique . . . . . . . . . . . . . . . . . . . . . 331 Remonte dalertes de SNMPTT vers Nagios . . . . . . . . . . . . . . . . . . . . . . 332 Centreon pour grer Nagios en distribu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Une configuration complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Les Nagios distants : des pollers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 333 Associations poller / htes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Envoi des configurations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334 Des Nagios presque indpendants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Mtrologie issue des satellites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 335 Des notifications repenser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 336
XXIV
Nagios 3
Choix des images par ladministrateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Images des lments superviss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346 Bibliothque dimages libres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Rcupration des tats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 347 Ndomy : lecture depuis une base MySQL (ndo2db) . . . . . . . . . . . . . . . . . . . 348 Ndo2fs : lecture depuis des fichiers plats . . . . . . . . . . . . . . . . . . . . . . . . . . . 349 Rotation des vues dans NagVis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351 Mise jour automatique des cartes lajout dun noeud . . . . . . . . . . . . . . . . . 352 Reporting dans Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352 De limportance dune analyse plus globale et dans le temps . . . . . . . . . . . . . . 352 Dfinir les indicateurs : une mission dlicate . . . . . . . . . . . . . . . . . . . . . . . . . 353 Le module de reporting de Centreon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 355
XXV
XXVI
Nagios 3
Sous Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403 Sous les systmes Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 404 Cas des gestionnaires de bases de donnes . . . . . . . . . . . . . . . . . . . . . . . . . . . 405 Espace dchanges sollicit non vide malgr la mmoire disponible . . . . . . . . 405 Relation de dpendance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 406 Problme des I/O disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Une ressource trs limitative . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407 Une supervision complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Supervision de la charge rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Des liens parfois insuffisants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408 Systmes dexploitation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Sous Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 lments rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 409 Le reste de la supervision systme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 410 Espace disque . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Une ressource importante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Seuils dalerte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411 Sondes de supervision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412 Montages NFS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Agrgats rseau . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 tat des imprimantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413 Sous Unix . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Sous Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 414 Services lancs automatiquement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Redmarrage des machines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415 Indicateurs physiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 Alertes prioritaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 Temprature et humidit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416 La temprature : une valeur trs variable . . . . . . . . . . . . . . . . . . . . . . . . . 417 Lhumidit : variable suivant la saison . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 Consommation lectrique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417 En un mot . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418
XXVII
Groupes de machines superviser . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423 Packs de sondes mettre en place . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 424 Lindispensable base de connaissances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Configuration de Nagios dans Centreon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Un ou plusieurs Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425 Configuration dun Nagios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Fichiers journaux et autres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Options de vrification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Options de timeout . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 426 Interaction avec NDO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Options de performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Pages de dbogage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Configuration de NDO dans Centreon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 427 Accs la base de donnes (NDO2DB) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 NDOMOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 428 Application des techniques dhritage dans Centreon . . . . . . . . . . . . . . . . . . . . 429 Choix de la mthode de configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Configuration des commandes et des contacts . . . . . . . . . . . . . . . . . . . . . . . . 429 Des commandes dj configures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 429 Facilits de configuration apportes par Centreon . . . . . . . . . . . . . . . . . . . . 430 Configuration des sondes check_nrpe et check_nt . . . . . . . . . . . . . . . . . . . . . 431 Commande denvoi des e-mails . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432 Configuration des contacts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Configuration des htes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Commencer par les modles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 433 Dfinir les groupes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 434 Configuration fastidieuse des nuds . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Configuration des services . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 435 Quelques principes de bon sens : nommage et parcimonie . . . . . . . . . . . . . . . 435 Commencer encore par les modles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Les packs dabord . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436 Les particularits de la supervision systme ensuite . . . . . . . . . . . . . . . . . . . 437 Les applications pour finir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 438 Ne pas oublier la base de connaissances . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Configuration des ACL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Gnration de la configuration par Centreon . . . . . . . . . . . . . . . . . . . . . . . . . . 439 Cration des vues agrges dans NagVis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441 Sparation des diffrents types de cartes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Mise en place dune nouvelle carte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Choix des indicateurs reprsents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442 Une hirarchie de cartes respecter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
XXVIII
Nagios 3
Index........................................................................................... 477
Avant-propos
Ce livre est un guide pour ltude et la mise en place dune solution de supervision Open Source base sur Nagios. Il voque les principes fondamentaux de la supervision et de la mtrologie. Loutil qui sera utilis est Nagios, et louvrage tente de dcrire ce que les administrateurs seront amens utiliser dans une mise en uvre en conditions relles. Nous y voquons les cueils classiques de la mise en place dun outil de supervision et nous proposons des mthodes afin de les viter. Enfin, nous tudions tout laspect projet de cette mise en place afin que les administrateurs puissent grer au mieux les possibles rticences qui ne manqueront pas de faire surface de la part de leurs collgues.
Nagios 3
Avant-propos
La premire partie permet de familiariser le lecteur avec les problmatiques de la supervision des systmes modernes. La solution propose pour y rpondre repose sur Nagios, dont les grands principes sont analyss. Les aspects projet de la mise en uvre sont tudis afin dalerter le lecteur sur les points importants considrer avant de proposer loutil au reste de lquipe. Cette partie se termine par une premire mise en place o le lecteur pourra observer Nagios en action, mais galement les problmes que soulve une augmentation du nombre dlments surveills, notamment en matire de gestion de configuration. La deuxime partie approfondit le fonctionnement de Nagios. Ses possibilits pour grer un parc important de machines sont tudies, tant en termes de performance quen termes de gestion de configuration. Cette partie traite galement des mthodes permettant de faire accepter la solution auprs des autres administrateurs. Sans adhsion de leur part, le projet est vou lchec, mme sil est techniquement pertinent. La troisime partie concerne lcosystme de Nagios. Les outils daide la configuration sont tudis et nous en prsentons les avantages et inconvnients afin que le lecteur puisse faire ses choix en connaissance de cause. Un chapitre est ddi linterprtation des indicateurs classiques sur les systmes et rseaux. Enfin, la mise en place finale permet ladministrateur de disposer dune solution complte prte lemploi.
Guide de lecture
Les diffrentes parties de cet ouvrage sont relativement indpendantes. Lordre de lecture conseill pour une personne nayant aucune connaissance en matire de supervision est de suivre tout simplement les chapitres les uns aprs les autres. Les principes lui seront prsents, suivis de leur application dans le monde rel. Les administrateurs ayant dj des connaissances sur la mise en place dune solution de supervision peuvent sauter les deux premiers chapitres. Ceux qui connaissent dj bien Nagios peuvent, sils le souhaitent, passer la premire partie. La seconde partie constitue le cur de ltude. Sa lecture est fortement conseille, mme pour ceux qui ont dj des connaissances au sujet de Nagios. Enfin, les chapitres finaux sont conseills, y compris pour les administrateurs qui souhaitent utiliser des mthodes automatiques de mise en place de Nagios. Ils y verront les problmes les plus courants concernant la configuration de loutil aprs installation. Le chapitre 14 sur les indicateurs de supervision et leur interprtation est un passage oblig pour les administrateurs systme.
Nagios 3
Remerciements
Je tiens remercier Ethan Galstad sans qui Nagios naurait pas exist. Il assure depuis de nombreuses annes le suivi de loutil, ne cesse de lamliorer et de faciliter la vie des administrateurs. Merci aux auteurs de Centreon ainsi qu la communaut forme autour de cet outil. Jai une pense toute particulire pour Guigui2607 et Vcarp pour leur aide dans la comprhension de la latence de Nagios et dans les nombreuses tentatives que nous avons menes pour lamliorer. Merci Cdric Temple davoir accept dcrire la prface et de tester mes programmes pas toujours bien finis. Jai une pense pour les administrateurs de la socit Lectra qui mont permis de mettre en place une solution base sur Nagios. Tout particulirement Jean-Philipe Leroy pour avoir cru en ce projet, Laurent Audoin pour ses intressants changes sur la charge des machines et enfin ric Beaulieu pour ses demandes toujours plus varies et son aide dans le dur travail de relecture de mes crits. La taille et les particularits de lenvironnement de Lectra, ainsi que les demandes de supervision diverses et varies, mont permis de tester toujours plus loin les possibilits de Nagios. Je tiens galement remercier lquipe des ditions Eyrolles et en particulier Muriel Shan Sei Fan et Nat Makarvitch pour leur soutien et leurs remarques toujours constructives, ainsi quIsabelle Hurbain et Sandrine Burriel, mais aussi Gal Thomas et Sophie Hincelin. Mes remerciements les plus nourris vont indiscutablement ma femme Caroline qui, outre le fait de supporter un mari qui passe ses soires le nez sur un portable, ma gentiment propos de soccuper des diagrammes. Sans son aide, ils nauraient pas t aussi clairs et agrables regarder. Je remercie enfin notre petit William qui je ddicace ce livre. Ne me voyant pas donner le biberon et crire en mme temps, il ma permis de fixer simplement les chances de rdaction et dtre tout particulirement motiv pour les respecter.
PREMIRE PARTIE
Nagios 3
Le chapitre 5, enfin, propose de mettre en place une premire solution de supervision avec un objectif simple : surveiller quelques serveurs web. Bien que cette premire exprience soit facultative, il est fortement conseill au lecteur de sy confronter afin de mieux comprendre les limites dune utilisation sommaire de Nagios. Les informations prsentes dans la seconde partie de louvrage nous serviront prcisment dpasser ces limites.
1
Intrt de la supervision et de la mtrologie
Le mtier dadministrateur devient de plus en plus complexe, do limportance pour lquipe de gagner en temps et en efficacit grce un bon outil de supervision.
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
avec des architectures robustes, on estime gnralement 80% de lactivit dun administrateur la rsolution de problmes. Voil pourquoi il vaut la peine de chercher diminuer cette part qui, il faut bien lavouer, est loin dtre la plus intressante, et de surcrot najoute aucune valeur aux systmes.
10
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
11
12
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
malheureusement pas sen remettre aux utilisateurs pour cela, car ces derniers nont pas de vision globale du systme dinformation et tendent considrer que leur souci est le plus critique de tous. Loutil de supervision peut ainsi aider mettre des priorits sur les interventions des administrateurs et leur permettre de se concentrer sur lessentiel. Avec un taux de disponibilit des applications ainsi pondr par leur criticit, la disponibilit globale du systme dinformation est amliore.
13
Un ordonnanceur ?
Un outil de supervision nest rien de plus quun ordonnanceur un peu spcial. En gnral, il neffectue pas daction mais juste des vrifications. Il est cependant possible de linstrumenter pour ordonnancer des traitements mais avec des limites vite atteintes puisque ordonnancer des traitements nest pas sa vocation premire. Par exemple, un outil de supervision est spcialis dans le lancement de nombreux petits programmes, chacun rcuprant une valeur, tandis que les ordonnanceurs lancent en gnral un nombre restreint de traitements, mais qui peuvent durer plusieurs heures. Le paramtrage et le comportement de lapplication sont inadapts face une telle utilisation. Cela dit, face au cot important dun outil dordonnancement, il est tentant de laisser cette tche loutil de supervision. Mais cest au risque davoir un service de pitre qualit et de mettre en pril certains traitements, ce qui peut au final se rvler plus coteux. Autre phnomne galement observable sur bien des outils de supervision, leur primtre de surveillance dpasse les limites du systme dinformation. De tels dpassements peuvent tre justifiables ou au contraire ne pas tre pertinents du tout.
14
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Formes dalertes De telles informations (accs, humidit, temprature, panne courant) sont critiques et doivent tre remontes de toute urgence aux responsables de la salle machine. Un simple courrier lectronique nest bien souvent pas suffisant peu de chances en effet que ladministrateur aille consulter ses messages 4 heures du matin. Un SMS envoy sur un tlphone dastreinte aura plus dimpact. Ainsi diffrentes faons davertir sont prvoir dans une solution de supervision. Elles doivent tre tudies avec soin. Des SMS envoys tort nauront pour effet que dinciter les personnes dastreinte ne pas les lire, voire teindre le tlphone.
En un mot
Pour ceux qui ntaient pas dj convaincus, les outils de supervision et de mtrologie sont indispensables la bonne administration dun systme dinformation. Sans eux, ladministrateur est priv de moyens fiables et rapides de vrifier que les lments de linfrastructure et les applications sont oprationnels.
2
Grandes lignes de ltude et de la mise en place dune solution de supervision
La mise en place dun outil de supervision est un projet complexe, dont il faut prvoir et prvenir les plus gros cueils.
16
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
un lien vers la mthode de rsolution du problme. Sans cela, les administrateurs risquent fort de perdre du temps rsoudre un incident qui sest dj produit sans oublier que cela prive lquipe dans son ensemble dun moyen de progresser. Il en est de mme concernant la mtrologie. Si les administrateurs ne lutilisent que pour observer les ressources sur les dernires minutes, elle perd son intrt face la supervision. Il faut que les administrateurs lutilisent dans son vrai rle, savoir celui dun outil permettant dobserver lvolution des ressources sur des priodes longues de plusieurs mois. De manire gnrale, loutil de supervision permet doptimiser une grande partie des processus des quipes. Il faut que la mise en place dun tel outil soit prcde dune vritable analyse de ces processus et, en tout premier lieu, ceux qui concernent la gestion de la base de connaissances ou le calcul des besoins futurs.
REMARQUE Une entreprise complexe
Les administrateurs de doivent pas se leurrer : la russite du projet de supervision sera autant technique quorganisationnelle. Si ce dernier point nest pas lactivit prfre de la majorit des amoureux de la technique, ce projet pourrait les rconcilier avec cet aspect de leur mtier.
17
Ainsi le processus de mise en place des outils doit tre adapt. Si tous les outils ne ncessitent pas une supervision, les plus importants doivent tre sous surveillance, mme sommairement. Il est cependant prfrable de superviser lensemble de son portefeuille dapplications et linfrastructure qui le sous-tend.
18
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
19
20
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
21
Il faut donc toujours bien rflchir avant dutiliser la possibilit de rsolution de problmes. Si les effets nfastes sont potentiellement plus importants que les gains, il
22
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
faut renoncer la mise en place, mme si leffet nfaste peut ne se produire quune fois dans la vie de loutil. Noubliez pas quen informatique, est une loi immuable du nom de Murphy...
Prenons le cas dun redmarrage de serveur. Lindicateur observer est uptime , disponible sur tous les systmes. Il permet de voir depuis combien de temps le systme est lanc. Si la valeur est infrieure cinq minutes, cest que le serveur vient tout juste de redmarrer. Il faut alors lever une alerte. Mais comment nommer cette alerte ? On pourrait lappeler Uptime , mais ce nom nest pas parlant. Il vaudrait mille fois mieux la nommer simplement Reboot . Un tel message derreur sera directement compris, mme par le plus endormi des administrateurs...
BONNE PRATIQUE Limiter le nombre de caractres des titres dalertes et parler le langage de
ladmin Ce nest pas tant par une contrainte physique de nombre de caractres que par la capacit instantane de ladministrateur embrasser le sens dun titre quil faut en limiter la longueur. Il faut aussi viter lexcs inverse et ne pas hsiter allonger lgrement un titre pour le rendre plus explicite. Dautre part, il faut bien reconnatre que les administrateurs ont leur langage. Pour preuve le cas dune coupure rseau massive due une boucle cause par un quipement dfaillant : la personne qui a lu lalerte a couru vers les administrateurs en pause caf, en criant simplement : Boucle la logistique ! . Autant dire que les administrateurs ont laiss l leur caf et ont couru vers le lieu en question. La formule tait lapidaire mais efficace, les moindre secondes gagnes tant bonnes prendre pour viter que le feu ne se propage davantage.
Bien entendu, tout nest pas simple synthtiser, surtout dans le cas des erreurs. Il faut alors, tout le moins, que ladministrateur ait accs simplement aux informations complmentaires sur les erreurs dtectes. Loutil de supervision doit tre reli la base de
23
connaissances de lentreprise. Ladministrateur peut alors simplement regarder la documentation et traduire lerreur en quelque chose quil matrise mieux. Rappelons que cette base de connaissances doit absolument tre remplie rgulirement, y compris pour les indicateurs les plus simples. En effet, ce qui est trivial pour ladministrateur qui soccupe tous les jours de ces environnements ne lest pas forcment pour un nouvel arrivant dans lquipe.
PRATIQUE Un wiki est idal !
Pour la base de connaissances, un simple Wiki fait trs bien laffaire. Commodes et ludiques, les wikis ont le soutien de la plupart des administrateurs. Le logiciel libre MediaWiki, utilis notamment par Wikipedia, est trs simple mettre en uvre et offre un excellent cadre pour constituer une base de connaissances. Il faut cependant veiller la validit des informations dans le temps. Un wiki, par son fonctionnement mme, peut voir cohabiter sur la mme page des informations jour et obsoltes. De manire gnrale, dater la documentation est une pratique encourager. R Barrett, MediaWiki efficace, Eyrolles 2009
Le problme du messager
Il est dans la nature humaine de confondre le message et le messager. Cela peut poser problme dans le cas dune solution de supervision. Celle-ci va en rgle gnrale annoncer de bien mauvaises nouvelles : une application est arrte, un disque est en panne sur un serveur, ou bien ladministrateur na pas prvu assez de ressources sur les serveurs. Le message ntant pas trs flatteur, les administrateurs prennent parfois mal les alertes quils reoivent et considrent alors loutil de supervision comme un oiseau de mauvais augure. Cela peut dgnrer et arriver une situation o ils ne veulent plus couter ce que leur dit loutil et le dlaissent ce qui nest pas souhaitable. Il faut faire comprendre aux administrateurs que loutil est l pour les aider dterminer ce qui ne va pas dans le systme dinformation. Il faut bien leur rappeler que quels que soient leurs efforts, il y aura toujours quelque chose qui ne fonctionnera pas correctement. Il y aura toujours des alertes. Il faut leur faire sentir le plus tt possible les effets bnfiques de loutil, en leur rapportant par exemple les amliorations des taux de disponibilit. Ils verront alors le bon ct de loutil, cens les aider amliorer le systme tout en facilitant leur travail.
24
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
trateurs peuvent se sentir mal laise avec ce genre de projet, et feront tout pour faire chouer sa mise en place. Aussi est-il ncessaire de donner un peu despace priv ladministrateur : en ne rendant pas les informations publiques, ce dernier ne se sentira pas surveill et ne freinera pas son bon fonctionnement. Il faut, de plus, lui faire prendre conscience que loutil est en place pour laider et non le superviser, lui. Il est une arme donne ladministrateur contre les soucis quil rencontre tous les jours. Il faut chercher limpliquer davantage dans la dcision de la mise en place, afin quil ne ressente pas quon lui impose un outil, mais plutt quon lui propose une aide lamlioration du systme dans son entier.
La conduite du changement
Autre habitude fcheuse des utilisateurs : voir tout changement comme nfaste. Les administrateurs sont, sur ce point, des utilisateurs comme les autres. La gestion du changement est au cur de chaque projet. Elle doit tre accompagne correctement. Dans le cas contraire, le projet choue ou arrive dans la douleur. Un moyen classique de grer cette situation consiste limiter au maximum les diffrences entre lancien et le nouveau systme. Les utilisateurs retrouvant certains repres, ils sont moins enclins pester contre le changement. Dans le cas du systme de supervision, il faut regarder ce quil y avait avant. Il est rare que des administrateurs naient aucun outil pour observer ltat de fonctionnement des systmes. Si ces outils sont sommaires et disparates, il faut tout de mme en tenir compte et chercher les intgrer au systme de supervision. Grce cela, les administrateurs se sentiront en terrain connu. Ils nauront pas apprendre un nouvel indicateur et ils rsisteront moins larrive du nouvel outil.
25
26
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
27
Cette solution de laisser linitiative loutil tiers ne doit donc tre choisie que si une mthode active nest pas possible.
En un mot
Bien quindispensable, la mise en place dun outil de supervision ne simprovise pas. Si ladministrateur se borne vouloir considrer ce projet dun point de vue purement technique, il est vou lchec. De nombreux obstacles se dressent devant lui, le premier tant que les autres administrateurs peuvent mal vivre larrive de la solution. Des mthodes existent pour diminuer ces problmes. Une fois adopt et intgr aux processus du service, loutil permet damliorer sensiblement la disponibilit du systme dinformation et dallger la charge pesant sur les administrateurs.
3
Choix dune solution de supervision : atouts et fonctionnement de Nagios
Sur quels critres juger une solution de supervision ? Quel est le fonctionnement de Nagios, rfrence open source en matire de supervision ? La mise en place de la solution de supervision devant tre traite comme un projet part entire, commenons par ltude des besoins.
30
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
exemple de ne pas tre utilis pour signaler un problme sur un environnement de test avant mise en production. Lutilisation dun outil open source est tout indique dans ce genre de situation.
31
une partie restreinte. Les systmes ont, en gnral, de nombreux points communs et doivent tre superviss de la mme manire. Au sein dune communaut dutilisateurs, il est possible de partager et de rassembler les meilleures pratiques de supervision. Ce phnomne de communaut est extrmement marqu lorsquil sagit doutils open source car tout le monde peut participer la conception de lapplication, et chacun peut apporter son exprience dans la supervision dun lment particulier et en faire profiter lensemble de la communaut.
Importance de la communaut
La solution ne peut progresser que si elle possde une grande communaut. On peut parler de masse critique dutilisateurs pour quune solution devienne une rfrence dans le monde de lopen source. Les solutions non innovantes nont pas beaucoup dutilisateurs et priclitent.
32
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Une fois quune solution est trs prsente au sein de la communaut, vient la phase o les entreprises commencent sy intresser : se pose alors la question de lassistance.
Les solutions de supervision open source ne font pas exception la rgle. Elles sont soumises, comme toutes les autres, aux rgles de lopen source et de la communaut. Le rle de la communaut est mme plus important pour une solution de supervision (qui est confronte des situations extrmement varies) que pour la plupart des autres outils open source.
Le choix de Nagios
Si lon retient tous ces critres dans le choix dune solution open source stable, performante et ayant une forte communaut, Nagios sort largement vainqueur. Cette solution est en effet la rfrence en matire de supervision dans le monde de lopen source.
Histoire de Nagios
Lhistoire dun outil peut nous en apprendre beaucoup sur lui. Nagios est dvelopp par Ethan Galstad et dbute son histoire en 1999 sous le nom de NetSaint. Quelque temps plus tard, cause dun problme de proprit intellectuelle sur le nom, il devient Nagios. Actuellement en version 3.1, il a plus de neuf ans dexistence. Comme nous le verrons par la suite, il se bonifie avec lge, limage dun grand vin.
33
Il a volu depuis ses tous dbuts afin de sadapter des parcs de plus en plus importants, tout en amliorant ses performances et ses capacits de gestion de configuration.
34
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
35
possde pas de fonctionnalit de gestion des dpendances, ce qui reprsente un handicap lourd dans les environnements complexes. Hors des tests SNMP classiques, OpenNMS est trs vite limit. Il est possible dinclure des tests supplmentaires, mais cest une solution relativement lourde grer.
36
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
cation dj mis au point et utiliss par les administrateurs avant la mise en place de Nagios. La plupart du temps, changer une seule ligne suffit les rendre compatibles avec Nagios. En effet, les rgles de Nagios sont standards dans le monde des administrateurs et bien des scripts dadministrateurs sont dj compatibles avec Nagios. Cest cette capacit dadaptation qui a fait de Nagios la solution la plus prise dans le monde de lopen source. La communaut qui sest forme autour est la plus importante en matire de supervision open source. Les administrateurs nayant pas besoin dtre dveloppeurs, le nombre de scripts de vrification proposs par la communaut est vritablement impressionnant. La communaut sest organise afin de fournir le plus simplement possible aux utilisateurs les plug-ins dont ils ont besoin. Ces plugins sont galement open source.
Performances de Nagios
En matire de performances, Nagios na rien envier aux outils de supervision propritaires. Il permet, avec un serveur modeste, de surveiller prs de 10 000 lments. Si cette performance est dj tout fait honorable, Nagios propose des options pouvant sensiblement augmenter cette valeur.
Nous les verrons au chapitre 9, ddi aux performances.
37
Larchitecture mme de Nagios permet de surveiller autant de nuds que souhaite lutilisateur. La supervision peut tre distribue entre plusieurs serveurs, tout en centralisant ladministration sur une unique console.
Cela sera tudi plus en dtail au chapitre 10.
Gestion de la configuration
Un point dlicat concernant la plupart des outils dadministration, mais touchant tout particulirement les solutions de supervision, est la gestion de la configuration. Plus on a de points surveiller, plus la configuration devient lourde, avec les risques, si elle devient trop dure grer, dtre laisse de ct. Nagios propose diverses solutions pour faciliter la gestion dun nombre lev de points surveills, et cest mme une de ses grandes forces !
Nous verrons au chapitre 8 toutes les techniques de configuration permettant de grer simplement et sans efforts un nombre impressionnant dlments.
38
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Architecture gnrale
Un outil de supervision peut paratre un monstre de complexit lorsquon commence ltudier : il nen est rien. Le fonctionnement de Nagios est trs simple... condition den tudier les parties une par une. Ladministrateur dfinit la configuration de Nagios dans des fichiers plats. Nous tudierons par la suite leur structure. Nagios est un simple programme crit en langage C. Si on exclut la partie interface web de visualisation, il ne fait pas plus de 60 000 lignes de code, ce qui est assez faible pour un outil dune telle renomme. Nagios se lance en tant que processus darrire-plan sur un serveur Unix, GNU/ Linux de prfrence. Il lit la configuration fournie par lutilisateur et commence ordonnancer ses vrifications. Lorsquil saperoit dune erreur sur un lment supervis, il notifie les utilisateurs concerns.
39
40
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
ce doit tre llment distant. Lenvoi des informations doit tre planifi et implique une configuration particulire des lments concerns. Ainsi dcentralise, une telle configuration peut tre trs ardue maintenir.
Ici nous voyons la dclaration dun objet type qui a comme valeur valeur1 pour parametre1. Certains paramtres sont indispensables, dautres sont optionnels. Les commentaires commencent par le signe ;.
CONFIGURATION Une exception notable ce modle : define
La seule configuration faisant exception au define concerne celle du dmon Nagios lui-mme. Ses paramtres ne sont pas contenus dans un bloc define mais directement placs les uns la suite des autres. Ils seront tudis tout au long du livre et une annexe en fait le rsum complet.
Nous ne verrons ici que les paramtres obligatoires et les plus importants des paramtres optionnels.
Commandes de vrification
Nagios a besoin quon lui fournisse les commandes responsables des vrifications des lments distants. Ce sont ces commandes qui dterminent ltat des lments distants et donnent linformation Nagios. Elles rcuprent galement les donnes de performances. Pour les dfinir, on doit instancier lobjet fichier commands.cfg.
command.
41
Ces objets sont simples et ne comportent que deux proprits : command_name : cest le nom de la commande tel quon va pouvoir lutiliser dans le reste de la configuration Nagios ; command_line : cest la commande que doit lancer Nagios. On remarque dans lexemple ci-dessous une valeur un peu particulire, $HOSTADDRESS$. Cest en fait une macro qui est positionne lors du lancement de la commande par Nagios. Elle peut changer de valeur suivant le contexte. Ici, elle est gale ladresse rseau de llment que lon veut surveiller. Les macros seront tudies un peu plus loin dans ce chapitre.
Exemple de commande
define command{ command_namecheck_tcp command_line /usr/local/nagios/libexec/check_tcp -H $HOSTADDRESS$ -p $ARG1$ }
Priodes de temps
Nagios a besoin de savoir quand superviser les lments et quand avertir les utilisateurs. Ces priodes de temps peuvent varier suivant les environnements. Il faut que lutilisateur puisse les dfinir librement.
42
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Version simple
Les priodes de temps peuvent tre exprimes simplement. Ici, par exemple, les horaires douverture du service :
Priode de travail
define timeperiod{ timeperiod_name workhours alias Work Hours monday 09:00,17:00 ;Lundi tuesday 09:00,17:00 ;Mardi wednesday 09:00,17:00 ;Mercredi thursday 09:00,17:00 ;Jeudi friday 09:00,17:00 ;Vendredi }
Comme nous pouvons le voir, les possibilits sont immenses et les utilisateurs vont pouvoir crer des priodes de temps correspondant leurs besoins.
CONSEIL Rester simple
Si les possibilits de configuration des priodes de temps sont grandes, mieux vaut rester simple dans ses premiers essais et les prciser petit petit.
Commandes de notification
Les commandes de notification sont faites pour avertir les administrateurs.
43
De simples commandes
Les commandes de notification sont des commandes comme les autres. Elles utilisent des macros relatives aux lments superviss, leur tat et aux contacts prvenir. Les macros sont tudies un peu plus loin dans ce chapitre. Les commandes de notification figurent dans le fichier commands.cfg aux cts des commandes de vrifications. Par exemple, pour envoyer un e-mail relatif un vnement sur un hte, nous avons la dfinition suivante :
Commande denvoi de-mail
define command{ command_namehost-notify-by-email command_line/bin/echo "Host $HOSTNAME$ is $HOSTSTATE$" | /bin/mail $CONTACTEMAIL$ }
Bien sr, ceci nest quun exemple simplifi car le-mail na pas de titre et ne comporte que trs peu dinformations. Il manque, par exemple, le texte de retour de la commande de vrification qui a relev le problme ou bien encore lheure laquelle la vrification a t effectue. Nous verrons dans un prochain chapitre comment grer les notifications.
PRATIQUE Un composant indispensable pour lenvoi des e-mails : le MTA
La commande /bin/mail fait appel un MTA (comme PostFix ou Sendmail) prsent sur le serveur de supervision. Ce dernier est responsable du bon envoi des messages. Cette mise en place sera tudie dans un prochain chapitre.
44
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Htes
galement nomms hosts, nuds ou ressources, ce sont les lments que Nagios supervise. Dans le cadre de la supervision systme, cest le serveur surveiller ; pour la supervision rseau, il peut sagir dun switch. En cas de problme, il alerte un ou plusieurs contacts. Ces derniers seront tudis un peu plus loin dans ce chapitre. Cet lment est la base de la supervision dans Nagios.
45
notification_options : ce sont les tats des htes qui doivent faire lobjet dune
notification. Si loption nest pas spcifie, Nagios considre que tous les tats doivent tre remonts. Les tats possibles sont : d : lorsquun hte passe en tat DOWN ; u : lorsquun hte passe en tat UNREACHABLE ; r : lorsquun hte revient en tat UP ; f : lorsquun hte commence faire le yoyo (flapping) ; ceci sera tudi plus en dtail dans un autre chapitre ; s : lorsquun hte arrive dans une priode de maintenance dfinie par un administrateur ; n : est utilis si un contact ne veut recevoir aucune notification.
Exemple de dfinition
Dfinissons un hte reprsentant un serveur nomm srv-web1. Il est vrifi avec la commande check-host-alive qui envoie simplement un ping vers ladresse du serveur. Ce test est effectu toute les 5 minutes. En cas de problme, ce test est ritr deux autres fois : la proprit max_check_attempts = 3 = 2 + (1 test dj effectu), sera approfondie dans la suite du chapitre. Si le problme persiste, une notification est envoye au groupe web-admins. Si le problme nest pas rsolu 30 minutes aprs, une autre notification est envoye, et ainsi de suite. Lorsque le problme est rsolu, le compteur repasse zro.
Dfinition dun hte
define host{ host_name alias address check_command check_interval retry_interval max_check_attempts check_period contact_groups notification_interval notification_period notification_options } srv-web1 Serveur Web 1 192.168.0.1 check-host-alive 5 1 3 24x7 web-admins 30 24x7 d,u,r
Le paramtre retry_interval sera tudi un peu plus loin dans ce chapitre. Les htes sont les lments de base de la configuration de Nagios. Ils sont simples dfinir et rpertorier, car ils correspondent aux serveurs et aux lments rseau qui composent le parc.
46
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Services
Les services sont les points superviss sur les htes. Dans le cas dun serveur, il sagira, par exemple, de sassurer du bon fonctionnement dune application particulire, ou bien de vrifier si la charge du serveur est acceptable. Les htes et les contacts alerter sont indispensables dans la dfinition des services.
PRATIQUE Plus que les services
Le terme de service, au sens de Nagios, est plus complet que ce quentendent les administrateurs au premier abord. Un service web est un service, mais il faut bien comprendre quune vrification CPU lest galement. Un service est un point de supervision.
47
envoyes ; contacts : contacts prvenir ; contact_groups : groupes de contacts prvenir. Une autre proprit est importante mais facultative : notification_options : ce sont les tats qui, pour un service, doivent faire lobjet dune notification. Comme pour les htes, si ce paramtre nest pas positionn, tous les tats sont pris en compte. Ces tats sont : w : lorsquun service passe en tat WARNING ; u : lorsquun service passe en tat UNKNOWN ; c : lorsquun service passe en tat CRITICAL ; r,f,s,n : mmes options que pour les htes, mais appliques aux services.
Exemple de dfinition
Dfinissons un service Http vrifiant que le port 80 (HTTP) est bien ouvert sur le serveur srv-web1. Le numro de port est ici pass en argument numro 1 la commande check_tcp dfinie prcdemment. Si la commande avait eu besoin dun second argument, on laurait ajout la suite, en mettant un autre ! entre les arguments. Par exemple check_tcp!80!5, 80 tant $ARG1$ dans la commande et 5, $ARG2$. Il est noter que ceci vaut pour tous les appels de htes galement.
check_command
Les paramtres contacts et contact_groups nont pas besoin dtre prsents tous les deux. Si un seul est positionn, la dfinition est valide. Cette vrification est faite toutes les 5 minutes. En cas de problme, un test supplmentaire est effectu (max_check_attempts = 3 = 2 + 1 test dj effectu) au bout de 3 minutes. Si le problme est toujours prsent, une notification est envoye aux admins-web. Au bout de 30 minutes, si le problme nest toujours pas rsolu, une autre notification est envoye et ainsi de suite.
Dfinition dun service
define service{ host_name service_description check_command max_check_attempts check_interval retry_interval check_period
48
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
notification_interval notification_period notification_options contact_groups } 30 24x7 w,c,r admins-web
49
les services.
host_notification_period : priode de temps o les notifications derreurs sur
sur les services sont acceptes. host_notification_options : tats qui, sur les htes, doivent faire lobjet dune notification. Les valeurs possibles sont les mmes que pour le paramtre notification_options des htes. Ces tats sont : d : lorsquun hte passe en tat DOWN ; u : lorsquun hte passe en tat UNREACHABLE ; r : lorsquun hte revient en tat UP ; f : lorsquun hte commence faire le yoyo (flapping) ; s : lorsquun hte arrive dans une priode de maintenance dfinies par un administrateur ; n : est utilis si un contact ne veut recevoir aucune notification. service_notification_options : tats qui, sur les services, doivent faire lobjet dune notification. Les valeurs possibles sont les mmes que pour le paramtre notification_options des services. Ces tats sont : w : lorsquun service passe en tat WARNING ; u : lorsquun service passe en tat UNKNOWN ; c : lorsquun service passe en tat CRITICAL ; r,f,s,n : mmes options que pour les htes, mais appliques aux services. host_notification_commands : commande de notification qui est utilise pour avertir dun vnement sur un hte. service_notification_commands : commande de notification qui est utilise pour avertir dun vnement sur un service.
Les tats des lments seront tudis un peu plus loin dans ce chapitre. Un autre paramtre important, quoique facultatif, est : email : ladresse e-mail du contact.
50
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
La dfinition, dans ce cas, est trs simple : il suffit de dfinir les commandes spares par des virgules :
Dfinition de plusieurs commandes de notification
service_notification_commands notify-by-email,notify-by-sms host_notification_commands host-notify-by-email,host-notify-by-sms
Avec une telle dfinition, chaque envoi de courriel va correspondre un envoi de SMS. Dans ce cadre, il nest pas possible denvoyer les SMS certaines heures de la nuit seulement, sauf si la commande qui envoie les SMS gre les horaires elle-mme. Le plus simple, dans ce genre de cas, consiste dupliquer la dfinition du contact : lune des copies dfinit lenvoi de-mail sur une priode 24x7 et lautre gre lenvoi de SMS sur une priode en heures non ouvres.
51
Groupes de contacts
Il est rare quun administrateur soit seul devoir recevoir une alerte. On peut crer un groupe de contacts dans lequel sont placs plusieurs contacts devant recevoir les mmes alertes. Il est possible de dfinir ce groupe notifier. Linformation sera alors redirige automatiquement vers les membres du groupe. La dfinition est trs simple. Lobjet associ est contactgroup et se trouve dans le fichier contacts.cfg aux cts des contacts. Il ne possde que quatre proprits : contactgroup_name : nom du groupe tel quil sera utilis dans le reste de la configuration ; alias : nom daffichage pour ce groupe ; members : liste des contacts du groupe, spars par des virgules ; contactgroup_members : liste des groupes de contacts faisant parti du groupe.
dmartin
Voici un exemple de dfinition dun groupe de contacts regroupant les administrateurs et dbrossart et incluant galement les membres du groupe admins-linux.
Il ne faut pas hsiter dfinir des groupes de contacts. Ils facilitent grandement la configuration des services et de nuds, car il nest pas ncessaire de recopier chaque fois tous les membres des groupes, au risque den oublier de temps en temps.
52
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Nous avons ici une erreur de droits pour la commande ls. La commande est libre de dfinir ce quelle souhaite comme code retour. Nous pouvons dailleurs lire dans le manuel de cette commande :
Exit status is 0 if OK, 1 if minor problems, 2 if serious trouble.
Il est simple de savoir si la commande sest bien droule ou non. Ici nous avons eu un problme srieux, elle a donc renvoy la valeur 2.
53
Nous pouvons tester le script et vrifier le code retour obtenu, suivant que le fichier / tmp/fichier.txt existe ou non :
Changement de code retour
user@station:~$ ./test.sh le fichier n'existe pas user@station:~$ echo $? 2 user@station:~$ touch /tmp/fichier.txt user@station:~$ ./test.sh le fichier existe user@station:~$ echo $? 0
Il faut bien noter que cest le programme qui dfinit ses codes retour ; les valeurs 0, 1 et 2 ne sont quune convention quil est conseill de respecter dans la mesure du possible. Ce nest pas obligatoire. Nous aurions trs bien pu dfinir 2 comme code retour normal et 0 pour un code retour anormal.
54
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
55
56
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
#3 : exit else #2 : echo #3 : exit fi code retour 0 affichage "le fichier n'existe pas" code retour 2
Le site NagiosExchange http://www.nagiosexchange.org est la rfrence en matire de sondes pour Nagios. Tous les membres de la communaut y dposent leurs scripts. Lorsquun administrateur cherche raliser une supervision non prvue dans les plug-ins classiques de Nagios, il a tout intrt vrifier sur ce site si la sonde en question y figure.
57
Ces fichiers sont vrifis toutes les max_check_result_reaper_time secondes. Par dfaut, cette vrification se fait toutes les 5 secondes par le processus matre. Celui-ci en extrait des fichiers les informations dtat puis les supprime. Ce mcanisme est simple et permet une communication entre les diffrents processus. Si un redmarrage de Nagios est ncessaire, les fichiers seront toujours prsents aprs le redmarrage et ils seront traits par le nouveau processus. Si linformation est
max_check_result_file_age
plus ancienne que la valeur dfinie par (qui vaut par dfaut une heure), linformation ne sera
58
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Partie mtrologie
Nous avons trait le cas de la supervision, mais quen est-il des donnes de mtrologie ? Nous avons signal que les commandes de vrification rcuprent les informations de mtrologie. Voyons comment elles remontent ces informations Nagios.
Les donnes entre crochets sont optionnelles. On peut placer la suite, spares par un espace, autant de donnes de mtrologie que lon souhaite (dans la limite des 8k caractres, sans oublier de prendre en compte la partie du texte de supervision).
ou bien alors :
Exemple de sortie plus complte
DISK OK | /=2643MB;5948;5958;0;5968
Nous aurons alors dans le premier cas un suivi du pourcentage dutilisation de lespace /. Dans le second, nous aurons le trac de lespace consomm exprim en Mo ; loutil de mtrologie ayant galement les informations de niveaux warning, critique, minimum et maximum, il pourra faire figurer ces donnes sur le graphique.
59
Si lon souhaite avoir plusieurs informations de mtrologie dans la mme sortie, cest tout fait possible :
Plusieurs informations de mtrologie
DISK OK | /=56% /boot=50% /home=15%
Nous pouvons suivre nimporte quel type dinformation. Si lenvie prend lutilisateur de compter le nombre de manchots vivant sur la banquise, il peut le faire avec Nagios. Il ne lui reste qu trouver une solution pour les compter en ligne de commande...
avec 80 pour $ARG1$, 5 pour $ARG2$, etc. Il nest cependant pas souhaitable de tout faire passer par des arguments. Si lon souhaite donner la commande, par lintermdiaire dune variable, ladresse rseau de llment surveill, il faut rcrire ladresse de lhte tester dans lappel de la commande par le service. Cest dommage car linformation est dj dfinie dans llment host auquel on rattache le service. Nagios permet la commande de prendre directement linformation quelle souhaite la source.
Macros
Nous avons vu plusieurs macros au cours de ce chapitre. Au lancement dune commande, Nagios en positionne un grand nombre qui changent de valeurs en fonction du contexte. La macro correspondant ladresse de lhte sur lequel est lance la vrification est tout simplement $HOSTADDRESS$. Ceci permet de dfinir simplement notre test TCP :
60
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Nous remarquons que la macro $USER1$ est utilise. Elle est dfinie dans le fichier ressources.cfg. Lutilisateur peut dfinir 32 macros $USERn$. La plus commune est $USER1$, qui reprsente en fait le rpertoire dans lequel sont placs les scripts de supervision, gnralement /usr/local/nagios/libexec/. Ceci vite de saisir le rpertoire chaque dfinition de commande. lappel de la commande avec le paramtre !80, sur un hte ayant comme adresse 192.168.0.1, Nagios lance en fait la commande :
Commande rellement lance
/usr/local/nagios/libexec/check_tcp -H 192.168.0.1 -p 80
Il est possible et fortement conseill de tester les commandes de vrification directement depuis un shell sur le serveur de supervision.
Variables denvironnement
Il y a une diffrence entre une commande lance directement depuis un shell et la mme commande lance depuis Nagios : lenvironnement. Sur le serveur de supervision, Nagios est excut par un utilisateur non privilgi, gnralement nomm nagios. Lorsquil lance une commande, Nagios retire les variables denvironnement de lutilisateur et positionne les siennes : les macros. Il nest pas ncessaire de passer une macro en argument si le programme lanc est capable de la rcuprer dans ses variables denvironnement. Il nest pas conseill de fonctionner de cette manire, ne serait-ce que par souci de lisibilit des commandes lances. De plus, ces commandes sont plus compliques tester directement depuis un shell, car il faut positionner correctement les variables denvironnement avant de les lancer. La variable PATH du shell nest pas positionne. Les sondes doivent utiliser des chemins absolus si elles souhaitent lancer des programmes. Ceci est une cause frquente de problmes lors des tests. Un programme de vrification peut trs bien fonctionner en ligne de commande et beaucoup moins bien dans Nagios, tout simplement car il souhaite utiliser la variable PATH qui nest pas positionne.
61
62
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Ce mcanisme prend en paramtre service_inter_check_delay_method. Si ladministrateur positionne une valeur comme 0.01, cest cette dure, en secondes, qui est prise comme dlai entre les lancements de vrifications. Il est conseill de laisser Nagios calculer cet intervalle par lui-mme, ce que lon obtient par la valeur s (smart). Le dlai devient alors :
Le calcul est simple : Nagios prend le dlai moyen entre deux vrifications dun mme lment et il le divise par le nombre total dlments. Si lon considre la dure moyenne entre les vrifications comme une priode de vrification, il cherche rpartir au maximum les vrifications sur cet intervalle de temps. Prenons un exemple avec 2000 services surveills toutes les 5 minutes. La priode moyenne de vrification est simple calculer ici : 5 minutes. Pour 2000 machines, cela reprsente un inter_check_delay de , soit 0,15 seconde. Le mme mcanisme existe pour les vrifications dhtes. La seule diffrence est le nom du paramtre, qui devient host_inter_check_delay_method.
63
Le principe est, ici encore, trs simple. Il compte le nombre moyen de services par nud. Avec cette valeur, il obtient un espacement qui permet, en moyenne, dordonnancer des services se trouvant sur des htes diffrents. Dans certains cas, sur des htes hbergeant beaucoup de services par rapport la moyenne, il peut arriver que deux services soient demands de manire rapproche. Toutefois, mme dans ce cas problmatique, la charge est bien moindre que si elle ntait pas lisse. Ce mcanisme est reprsent sur le diagramme suivant :
64
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
max_check_attempts. Si lon souhaite ds la premire erreur passer en tat suffit donc de placer cette proprit 1. HARD,
il
Les intervalles de vrification ne sont pas les mmes entre les tats SOFT et HARD. Les lments (services et nuds) ont les proprits suivantes : check_interval : correspond lintervalle de vrification en tat HARD ; retry_interval : correspond lintervalle de vrification en tat SOFT. Nous allons avoir deux intervalles de supervision : un quand linformation est sre, un autre, gnralement infrieur, qui est utilis uniquement pour clarifier une situation.
La vrification se fait en temps normal toutes les 5 minutes. Si un problme survient (WARNING, CRITICAL ou UNKNOWN), alors on effectue 3 essais supplmentaires. On nen fait que 3, le passage en tat HARD intervient au bout de 4 tests. On vient dj den raliser un, celui qui a rvl lanomalie. Nous nous retrouvons alors ce moment en tat de type SOFT.
Les 3 autres vrifications sont ralises avec un intervalle de temps de 3 minutes (paramtre retry_interval). Si, au bout de ces tests, la situation nest pas redevenue
65
ou UP, alors le dernier tat passe en tat de type HARD. Les tests sont alors conduits toutes les 5 minutes. Lorsque la situation revient en tat UP ou OK, ltat reste en HARD et on continue de vrifier toutes les 5 minutes jusqu larrive dune nouvelle erreur. Nous pouvons observer cela sur le diagramme de la figure 3-2.
OK
Notifications de problmes
Continuons notre tude avec les notifications.
66
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
secondes aprs, elle nest plus valable. Cest le cas, par exemple, lors dun problme rseau momentan. Pour certains services ou htes, il peut tre intressant dtre averti du moindre souci ; toutefois, dans une grande majorit des cas, il est prfrable de vrifier linformation avant de lenvoyer aux utilisateurs. Cest cela que servent les types SOFT et HARD : ils permettent de vrifier la pertinence dune alerte. Lors de la phase SOFT, Nagios tente de vrifier si lerreur est effectivement toujours prsente. La vrification est rpte autant de fois que le souhaitent les utilisateurs, grce aux paramtres max_check_attempts et retry_interval.
Renvoi de notifications
Une fois que ltat est valid, en phase HARD, Nagios notifie les contacts sils le souhaitent. Cette notification intervient ds le passage en tat HARD. Lutilisateur peut, avec le paramtre notification_interval, spcifier Nagios lintervalle de temps entre deux notifications. La notification est relance tant que ltat nest pas redevenu UP ou OK.
PRATIQUE tre lger sur les notifications
Comme nous le verrons au chapitre 6, envoyer trop de notifications est dangereux. Il faut choisir le paramtre notification_interval avec soin.
Lorsque ltat revient la normale et si lutilisateur la dcid dans le paramtre Nagios envoie une alerte de recovery pour les services, dUP pour les htes. Ce paramtre doit tre suprieur la valeur check_interval. Si cette valeur tait infrieure, Nagios enverrait une notification alors quil na pas re-vrifi ltat de llment, ce qui nest pas logique. La seule exception est la valeur 0 : elle signifie de nenvoyer quune seule notification pour le problme.
notification_options,
Nous remarquons qu t = 19 min une notification dalerte critique est envoye. Elle correspond au passage en tat HARD. 8 minutes aprs, t = 27 min, vu que le service est toujours en tat CRITICAL, une autre notification est leve. Pour finir, une dernire notification est envoye t = 29 min. Cest une notification recovery de service. Nous remarquons dans le paramtre notification_options le champ r : ladministrateur souhaite donc quune telle notification soit envoye.
67
Il est noter que, pour quune notification soit leve, elle doit survenir durant la priode notification_period dfinie sur les services et les htes. Si cette condition nest pas vrifie, la notification nest pas envoye.
lors de la leve de la notification de recovery (option r), le contact ne reoit pas linformation. De mme, si cest linverse qui est configur :
notification_options w,c
68
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
sur le service et :
notification_options w,c,r recovery
69
Si la mise en place dun tel procd se justifie, comme dans le cas des diffrents niveaux dassistance ou de personnes en astreinte, il ne faut pas hsiter. Dans les autres cas, il faut bien peser le pour et le contre.
Exemple descalade
level1,
Nous nous plaons dans la situation o lassistance de niveau 1, nomme supportest destinataire des notifications sur le service Http, lui mme accroch au serveur srv-web1. Nous souhaitons que les 2 premires notifications soient envoyes ce groupe. Si, aprs ces deux remontes dalertes, le problme nest toujours pas rsolu, cest le groupe support-level2 qui est averti pendant 2 notifications. Si, de mme, le problme nest pas rsolu, il est remont au support-level3, et ce, indfiniment.
Dfinition dune escalade
define serviceescalation{ host_name service_description first_notification last_notification notification_interval
srv-web1 Http 3 4 30
70
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
contact_groups } define serviceescalation{ host_name service_description first_notification last_notification notification_interval contact_groups } support-level2
71
Fonctionnement de la communication
Nagios cre un fichier spcial lors de son initialisation, qui lui permet de recevoir des ordres. Ce fichier est un tube nomm , var/rw/nagios.cmd. Ce type de fichier est comme une voie de communication sens unique. Un processus peut y crire, un autre lit ces informations. Les donnes ne font que transiter par le fichier sans y rester ; si personne nest en train dcrire dedans, il est vide. Nagios lit ce fichier. Lorsquun processus extrieur y crit, Nagios y cherche des ordres ou des informations de supervision. Les utilisateurs peuvent exploiter ce fichier pour forcer Nagios changer son ordonnancement, voire pour lui donner des indications sur ltat dun lment supervis. Pour cela, un simple echo dun texte dans le fichier suffit donner un ordre Nagios. On parle pour ce mcanisme de commandes externes . Les outils tiers peuvent utiliser ce mcanisme pour fournir leurs informations Nagios. Nous verrons cependant dans un autre chapitre que certains dmons aident cette communication.
72
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Les paramtres sont : host_name : nom de lhte hbergeant le service concern ; service_description : nom du service ; sticky : si positionn 1, ne sera supprim que si le service passe nimporte quel changement dtat sera pris en compte ; notify : prvenir ou non les autres contacts du service ; persistent : linformation rsiste ou non un redmarrage ; author : nom de lauteur ; comment : texte explicatif. Voici un exemple denvoi de cette prise en compte Nagios :
Prise en compte dun service
OK,
sinon
now=`date +%s` commandfile='/usr/local/nagios/var/rw/nagios.cmd' /bin/printf "[%lu] ACKNOWLEDGE_SVC_PROBLEM;srv-web1;Http;1;1;1;Un administrateur;Probleme sous controle\n" $now > $commandfile
73
Les paramtres sont : host_name : nom de lhte hbergeant le service concern ; service_description : nom du service ; return_code : code retour du service, correspondant aux codes de CRITICAL et UNKNOWN ; plugin_output : texte du retour du service. Voici un exemple dun tel envoi de communication :
Envoi dun rsultat Nagios
OK, WARNING,
now=`date +%s` commandfile='/usr/local/nagios/var/rw/nagios.cmd' /bin/printf "[%lu] PROCESS_SERVICE_CHECK_RESULT;srv-web1;Http;0;OKTout va bien maintenant\n" $now > $commandfile
En un mot
Lorsque lon recherche un outil de supervision, le choix dune solution open source est trs avantageuse. Dans ce monde, Nagios est la rfrence. Sa conception est simple et sa plus grande force est sa modularit. Ses possibilits sont trs tendues. La seule limite rside dans lobtention des informations de supervision. Si ladministrateur est capable de les obtenir en ligne de commande, alors lintgration dans Nagios est possible.
4
Premier niveau de test : rponse dun nud sur le rseau
Dans ce chapitre nous allons tudier le fonctionnement des plug-ins qui devront rechercher activement les informations sur les htes. Ils peuvent les obtenir soit directement sur le rseau, soit par lintermdiaire dun agent situ sur le nud.
76
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Une mthode de supervision des services consiste se limiter la supervision des ports des applications. Vrifier quils sont bien ouverts est lune des oprations les
77
plus lgres en matire de supervision, que ce soit en termes de charge systme ou rseau. Cette opration est de toute manire ncessaire lors des communications entre les clients et les serveurs. Si la lgret de la solution est attirante, elle a un dfaut gnant : si un port ferm signifie quune application est non disponible, linverse nest pas assur. Il peut arriver, dans certains cas, quune application coute toujours ses ports, mais quelle ne sache plus traiter les demandes quelle reoit. Une telle situation peut se produire, par exemple, dans une application faisant appel une base de donnes. Si cette dernire nest pas disponible, lapplication na pas accs ses donnes et renvoie un message derreur ses clients. Le problme avec le simple test dun port se situe justement au niveau de ce message derreur : puisque lon na pas fait de vraie requte en sarrtant la simple ouverture du port, on ne reoit pas ce message. Le test est positif, mais il sagit dun faux positif. Il faut cependant relativiser la situation. Dans de nombreux cas, un tel test est largement suffisant. De plus, faire de vraies interrogations peut parfois savrer complexe, voire tout simplement impossible. Une telle situation arrive si, par exemple, le protocole de communication nest pas document.
La commande check_tcp possde de nombreux paramtres, pouvant rpondre un nombre lev de besoins. Elle peut faire bien plus quouvrir un port. Elle peut galement envoyer un texte de requte au service et en attendre une rponse.
78
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Le code de retour OK du service serait remplac par un code UP si nous vrifions un hte. Le texte de retour est explicite. Le plug-in renvoie galement des donnes de performances indiquant le temps de rponse du service. Ici, le port sest ouvert en 93 ms. La valeur limite du temps de rponse tait de 10 secondes, et peut tre change avec le paramtre -t. Ce que le plug-in effectue rellement Dans le cas dun test de port TCP, la commande effectue simplement une connexion TCP nomme 3-Way Handshake ( tablissement dune connexion en trois tapes ). Dans le cas dun port ouvert, louverture de la connexion se passe en effet en 3 tapes : 1 le client envoie un paquet SYN ; 2 le serveur lui rpond SYN+ACK ; 3 le client rpond alors ACK. Seuls trois paquets rseau de petite taille sont ncessaires pour ouvrir une connexion. Dans le cas dun port ferm, la communication est encore plus rapide : 1 le client envoie un paquet SYN ; 2 le serveur lui rpond RST+ACK. Dans ce cas, ceci signifie que la machine est encore disponible car sa pile rseau a pu rpondre, mais que lapplication coutant sur le port est ferm. L encore, le test est lger et rapide.
79
Lorsquon met en place pour la premire fois un outil de supervision, on choisit souvent de tester la disponibilit des nuds avec une rponse un ping ICMP. Ce test est trs simple, mais il peut se rvler vite limit. En effet, pour des raisons de scurit, ce protocole est dans de nombreuses entreprises limit au rseau local. Certains serveurs munis dun pare-feu ne rpondent pas ce test, pas plus que les lments en zone DMZ. Il faut alors dfinir une autre mthode pour ces serveurs particuliers mthode de prfrence commune lensemble des serveurs. On pourra par exemple tirer parti de la disponibilit des ports dadministration. Tous ces lments sont administrables distance, par le biais dune application coutant les requtes des administrateurs, aussi bien sur le port SSH des serveurs Unix et des quipements rseau, que sur le port MSTSC sur les serveurs Windows. Ces applicatifs ont la qualit dtre particulirement robustes et peu dpendants dautres ressources. Nous pouvons considrer que, si le port rpond, lapplication est disponible. Dans ce cas, lhte est dclar comme tant en tat UP. Dans le cas contraire, puisque que ces applications de prise de contrle sont indispensables au travail des administrateurs, larrt de cette application implique que le nud nest pas disponible et quil ne rpond plus aux requtes rseau ; on le considre alors comme DOWN. Lun des avantages dun tel test, outre le fait quil est trs lger, se situe au niveau des rgles de pare-feu : les ports dadministration sont disponibles simplement et ne demandent pas de nouvelle rgle sur les quipements de filtrage. Inutile de crer une rgle ICMP sur le rseau chose qui ferait frmir bon nombres dadministrateurs.
SCURIT Filtrage de ICMP
Les paquets ICMP peuvent contenir des informations utiles, mais sont aussi un trs bon support pour les canaux cachs. Cela dit, bien dautres dangers plus immdiats menacent les systmes (tunnel TCP sur HTTP, vol dinformations par cl USB...).
80
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
chaque application est diffrente. Elles ne renvoient pas toutes le mme texte. On doit donc changer lgrement le test de vrification pour chaque service web. Lapplication web, en plus de renvoyer la page, transmet des informations importantes grce un code retour inclus dans le protocole HTTP. Il doit tre interprt en priorit. On peut noter certains codes qui reviennent souvent : 200 : la requte sest droule sans erreur ; 301 : la page demande a t dplace dfinitivement ; 401 : la page requiert une authentification ; 403 : la page est interdite daccs ; 404 : la page nest pas disponible ; 500 : le service a subi une erreur interne qui la empch de traiter la requte. Ces codes de retour HTTP reprsentent diffrents tats pour la commande de vrification. Les codes 200 et 301 correspondent un tat correct. Le rsultat correspondant est OK. Les tats 401, 403 et 404 sont des tats inquitants. La page na pu tre atteinte, mme si le dmon web semble en bon tat. Il sagit dun WARNING. Quant lerreur 500, celle-ci dmontre que le service web a rencontr un grave problme en traitant la requte, lerreur est considre comme CRITICAL.
Le plug-in check_http
Le plug-in standard permettant de vrifier les rponses web est check_http. Il prend comme argument ladresse du service tester par le paramtre -H. On peut lui fournir galement une page spcifique interroger, grce au paramtre -u. Si le paramtre nest pas spcifi, le plug-in teste la page de garde. Il peut galement chercher une chane de texte dans la page reue et avertir sil ne la trouve pas. On la lui prcise avec le paramtre -s. Tester la page daccueil dun site Plaons-nous tout dabord dans un cas o la requte est correcte. Nous testons ici la page principale du site. Nous supposons que le plug-in check_http se trouve dans le rpertoire par dfaut des plug-ins de Nagios. Ce rpertoire est /usr/local/nagios/libexec dans une configuration standard. Nagios le rfrence dans sa configuration avec la macro $USER1$.
Exemple dutilisation de check_http
$USER1$/check_http -H www.google.fr HTTP OK HTTP/1.0 200 OK - 6482 bytes en 0,231 secondes |time=0,231233s;;;0,000000 size=6482B;;;0
81
Ce test est effectu sur le mme service web que le test douverture de connexion, mais il a mis deux fois plus de temps sexcuter. Dans cet exemple, une requte HTTP a t effectue sur le service et celui-ci a rpondu. Cela prend plus de temps quune simple ouverture de connexion sans requte.
REMARQUE Simplification des commandes dans cet ouvrage
Dans la suite du chapitre, la macro $USER1$ ne sera pas prsente pour ne pas surcharger inutilement les commandes. Dans une configuration relle de Nagios, elle doit tre indique.
Rechercher une chane de caractres dans la page Sur cette mme page, nous cherchons une chane de caractres. En loccurrence, celle-ci ne sy trouve pas, ce qui dclenche une erreur.
Recherche dune chane de caractre inexistante sur une page web
check_http -H www.google.fr -s "pere noel" HTTP CRITIQUE - chane non trouve|time=0,254568s;;;0,000000 size=6488B;;;0
Nous sortons en tat CRITICAL car le test na pas t concluant. Tester lexistence dune page Pour notre dernier test, nous consultons une page qui nexiste pas. Nous nous attendons donc sortir avec un tat WARNING.
Recherche dune page inexistante sur une page web
check_http -H www.google.fr -u "/nexistepas" HTTP WARNING: HTTP/1.0 404 Not Found
82
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
On utilise, pour grer cette authentification, le paramtre -a de simplement fournir une paire compte:motdepasse en argument.
check_http.
Il faut
Par exemple, pour atteindre la zone /admin dun site sur un intranet, on utilise le compte admin et le mot de passe supermotdepasse. On obtient alors la requte suivante :
Vrification dune page web avec authentification
check_http -H intranet.mydomain -u /admin -a admin:supermotdepasse HTTP OK HTTP/1.0 200 OK - 6482 bytes en 0,230 secondes |time=0,229866s;;;0,000000 size=6482B;;;0
Cas des serveurs HTTPS De plus en plus de services web font appel la couche SSL pour permettre aux clients didentifier formellement le serveur et de chiffrer leurs communications sensibles , comme leur authentification. La seule diffrence avec le cas dun service web classique se trouve dans la communication entre les deux parties. Celle-ci est contenue dans un flux SSL. Pour surveiller un tel service et se faire passer pour un client standard il faut envoyer les requtes via un canal SSL. check_http le gre grce au paramtre -S. Il se comporte alors comme prcdemment, mais utilise le port 443 (HTTPS) et une connexion SSL pour dialoguer avec le serveur. Nous pouvons changer le port de connexion, si besoin, grce au paramtre -p. Nous obtenons pour un serveur classique une demande de la forme suivante :
Vrification dune page web travers HTTPS
$USER1$/check_http -H www.google.com -S HTTP OK - HTTP/1.0 302 Found - 0,325 secondes de temps de rponse |time=0,325044s;;;0,000000 size=407B;;;0
On peut noter quici on a eu un retour 302. Cest en fait une variante dune page migre (code 301). Ce nest pas un code derreur.
83
Vrifier lexpiration des certificats Lorsque lon met en place un service web scuris par SSL, il faut disposer dun certificat sign par une autorit de certification. Ces certificats ont une certaine dure de validit. Il est trs courant doublier de les renouveler temps. On se trouve alors dans une situation inconfortable : les clients ont une erreur sur leur navigateur car le certificat est prim, mais le site fonctionne bien si on oublie ce dtail. De nombreux utilisateurs ny font pas attention, mais dautres vont tout simplement voir ailleurs. Dans le cas dun site de vente en ligne, cela peut avoir un impact financier trs rapide. Il faut donc penser surveiller la validit des certificats. Le plug-in check_http propose cette fonctionnalit qui ne doit pas tre oublie. On utilise pour cela le paramtre -C. Celui-ci demande une valeur reprsentant le nombre de jours de validit restants partir duquel il commence avertir (WARNING) lutilisateur. Si, malgr ces avertissements, le certificat nest pas chang temps, le retour passe CRITICAL. Voici un exemple dun tel test :
Vrification de la validit dun certificat
$USER1$/check_http -H www.google.com -C 20 OK - Certificate will expire on 05/02/2009 17:02.
Dans cet exemple, on demande tre averti si le certificat expire dans moins de vingt jours. Au vu du site surveill, un rsultat autre que OK aurait t tonnant.
PIGE Les certificats se cachent partout
Il ne faut pas croire que seuls les services web utilisent des certificats. Toutes les applications faisant appel SSL peuvent en exploiter. Certaines architectures avec plusieurs nuds, comme les serveurs dannuaires Active Directory, y font appel. Si les certificats sur ces serveurs ne sont plus valides, les clients ne les utilisent plus. Parmi ces clients on peut citer, par exemple, les serveurs de messagerie lectronique de lentreprise. Si ces deux services ne dialoguent plus, cela peut avoir un impact important. Il faut dresser une liste et surveiller tous les certificats, mmes signs par une autorit interne. Le plug-in check_tcp propose, en plus de check_http, un tel test avec son paramtre -D.
84
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Par exemple, sur un site de vente en ligne, il peut tre intressant de dfinir un compte de test. Ce compte neffectue pas rellement de vritable transaction. Si une mthode de vrification permet de simuler un client qui, en utilisant ce compte, effectue une commande, alors ce test est reprsentatif de ltat du site de vente en ligne.
check_http
ne permet pas de raliser ce type de test. Cette sonde est conue pour faire une unique requte. Pour les tests plus complexes, une nouvelle sonde est ncessaire. Il existe une application lgre, nomme WebInject, servant crer et jouer des scnarios de connexions des sites.
OUTIL Webinject pour jouer des scnarios web
Application crite en Perl et pesant moins de 100 Ko, Webinject permet de dfinir une srie daccs des pages tout en conservant, pendant toute la session, des informations comme les cookies. Cette fonctionnalit permet de simuler un vritable client HTTP. Lapplication a le bon got de ne pas ncessiter dinstallation ; il suffit de dcompresser larchive. B http://nagios-fr.org/wiki/integration/webinject
La syntaxe de dfinition du scnario est fournie dans deux fichiers XML : config.xml et testcases.xml. Le premier permet de dfinir lenvironnement de connexion, par exemple la prsence dun proxy. Il est galement possible (et recommand) de demander WebInject de se comporter comme nimporte quelle sonde Nagios. Il suffit dajouter la valeur <reporttype>nagios</reporttype> dans ce premier fichier. Il fait ensuite rfrence au second fichier qui dcrit les tapes de la vrification. Le second fichier XML dfinit des entits case qui sont des successions de tests. Les demandes peuvent tre de type get ou post. Pour chaque rsultat, on peut rcuprer une valeur dans le retour pour le transfrer aux tests suivants. Cest particulirement pratique pour les variables comme SESSION. Exemple de scnario Voici un exemple de vrification dune application web. Supposons que la premire page fournit un identifiant de session :
config.xml
<testcasefile>testcases.xml</testcasefile> <useragent>WebInject Application Tester</useragent> <timeout>10</timeout> <globaltimeout>20</globaltimeout> <proxy>http://proxy:3128</proxy> <reporttype>nagios</reporttype>
85
testcases.xml
<testcases repeat="1"> <case id="1" description1="Connexion sur Application" method="get" url="http://www.myapplication.com/login.php" parseresponse='SESSION="|"' verifypositive="Login" errormessage="Impossible de se connecter sur la page de login" /> <case id="2" description1="Authentification sur Application" method="post" url="http://www.myapplication.com/Authentication.php" postbody="user=test&password=superpass&session={PARSEDRESULT}" verifynegative="User unknown" errormessage="Impossible de se connecter avec test" /> <case id="3" description1="Navigation sur Application" method="get" url="http://www.myapplication.com/Application.php" verifypositive="Bienvenue sur le site de vente" errormessage="Impossible de naviguer sur le site, mme authentifi" /> <case id="4" description1="Test de commande" method="post" url="http://www.myapplication.com/DemandeAchat.php" postbody="objet=voiture&couleur=rougevif" verifypositive="Votre commande est effectue" errormessage="Impossible de passer une commande de voiture" /> </testcases>
Pour lancer la commande, il suffit dappeler webinject.pl avec comme argument -c, suivi du fichier de configuration dfinissant le test :
86
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Lancement de WebInject
webinject.pl -c config-nagios.xml WebInject OK - All tests passed successfully in 0.19 seconds |time=0.19;20;;0
Cette application simple et lgre permet de dfinir simplement des tests avancs. Elle est dune grande utilit pour vrifier les applications web qui sont de plus en plus nombreuses. Nous remarquons de plus quelle retourne le temps qui a t ncessaire pour effectuer lensemble des tests. Cet indicateur peut tre important dans la dtection de performances dgrades sur lapplication web.
PRATIQUE Les applications SOAP
De nombreuses applications utilisent le protocole SOAP pour la communication entre leurs diffrents composants. SOAP est bas sur HTTP. WebInject est capable de procder des tests des diffrentes parties des applications en effectuant des tests de bas niveau.
Certains soucis peuvent survenir sur les DNS des entreprises. Parfois, certains enregistrements peuvent tre supprims, que ce soit cause dune fausse manipulation ou
87
dun bug logiciel. Si lenregistrement est celui dun serveur critique, les problmes peuvent saccumuler trs rapidement. cause du cache DNS prsent sur les machines, si un administrateur cherche voir si lenregistrement fonctionne toujours, sa requte risque dtre traite par le cache de son ordinateur. Il ne voit donc pas que le serveur ne peut plus rpondre pour cet enregistrement pour les nouveaux clients.
Ici le test vrifie que le serveur 212.27.40.240 est capable de renvoyer un enregistrement pour www.google.fr.
88
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Mthode de supervision
Sils sont devenus une pierre angulaire des infrastructures actuelles, il ne faut pas oublier quils sont, comme tous les services, faillibles. Bien souvent, ces annuaires ne sont consultables que si lutilisateur possde un compte. Il faudra donc pour les superviser se connecter avec un compte et rechercher des informations. Il y a de fortes chances quil puisse lire ses propres informations. Si elles sont valides, on peut considrer que lannuaire fonctionne correctement.
PIGE Plusieurs ports de communication
Les annuaires LDAP sont souvent disponibles sur deux ports TCP : 389 et 636. Sur le premier port, il peut accepter, exclusivement ou non, les connexions passant par SSL. Sur le second, seules les connexions SSL sont acceptes. Il ne faut pas oublier de superviser tous les ports de communication des applications. Le port non scuris peut en effet tre ouvert alors que le port SSL nest pas disponible, par exemple cause dun mauvais paramtrage, ou parce que son certificat est expir.
Le temps de rponse retourn en donne de mtrologie est utile pour suivre ltat de charge des annuaires.
89
Supervision du DHCP
Les systmes dinformation regroupent un nombre important de composants. Parmi ceux-ci, les postes clients sont les plus nombreux. Leur configuration rseau est fortement facilite par lutilisation du protocole DHCP.
Sonde check_dhcp
est utilise dans ce but. Elle effectue une demande DHCPDISCOVER sur le rseau. Si elle reoit en rponse un DHCPOFFER, cela signifie que le serveur DHCP fait toujours son office. tant donn que la sonde ne rpond pas la demande avec un DHCPACK ou un DHCPNACK (acceptation ou refus de ladresse), ceci na pas dimpact sur le service DHCP.
check_dhcp
La sonde
Si plusieurs serveurs DHCP sont disponibles sur le rseau, des problmes peuvent survenir, surtout si la configuration des serveurs nest pas identique. Il est conseill dattribuer une adresse rserve au serveur qui interroge le service. De cette manire, il est possible de vrifier que le serveur dont on attend une rponse rpond bien et quil nous offre ladresse que lon souhaite. Le paramtre -s permet de spcifier la commande ladresse du serveur dont on veut une rponse. Le paramtre -r permet, quant lui, de lever une alerte si ladresse obtenue nest pas celle demande. Enfin, le paramtre -i permet de choisir linterface rseau qui fait la demande.
PRATIQUE Contrles frquents du serveur DHCP
Le DHCP est lune des pierres angulaires des rseaux actuels. moins de migrer en IPv6, les administrateurs ont tout intrt le vrifier trs frquemment afin dtre alert rapidement.
Problmes de droits
Cette sonde a une particularit. Si elle est lance avec lutilisateur retourne une erreur :
nagios,
elle
90
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Une requte DHCP ncessite des privilges root. Le processus de Nagios ne pouvant fonctionner en tant que root, il est ncessaire de donner le droit nagios de lancer cette commande comme sil tait root. Deux solutions sont envisageables dans cette situation : lutilisation de sudo ; le positionnement du bit suid sur check_dhcp.
La commande sudo
Le programme sudo permet de lancer une commande sous le compte root si lutilisateur en a lautorisation. Il na pas besoin de laccs un shell root pour cela. Le fichier de configuration de sudo est /etc/sudoers. Dans ce fichier, la ligne suivante permet dautoriser lexcution en tant que root de la sonde check_dhcp avec nimporte quel argument, sans avoir donner un mot de passe.
Configuration dans sudoers
nagios ALL = NOPASSWD: /usr/local/nagios/libexec/check_dhcp *
nagios
sudo /usr/local/nagios/libexec/check_dhcp -i eth0 -s 192.168.0.254 -r 102.168.0.1 OK: Received 1 DHCPOFFER(s), max lease time = 0 sec.
Dans la configuration de Nagios, la commande doit tre configure avec les chemins complets :
Configuration au sein de Nagios
/usr/bin/sudo $USER1$/check_dhcp -i $ARG1$ -s $ARG2$ -r $ARG3$
91
Le bit SUID
Si la commande sudo nest pas disponible, il existe une autre mthode pour que lutilisateur nagios puisse lancer la commande en tant que root. Le bit suid est une fonctionnalit du systme de fichiers. Une fois positionn, ce bit permet un autre utilisateur que le possesseur de lexcutable de le lancer sous lidentit du possesseur. Si ce dernier est root, il a tous les droits. Nimporte quel utilisateur a ces droits, contrairement sudo o la gestion des droits est trs fine. Pour positionner ce bit, il faut utiliser la commande suivante en tant que root :
Placement du bit SUID sur check_dhcp
chown root.nagios check_dhcp chmod ug+s check_dhcp ls -l check_dhcp -rwsr-x--- 1 root nagios check_dhcp
Cette mthode a pour avantage de ne pas faire appel au chemin /usr/local/nagios/ libexec dans la configuration de sudo.
Supervision de la messagerie
Les systmes dinformation servent grer des informations. Lun des vecteurs dchanges le plus important est, lheure actuelle, lchange par e-mails. Le courriel est devenu indispensable pour beaucoup dutilisateurs. La moindre indisponibilit est directement ressentie par lensemble des utilisateurs et la surveillance de cette application est primordiale. Superviser une messagerie est plutt simple car il existe sur Internet des adresses de destinataires un peu particulires, dites de rebond : lorsquun e-mail est reu une de ces adresses, une rponse est automatiquement envoye. La supervision de toute la chane de messagerie peut se faire facilement. La commande de vrification na qu envoyer un message une ou deux de ces adresses, et attendre ensuite quelques secondes pour obtenir le retour. Les messages de retour sont supprims automatiquement.
92
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
La sonde check_email_delivery est ddie cette tche. Dans lexemple suivant, on suppose que les services SMTP et IMAP sont sur le mme serveur. Dans le cas contraire, des arguments permettent de les spcifier.
Vrification de bout en bout de la messagerie
check_email_delivery -H monserveur --mailto ping@oleane.net,echo@cnam.fr --mailfrom user@local --username user -password secret EMAIL DELIVERY OK - 5 seconds
Pour les bases PostgreSQL, la sonde check_pgsql permet de faire la mme vrification que pour MySQL. L encore, le lancement de la commande est simple :
Vrification dune base PostgreSQL
check_pgsql -d nagiosBD -l nagios -p superpass OK - database nagiosBD (0 sec.)|time=0.000000s;2.000000;8.000000;0.000000
93
94
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Fonctionnement de NRPE
NRPE
est lagent dploy classiquement sur les serveurs de type Unix. Il signifie Nagios Remote Process Executor (excuteur distant de processus Nagios). Il permet Nagios dexcuter distance des plug-ins dposs par ladministrateur. Comme Nagios, NRPE ne sait lui-mme rien faire. Les plug-ins dposs sont identiques ceux prsents sur le serveur de supervision. NRPE sert dintermdiaire entre Nagios et ces sondes.
Nagios lance comme plug-in, sur son serveur, lexcutable check_nrpe. Celui-ci envoie une requte de supervision lagent NRPE. Elle correspond une entre dans la configuration de lagent. Cette entre contient un script lancer, avec ses arguments. Le dmon lance le plug-in et retourne le rsultat check_nrpe. Ce rsultat est compos du code retour du plug-in et des lignes de sortie, comme nimporte quelle sonde Nagios. Lexcutable check_nrpe transmet tout simplement ces informations Nagios. Nous pouvons galement noter que la communication entre check_nrpe et le dmon NRPE se fait travers un flux SSL. Il ny a donc pas de risque quun pirate rcupre des donnes sensibles. Le diagramme suivant rsume ce fonctionnement.
Configuration du dmon
Le fonctionnement tant connu, concentrons-nous sur la configuration de NRPE.
95
Il faut attribuer chaque commande lancer un nom avec lequel check_nrpe va lappeler. On doit indiquer le chemin complet vers la sonde lancer. En ce qui concerne les arguments, on peut laisser lutilisateur les spcifier lors de la demande. Cela nest autoris que si le paramtre dont_blame_nrpe a la valeur 1. Tout comme dans la configuration de Nagios, les arguments sont dfinis par $ARG1$, $ARG2$, etc.
SCURIT Utilisation des variables
Le paramtre dont_blame_nrpe permet dautoriser ou non le passage de paramtres pour les clients NRPE. Il porte bien son nom. Laisser la possibilit aux clients dutiliser leurs propres arguments peut tre un problme de scurit. Certains utilisateurs pourraient chercher en abuser. Le dmon NRPE limite les caractres utilisables, enlevant les plus dangereux. De plus, il filtre les IP. Le choix de laisser ou non les variables est laiss ladministrateur.
96
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Voici deux exemples de dfinition pour observer la charge des serveurs grce la commande check_load. Celle-ci sera tudie plus en dtail au chapitre 14.
Dfinition standard
command[load]=/usr/local/nagios/libexec/check_load -w 1,1,1 -c 2,2,2
Si une commande est prsente deux fois dans le fichier de configuration, cest sa dernire occurrence qui est prise en compte. Dans notre cas, puisque lon a appel specifique.cfg la fin de nrpe.cfg, ce sont les valeurs spcifiques qui priment. On a tout loisir de redfinir, si besoin, des commandes ou den dfinir de nouvelles. Une mthode de gestion de configuration consiste avoir le mme fichier nrpe.cfg pour tous les htes. Seuls les fichiers specifique.cfg sont particuliers chaque
97
nud. Lors de la mise jour du nrpe.cfg commun sur tous les serveurs, on ne craint plus de perdre de la configuration spcifique un nud.
CONFIGURATION Notion de pack de plug-ins
Des systmes similaires ont les mmes plug-ins de supervision. Nous y dposons donc les mmes scripts. Lensemble des scripts communs un systme dexploitation sappelle un pack de plug-in et il est contenu dans nrpe.cfg. Tous les autres plug-ins doivent tre rfrencs dans specifique.cfg. Lors de la mise jour du pack, il suffit de copier le nouveau nrpe.cfg sur tous les serveurs.
Lancement de lagent
Lagent nest en fait compos que dun binaire nrpe, de son fichier de configuration et des plug-ins quil lance. Il peut tre lanc travers xinetd, mais cette possibilit nest pas tudie ici. Dans le cas dun lancement en mode standalone, il faut le lancer comme ceci :
Lancement de NRPE
/usr/local/nagios/bin/nrpe -d -c /usr/local/nagios/etc/nrpe.cfg
NRPE sexcute sous lidentit de lutilisateur spcifi dans son fichier de configuration, condition que celui-ci ne soit pas root. En effet, dans ce cas, il ne se lance pas. On utilise gnralement un compte non privilgi nomm nagios.
Exemple dinterrogation
Depuis le serveur Nagios, on lance la commande check_nrpe avec comme paramtres lhte sur lequel est lanc NRPE, ainsi que la commande dsire (en loccurrence, la commande rfrence par check_load). Plaons-nous tout dabord dans la situation o lutilisateur ne peut pas fournir darguments la commande :
Interrogation de lagent NRPE
check_nrpe -H srv-web1 -c load OK - Charge moyenne: 0.51, 0.28, 0.28|load1=0.510;1.000;2.000;0; load5=0.280;1.000;2.000;0; load15=0.280;1.000;2.000;0; echo $? 0
98
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Dans les deux cas, du point de vue de Nagios, le rsultat est le mme que celui dune commande locale. Il en retire les mmes informations, savoir le code retour et les lignes de donnes.
Nous avons besoin dun compte sur srv-web1. Nous utilisons le compte nagios que nous aurions utilis pour NRPE. La commande renvoie ce qui suit :
Rsultat
OK - Charge moyenne: 0.25, 0.35, 0.35|load1=0.250;1.000;2.000;0; load5=0.350;1.000;2.000;0; load15=0.350;1.000;2.000;0; echo $? 0
Nous obtenons le mme rsultat que si nous lavions lanc travers NRPE.
99
Problme de lauthentification
Cette mthode prsente un problme : le serveur distant demande une identification. Lorsquon fait des des tests, on peut saisir un mot de passe ; ce nest pas le cas si la commande est lance par Nagios. L encore, le protocole SSH propose une solution. Il est possible dutiliser une mthode dauthentification par chiffrement asymtrique. Sans entrer dans le dtail, lutilisateur cre deux cls lies : une publique, quil peut fournir volont ; une prive, quil doit garder jalousement. La cl prive peut dchiffrer des messages cods avec la cl publique de lutilisateur. Si un serveur envoie un message alatoire chiffr avec la cl publique dun utilisateur, seul ce dernier peut retrouver le message original grce sa cl prive. Cela permet dauthentifier formellement un utilisateur.
Pour une introduction au chiffrement cl publique, lire : R Lucas, PGP et GPG, Eyrolles 2006
Lorsque le programme demande une passphrase, il faut la laisser vide. Il sagit dun mot de passe chiffrant la cl prive. Nous ne pouvons pas lutiliser ici car il faudrait la saisir chaque fois que lon utilise la cl, ce qui nest pas possible au sein de Nagios.
SCURIT Cl SSH sans phrase secrte
Les cls SSH sans phrase de passe sont peu populaires chez certains administrateurs qui craignent une compromission de laccs au serveur. Pour pallier ce problme, on peut souvent utiliser ssh-agent. Cependant, ssh-agent et ssh communiquent par le biais dune variable denvironnement, variable que Nagios supprime avec toutes les autres avant de lancer les sondes. La mise en place de ssh-agent est donc dlicate. Le compte nagios est de toute faon un compte sans privilges, ce qui rduit les risques encourus du point de vue de la scurit.
~/.ssh/id_rsa,
la publique
100
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Il faut dployer la cl publique sur le serveur distant. Nous utilisons pour cela le programme ssh-copy-id qui facilite grandement la tche :
Dploiement de cls sur un compte distant
ssh-copy-id -i ~/.ssh/id_rsa.pub nagios@srv-web1
Une fois la cl en place, lutilisateur sur le serveur matre peut se connecter sans mot de passe sur le serveur srv-web1. Il peut galement y lancer des commandes.
101
Ce protocole peut tre dcoup en deux fonctionnalits principales : un client obtient des informations en lanant une requte au serveur. On nomme cela le poll SNMP ; llment rseau envoie une information sous la forme dune alerte un dmon distant. Ce sont les traps ou alertes SNMP. Ce mcanisme sera tudi dans un autre chapitre car il fait partie des mthodes passives. Les informations exportes par SNMP sont nombreuses et peuvent varier suivant le constructeur. Elles sont indexes sur un arbre dont chaque entre est un OID (Object unique IDentifier). Elles sont regroupes dans des fichiers nomms MIB. Ils reprsentent la cartographie des donnes de larbre. Chaque constructeur possde une branche. Il peut y faire figurer les informations quil souhaite. Certaines branches sont standardises. On peut citer pour exemple la MIB HOSTRESOURCES. Cest dans cette dernire que nous allons prendre la plupart de nos informations. Dans les versions les plus rpandues de SNMP, les versions 1 et 2c, la scurit est base sur un mot de passe nomm communaut. La valeur par dfaut de ce mot de passe est public. Il est diffus en clair sur le rseau. La version 3, la plus rcente, possde de vritables mcanismes de scurit. Elle nest malheureusement pas encore largement dploye.
102
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Si, dans les quipements rseau, lutilisation du SNMP est impose, ce nest pas le cas dans le cadre des systmes dexploitation. Les informations disponibles par ce biais sont limites. On y trouve des valeurs classiques qui suffisent dans une partie des cas. Dans de nombreuses situations, elles ne sont pas suffisantes. Sur certains systmes, la seule information disponible propos de la mmoire est lutilisation de la mmoire virtuelle. Celle-ci regroupe la mmoire physique et lespace dchange. Lorsque celui-ci est utilis, il est bien souvent trop tard. Un tel indicateur nest pas suffisant. Des plug-ins ddis lancs par des agents sont plus appropris.
MTHODE SNMP, un bon dbut
Les agents SNMP tant fournis par les systmes dexploitation, les administrateurs ne sopposent pas leur activation. Cela peut tre pratique dans un premier temps pour leur montrer les avantages de la supervision. Une fois conquis, les administrateurs demanderont des amliorations qui ncessiteront un vritable agent. Ils ne sopposeront plus son installation.
103
Mise en place
Lagent possde un excutable dinstallation. Il sinstalle par dfaut dans le rpertoire C:\Program Files\NSClient++. Pour ceux qui souhaitent automatiser linstallation, il suffit de dposer les fichiers de lagent dans un rpertoire et de lancer la commande suivante :
Installation de NSClient++
NSClient++ /install
Pour le dmarrer, il suffit de lancer le service du mme nom. Le module NRPE coute sur le port classique 5666/TCP. Les autres modules sont sur le port 12489/TCP. La configuration est galement dcoupe en deux parties, une pour chaque lment de lapplication. Elle se trouve dans le fichier NSC.ini. La configuration et lutilisation de lagent NRPE sont identiques celles de la version UNIX, nous ny reviendrons pas. La configuration du reste de lagent commence par la dclaration des modules utiliss. On les place dans la partie [modules] du fichier de configuration. Voici un exemple de configuration contenant les modules les plus classiques:
Configuration des modules
[modules] FileLogger.dll CheckSystem.dll CheckDisk.dll NSClientListener.dll NRPEListener.dll CheckEventLog.dll CheckWMI.dll
Vient ensuite la partie [Settings] o se trouvent les clients autoriss dialoguer avec lagent et la dfinition dun mot de passe si besoin. Voici un exemple pour un serveur Nagios dont ladresse est 192.168.0.2 :
Paramtres de scurit
[Settings] password=superpassword allowed_hosts=192.168.0.2 use_file=1
104
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Le paramtre use_file permet de signaler NSClient++ de prendre ses paramtres dans le fichier de configuration plutt que dans la base de registre. Cette dernire utilisation est viter, la fois du point de vue de la facilit dadministration et pour unifier ladministration des diffrents agents sous Windows et sous Unix.
Importance de WMI
Une grande source dinformations Windows implmente la norme WBEM (Web-Based Enterprise Management) sous le nom WMI. Elle prsente sous la forme de tables les informations du systme et de certaines applications compatibles. Lutilisateur peut effectuer des recherches dans ces tbles grce une syntaxe proche du SQL. Un systme de filtres WHERE est galement disponible pour faciliter les recherches complexes. Lors des premiers contacts avec les tables exportes nativement par le systme Windows, les administrateurs sont impressionns par leur nombre. Le systme expose presque toutes ses informations par ce biais. Le site de documentation MSDN de Microsoft savre dune aide prcieuse. Un outil nomm ScriptomaticV2 est disponible sur ce site. Il permet dnumrer et dinterroger simplement toutes les tables disponibles sur le systme.
SCURIT Le besoin de droits levs
Malheureusement, les requtes WMI de supervision systmes demandent des droits maximum sur le serveur. Les agents neffectuant que des Select et filtrant les demandes, le risque est acceptable.
Exemple dinterrogation WMI Par exemple, pour obtenir lespace libre disponible sur les disques, il faut lancer la requte suivante :
105
Nous obtenons :
FreeSpace=2120848896
Le rsultat est en octets, soit ici environ 2 Go despace libre sur le lecteur C:.
Les valeurs les plus importantes des tables WMI seront exposes dans un prochain chapitre.
Pour lancer la requte avec NSClient++, il suffit de lancer, depuis le serveur de supervision, la commande suivante :
Requte WMI depuis un client
check_nrpe -H $HOSTADDRESS$ -c CheckWMIValue -a 'Query=SELECT FreeSpace FROM Win32_LogicalDisk WHERE DeviceID="C:"' MinCrit=1000000000
En un mot
Ltape la plus simple de la supervision consiste superviser les lments distants directement par le rseau. Diverses mthodes existent. De la plus lgre qui consiste vrifier louverture dun port la simulation complte dun client, ladministrateur a le choix. Lorsque les informations ne sont pas disponibles directement, lutilisation dun agent simpose. Suivant les systmes considrs, les possibilits sont varies.
5
Installation et configuration : premier test de quelques serveurs web
Aprs avoir vu les grands principes de Nagios, tentons une premire mise en place de loutil. Pour cela, nous allons prendre une situation simple : la supervision de serveurs web.
108
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Choix du systme
Nagios peut tre install sur de nombreux environnements Unix. Afin de limiter les surprises et dtre le plus standard possible, il est recommand de linstaller sur Linux. Ce systme dexploitation trs rpandu est disponible dans de nombreuses distributions. Nous ne pouvons pas dtailler linstallation sur toutes les distributions possibles. En dresser la liste remplirait dj ce livre. Nous allons utiliser un systme CentOS. Il sagit dune version totalement libre du systme RedHat. Ce dernier est le plus rpandu dans les entreprises.
Ces deux distributions sont totalement compatibles au niveau des binaires. CentOS est une compilation des sources de RedHat dont on a retir les logos et nom de RedHat.
La version utilise est CentOS 5.2. Les utilisateurs de distributions diffrentes comme Debian ou Suse devront adapter leur systme les paquetages prsents. Les grandes lignes de linstallation sont les mmes.
109
En passant par le gestionnaire de paquetages, les chemins dinstallation des diffrents fichiers de lapplication respectent les chemins dfinis par la distribution. Si lon choisit de compiler soi-mme le code source, il arrive souvent que lapplication choisisse elle-mme ses chemins, en contradiction avec les recommandations des administrateurs. Heureusement, on peut dfinir ces chemins lors de la phase prliminaire la compilation. Les chemins tant communs aux diffrentes installations de tous les administrateurs de la plante, trouver de laide est simple. Ce point est prendre en considration lors du choix de linstallation par paquetage ou par compilation. Dans la majorit des situations, linstallation par paquetage suffit aux administrateurs.
Quelques dsavantages
Certains inconvnients font toutefois surface. Ladministrateur utilisant les versions empaquetes (ou, en franglais, packages) des outils est soumis aux choix de celui qui a prpar le paquetage. Si, par exemple, une fonctionnalit rcente na pas t intgre au paquetage, ladministrateur na aucun moyen de la rajouter aprs installation. Il devra soit renoncer lutiliser, soit procder une compilation manuelle. Dans ce cas, il perdra les avantages de la gestion de paquetages. Le cas inverse est galement envisageable. Si le crateur du paquetage a configur une fonctionnalit non souhaite par dadministrateur, deux situations sont possibles : la fonctionnalit ralentit lutilisation mais ne cause pas de souci de fonctionnement ladministrateur ; la fonctionnalit cause de graves problmes lutilisation. Cette seconde situation est trs rare, mais peut arriver. L encore, ladministrateur doit choisir de revenir ou non la compilation manuelle. Si ladministrateur souhaite apporter des modifications ou amliorations loutil, il ne pourra pas utiliser la version dj compile. La modification des sources implique de compiler nouveau loutil. Cette situation nest pas courante dans le cas de Nagios mais elle existe. Ladministrateur doit dj avoir des notions de dveloppement en langage C. ll doit galement avoir des besoins particuliers que Nagios ne couvre pas en standard. Dans cette situation, une installation par paquetage nest pas possible.
110
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
La dclaration de RPMFORGE dans yum se fait en installant un paquetage. On rcupre ce paquetage sur un site web :
Rcupration du paquetage rpmforge
wget http://apt.sw.be/redhat/el5/en/i386/RPMS.dag/rpmforge-release0.3.6-1.el5.rf.i386.rpm
Le repository (dpt) ajout yum expose une cl pour authentifier ses paquetages. Il est ncessaire de limporter :
Installation de la cl de rpmforge
rpm --import http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt
Ces outils possdent des dpendances. Voici la liste des paquetages ncessaires au bon fonctionnement de Nagios :
Liste des paquets ncessaire Nagios
fping, gd, libtool-ltdl, perl-Crypt-DES, perl-Digest-HMAC ,perl-NetSNMP, perl-Socket6
111
Il fait appel
tudions un peu cette configuration. Le rpertoire /usr/local/nagios/var est chang en /var/nagios pour les fichiers temporaires et /var/log/nagios pour les fichiers journaux (ou journaux). Lutilisateur faisant fonctionner Nagios est nagios. Il a t cr lors de linstallation du paquetage. Les commandes externes sont prises en compte. Le fichier de commandes est /var/nagios/rw/nagios.cmd. Il ny a pas de limite dans le nombre de vrifications lances en parallles. Les notifications sont envoyes aux administrateurs et enfin les donnes de performances ne sont pas prises en comptes. Pour cette premire mise en place, ces paramtres ne seront pas modifis. Seuls les lments superviser le seront.
112
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
113
Le fonctionnement de ces commandes est simple malgr leur longueur. Elles ralisent lenvoi de le-mail en deux tapes. Tout dabord, elles gnrent le texte du message. Lors de lappel la commande pour lenvoi dune notification, les macros sont modifies par les valeurs du contexte de lerreur. Par exemple, dans le cas dune erreur sur le nud srv-web1, la macro $HOSTNAME$ est modifie en srv-web1. Voici un exemple de texte gnr pour une alerte relative un hte qui nest plus disponible :
Exemple de texte envoy par e-mail
***** Nagios ***** Notification Type: PROBLEM Host: srv-web1 State: DOWN Address: 192.168.0.3 Info: CRITICAL - Socket timeout after 10 seconds Date/Time: Mon Feb 2 22:06:03 CET 2009
Une fois ce texte gnr, il est envoy sur lentre standard de la commande /bin/ mail. Cette dernire sert tout simplement envoyer un e-mail. Le paramtre -s sert paramtrer le titre, qui est galement appel avec des macros. Le dernier argument correspond ladresse du destinataire du message. Un service denvoi de-mail est ncessaire sur le serveur de supervision. ce propos, sur la distribution installe ici, cest le programme Sendmail qui est install par dfaut. Il est fortement recommand de passer un programme plus rcent et de meilleure rputation : Postfix. Cette opration est fort simple :
Pour une introduction Postfix : R Bck et al., Monter son serveur de mails sous Linux, Eyrolle 2006
114
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Installation de Postfix
yum install postfix /etc/init.d/sendmail stop chkconfig sendmail off chkconfig --add postfix /etc/init.d/postfix start
Une fois ce remplacement fait, il est conseill de tester lenvoi dun e-mail directement en ligne de commande comme le ferait lutilisateur nagios. Une fois connect avec ce compte, il suffit dappeler la commande /bin/mail.
Test denvoi de-mail
su nagios /usr/bin/printf "%b" "message de test" | /bin/mail -s "mon titre" monemail@mondomaine.com
Si le message arrive bien dans la boite aux lettres de lutilisateur concern, le test est valid. Dans le cas contraire, il faut vrifier dans le fichier journal de Postfix pourquoi lenvoi a chou. Le fichier journal en question est /var/log/maillog.
La priode qui nous intresse ici est de 24 heures sur 24, 7 jours sur 7.
Priode la plus large possible
define timeperiod{ timeperiod_name 24x7 alias 24H a Day, 7 Days a Week monday 00:00-24:00 tuesday 00:00-24:00 wednesday 00:00-24:00 thursday 00:00-24:00 friday 00:00-24:00 saturday 00:00-24:00 sunday 00:00-24:00 }
115
Si les contacts souhaitent tre avertis, paralllement aux e-mails, par dautres mthodes, il suffit de rajouter la nouvelle commande de notification aprs notifyservice-by-email et notify-host-by-email, en sparant simplement les commandes par une virgule.
116
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Il peut tre utile de tester la commande directement en ligne de commande avant de linscrire dans les fichiers de configuration. Ici, le test porte sur ltat du serveur srv-web1 :
Test de check_tcp
/usr/lib/nagios/plugins/check_tcp -H 192.168.0.1 -p 22 TCP OK - 0.016 second response time on port 22|time=0.015545s;;;0.000000;10.000000
Le test est concluant. Cette commande fonctionne correctement lorsquelle est lance par lutilisateur nagios. Cette vrification est rapide et devrait prcder toute configuration dune nouvelle commande au sein de Nagios.
PRATIQUE Des options nombreuses
La sonde check_tcp regorge doptions plus ou moins utiles. Lancer simplement check_tcp -h prsente toutes ses possibilits aux administrateurs.
117
118
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
notification_period 24x7 notification_interval 120 notification_options d,u,r contacts d.brossard,e.belleville notifications_enabled 1 event_handler_enabled 1 flap_detection_enabled 1 failure_prediction_enabled 1 process_perf_data 0 retain_status_information 1 retain_nonstatus_information 1 } define host{ name srv-web3 host_name srv-web3 alias srv-web3 address 192.168.0.3 check_period 24x7 check_interval 2 retry_interval 1 max_check_attempts 5 check_command checktcp!22 notification_period 24x7 notification_interval 120 notification_options d,u,r contacts d.brossard,e.belleville notifications_enabled 1 event_handler_enabled 1 flap_detection_enabled 1 failure_prediction_enabled 1 process_perf_data 0 retain_status_information 1 retain_nonstatus_information 1 } define host{ name srv-web4 host_name srv-web4 alias srv-web4 address 192.168.0.4 check_period 24x7 check_interval 2 retry_interval 1 max_check_attempts 5 check_command checktcp!22 notification_period 24x7 notification_interval 120 notification_options d,u,r contacts d.brossard,e.belleville
119
120
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
121
Lordre de dfinition nest pas important. Les services peuvent tre dfinis avant les nuds ; tant que, la fin de la vrification de la configuration, tous les lments sont bien prsents, Nagios arrivera faire le lien.
Lancement de Nagios
Nous avons dfini les contacts, une priode de temps, nos htes et enfin les services. Il est important, avant tout lancement de Nagios, de tester la configuration. Mme dans le cas de modifications mineures, ce test est important. Il est rapide et vite de se retrouver sans supervision le temps de corriger en urgence la configuration errone active par mgarde. Largument -v de nagios permet de raliser cette vrification. Une manire plus simple consiste passer par le script situ sous /etc/init.d et lui demander de sen charger.
Vrification de la configuration
/etc/init.d/nagios checkconfig
Dans le cas dune configuration comportant une ou plusieurs erreurs, lappel renvoie le message :
Message derreur
Running configuration check... CONFIG ERROR! Check your Nagios configuration.
122
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Il est alors ncessaire de corriger la configuration. Pour obtenir des messages derreurs plus prcis, on doit faire appel directement Nagios :
Vrification manuelle
/usr/bin/nagios -v /etc/nagios/nagios.cfg
Nous obtenons :
Rsultat de la vrification
Nagios 3.0.6 Copyright (c) 1999-2008 Ethan Galstad (http://www.nagios.org) Last Modified: 12-01-2008 License: GPL Reading configuration data... Running pre-flight check on configuration data... Checking services... Checked 12 services. Checking hosts... Error: Contact 'd.brossarr' specified in host 'srv-web1' is not defined anywhere! [] Total Warnings: 0 Total Errors: 1 ***> One or more problems was encountered while running the pre-flight check...
Ici, lerreur est simplement due un nom mal orthographi. Si la configuration est valide, le message est :
Configuration valide
/etc/init.d/nagios checkconfig Running configuration check... OK.
Une fois la configuration valide, Nagios peut tre dmarr. Pour cela, ladministrateur doit le lancer en tant que root :
Lancement de Nagios
/etc/init.d/nagios start
123
On peut vrifier simplement que le processus liste des processus de lutilisateur nagios :
ps -fu nagios
nagios
Il peut tre utile de suivre le fichier de log de Nagios dans un premier temps. Dans cette installation, ce fichier figure dans /var/log/nagios. Pour le suivre en temps rel, il suffit de lancer la commande tail :
Lecture du fichier de log de Nagios
tail -n 100 -f /var/log/nagios/nagios.log
Nous remarquons que chaque ligne commence par un horodatage exprim en temps Unix, cest--dire le nombre de secondes coules depuis le 1er janvier 1970. Si ce format est pratique pour le traitement des fichiers logs, il nest pas trs lisible pour un tre humain. Pour changer cela, nous utilisons une fonctionnalit de Perl. Cet interprteur na pas besoin dun script utiliser. Les commandes lancer peuvent tre passes aprs largument -pe. La fonction localtime permet de transformer un temps Unix en chane plus lisible pour un tre humain. Associe aux expressions rgulires, une simple commande donne au fichier de log de Nagios une forme plus agrable :
124
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Nous obtenons :
[Mon [Mon [Mon [Mon Feb Feb Feb Feb 2 2 2 2 21:18:09 21:18:09 21:18:09 21:18:09 2009] 2009] 2009] 2009] Nagios 3.0.6 starting... (PID=2496) Local time is Mon Feb 02 21:18:09 CET 2009 LOG VERSION: 2.0 Finished daemonizing... (New PID=2497) status.dat
dans /var/nagios :
125
[Mon Feb 2 21:55:03 2009] SERVICE NOTIFICATION: e.belleville;srv-web1; Http;CRITICAL;notify-service-by-email;Connection refused [Mon Feb 2 21:55:03 2009] SERVICE NOTIFICATION: d.brossard;srv-web1; Http;CRITICAL;notify-service-by-email;Connection refused
Il est utile de vrifier que les e-mails sont bien partis du serveur vers les botes aux lettres des administrateurs.
Trace de la notification dans Postfix
Feb 2 22:09:30 localhost postfix/smtp[4455]: 0ED6314CBCB: to=<e.belleville@mydomain.com>, relay=mail.mydomain.com[192.168.0.253]:25, delay=2.5, delays=0.06/0.01/ 0.53/1.9, dsn=2.0.0, status=sent (250 2.0.0 OK 1233608970 23si2535605mum.52)
Les commandes de vrification envoient bien les e-mails. Un contrle rapide, directement dans les botes des administrateurs, permet de sassurer que les messages sont bien forms.
126
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Avec une supervision des systmes, les problmes peuvent tre dtects avant quils ne causent de vrais soucis. Un disque qui se remplit est rapidement dtect et les administrateurs peuvent faire du mnage quand lespace disque occup atteint 95 %.
Les indicateurs prendre sur les systmes en compte sont nombreux. Les plus importants sont traits au chapitre 14. Nous allons en voir ici quelques-uns. Pour plus de dtails quant leur fonctionnement, le lecteur peut se rfrer au chapitre ddi.
127
La commande de vrification est check-host-alive. Elle effectue un simple test de rponse un ping. Il y a peu de chances quelle retourne un jour une erreur. Si cest le cas, cela signifie que le serveur de supervision est tomb : Nagios aurait alors bien du mal lancer ses vrifications. Cette vrification est tout de mme lance. Nagios voit en fait le serveur localhost comme nimporte quel hte et il na aucune connaissance de son placement sur ce dernier. Lhte est reli au groupe de contacts admins. Ce groupe comporte un seul membre : nagiosadmin. Celui-ci a pour adresse e-mail nagios@localhost, cest--dire ladresse associe au compte faisant fonctionner Nagios. Ladministrateur doit remplacer ce compte par celui dun ou plusieurs administrateurs rels afin que les alertes ne soient pas perdues. La configuration des notifications est un peu diffrente de ce que nous avons mis en place. Dans la configuration propose pour localhost, la priode de notification est workhours au lieu de 24x7. Cette priode est dfinie par les horaires de travail de 9 h 17 h, du lundi au vendredi. Si le test dun serveur comme celui-ci dcle un incident en dehors de cette priode de temps, les administrateurs doivent en tre informs. Il est conseill de modifier workhours en 24x7. Services standard accrochs au serveur de supervision Les services dfinis par dfaut sur le serveur de supervision sont les suivants : PING : test de rponse de la machine un ping ; Root Partition : vrification de lespace disponible sur la partition / ; Current Users : nombre dutilisateurs connects au systme ; Total Processes : nombre total de processus lancs sur le serveur ; Current Load : vrification de la charge de la machine. Les services dfinis ne sont pas exempts de dfaut comme nous allons le voir. Sils permettent de se familiariser avec la supervision systme, ils se rvlent vite limits. Le service PING na pas de vraie raison dtre. Il est une duplication du test effectu au niveau de lhte et il est conseill de le supprimer.
128
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Le service Root Partition ne surveille que la partition /. Si cet espace est trs important pour le systme, ce nest pas forcment celui qui se remplit le plus souvent. Un espace /var rempli aura galement des effets dramatiques sur les applications et le risque quil se remplisse est beaucoup plus lev que pour /. Il nest pas conseill de crer un service par partition. Nous verrons par la suite une mthode plus simple pour superviser les disques. Les services Current Users et Total Processes ne sont pas particulirement utiles. Les cas dutilisateurs connects directement sur un serveur Unix sont de plus en plus rares. De mme, les administrateurs prfrent surveiller le nombre de processus dune application particulire plutt que le nombre total de processus dun systme. Le service Current Load est, quant lui, beaucoup plus utile. Il permet de savoir quand un serveur est trop charg. La configuration de la commande est malheureusement inapproprie dans beaucoup de situations. Avec les valeurs par dfaut, un serveur standard pourrait tre surcharg sans que les administrateurs ne soient au courant. Le chapitre 14 explique comment fonctionne cet indicateur et comment choisir les valeurs dalerte.
Nos quatre serveurs web ajouts au serveur de supervision : le compte est bon. Une fois la configuration valide, le dmon peut tre redmarr. Pour cela, deux solutions existent : procder un arrt / redmarrage de Nagios ; lui faire recharger sa configuration. La premire mthode est un simple appel au service nagios , dabord avec une commande stop puis avec une commande start. La seconde mthode consiste envoyer un signal HUP Nagios. Ce signal contraint Nagios relire sa configuration. Pour obtenir le numro de processus de Nagios, il suffit de lire le fichier dfini par la variable lock_file. Sur notre environnement, sa valeur est /var/run/nagios.pid.
129
On peut alors vrifier dans le fichier journal de Nagios quil a bien reu la demande.
Vrification du rechargement
[...] lancement de Nagios [Tue Feb 3 21:30:37 2009] Finished daemonizing... (New PID=1914) [...] lancement de la commande kill [Tue Feb 3 21:36:04 2009] Caught SIGHUP, restarting... [Tue Feb 3 21:36:04 2009] Nagios 3.0.6 starting... (PID=1914) [Tue Feb 3 21:36:04 2009] Local time is Tue Feb 03 21:36:04 2009 [Tue Feb 3 21:36:04 2009] LOG VERSION: 2.0
Sa configuration seffectue dans le fichier /etc/nagios/nrpe.cfg, dont le format a t tudi au chapitre prcdent. On doit y modifier le paramtre allowed_hosts pour lui affecter ladresse du serveur Nagios. Si le paramtre nest pas chang, un appel au client check_nrpe naboutit pas :
Erreur dauthentification
/usr/lib/nagios/plugins/check_nrpe -H srv-web1 -n CHECK_NRPE: Error receiving data from daemon.
130
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Ce message sexplique par le fait que le client a pu ouvrir le port avec lagent, mais que celui-ci a immdiatement ferm la connexion. Le client nayant reu aucune donne, il lve une alerte. Une fois le paramtre dfini, lagent peut tre dmarr :
Dmarrage de lagent
/etc/init.d/nrpe start
Un appel check_nrpe sans demande de commande renvoie la version de lagent distant. Choix dune connexion SSL ou non Il est important de noter que lagent possde deux modes de fonctionnement : avec SSL ; sans SSL. Ce mode de fonctionnement ne peut tre fix dans le fichier de configuration. Il est choisi lors de la compilation de lagent. Au lancement de lagent, on peut voir dans quel mode celui-ci fonctionne grce la commande :
Vrification de la configuration de NRPE
/usr/sbin/nrpe -c /etc/nagios/nrpe.cfg
SSL/TLS
lagent fonctionne en mode SSL. Une autre mthode consiste vrifier les bibliothques lies au binaire nrpe. Si la bibliothque SSL est prsente, lagent lutilise :
131
La commande check_nrpe doit choisir dutiliser ou non une connexion SSL avec lagent. Le paramtre -n permet de demander une connexion en clair. Dans le cas dune tentative de connexion chiffre sur un agent qui ne gre pas SSL, le client renvoie le message :
Connexion impossible sans SSL
CHECK_NRPE: Socket timeout after 10 seconds.
Il est fortement conseill dutiliser les connexions SSL entre les clients et les agents pour les protger des regards indiscrets. La configuration des clients nen est que plus simple : le paramtre -n nest pas utilis. Commandes exportes Lagent exporte les mmes commandes que pour le serveur de supervision. Une partie de la configuration ncessite une adaptation :
Commandes standard de NRPE
command[check_disk1]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hda1 command[check_disk2]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10 -p /dev/hdb1
Il est conseill davoir un unique test pour lensemble des disques. Pour cela, il faut supprimer les deux lignes et rajouter :
Nouvelle dfinition
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 20 -c 10
132
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
puis redmarrer lagent. Dans cette configuration, une partition sous la barre des 20 % despace disponible lvera un avertissement, moins de 10 % une alerte critique. Configuration des services Lagent tant configur et lanc, il est temps de configurer les commandes de vrification et les services. Tout dabord, avant dditer les fichiers de configuration, il est ncessaire de passer par une tape de test de commande directement avec un shell. Depuis le serveur Nagios, nous allons utiliser la commande check_nrpe pour dialoguer avec les agents. Le compte utilis sur les serveurs est nagios. Nous vrifions que le dialogue stablit correctement avec les agents et quils effectuent bien les vrifications.
Interrogation distante de NRPE
/usr/lib/nagios/plugins/check_nrpe -H srv-web1 -c check_disk DISK OK - free space: / 4139 MB (75% inode=96%); /var 8282 MB (97% inode=99%); /boot 75 MB (81% inode=99%); /dev/shm 251 MB (100% inode=99%);| /=1357MB;5776;5786;0;5796 /var=212MB;8938;8948;0;8958 / boot=17MB;78;88;0;98 /dev/shm=0MB;231;241;0;251
Cette tape tant valide, nous pouvons passer la configuration. La commande check_nrpe est ncessaire et nous la rajoutons donc au fichier commands.cfg :
Dfinition de check_nrpe
define command{ command_name check_nrpe command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ }
La configuration des services y fait appel. Largument fourni en $ARG1$ est la commande lancer par lagent. Par exemple, la configuration du service Load sur le serveur srv-web1 est :
Dfinition du service de vrification de charge par NRPE
define service{ host_name srv-web1 service_description Load check_command check_nrpe!check_load active_checks_enabled 1 notifications_enabled 1 flap_detection_enabled 1 check_period 24x7 max_check_attempts 5
133
134
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Installation dApache
yum install httpd
Quant aux fichiers de linterface de Nagios, ils sont situs dans : /etc/nagios : fichiers de configuration de linterface ; /usr/share/nagios : fichiers de linterface, par exemple les images ; /var/log : fichiers de log ; /usr/lib/nagios/cgi : fichiers CGI de linterface. Linterface ne doit pas tre disponible pour tout le monde. Elle repose sur lauthentification dApache. Le fichier contenant les comptes et mots de passe des utilisateurs est /etc/nagios/htpasswd.users. Pour modifier les entres dun utilisateur existant ou en crer un nouveau, il faut utiliser loutil htpasswd :
Modification du mot de passe de nagiosadmin
htpasswd -c /etc/nagios/htpasswd.users nagiosadmin
Le fichier de configuration de linterface de Nagios est /etc/nagios/cgi.cfg. La configuration suivante permet lutilisateur nagiosadmin dagir depuis linterface.
Configuration du CGI de Nagios
# Utiliser l'authentification use_authentication=1 # Acceder aux informations systeme authorized_for_system_information=nagiosadmin # Acceder a la configuration authorized_for_configuration_information=nagiosadmin # Lancer des commandes authorized_for_system_commands=nagiosadmin # Observer les hotes et services authorized_for_all_services=nagiosadmin authorized_for_all_hosts=nagiosadmin
Pour se connecter linterface, ladministrateur peut utiliser son navigateur Internet prfr et ouvrir lURL http://192.168.0.5/nagios. Une fois connect avec le compte nagiosadmin, ladministrateur peut observer librement ltat des htes et des services. Avec les autorisations fournies dans le fichier cgi.cfg, ladministrateur a le droit de forcer des vrifications ou de voir la configuration en place.
135
136
Introduction la supervision et Nagios avec une mise en place simple PREMIRE PARTIE
Reprenons un peu notre exemple. Nous avons dfini quatre htes distants et, sur chacun deux, six services. Ceci reprsente 24 services qui peuvent remonter une erreur, si on considre que le serveur de supervision na jamais de problme. En cas de coupure rseau, les informations ne sont pas remontes. Si chaque service lve une alerte, les administrateurs reoivent chacun 24 messages. ceci, il faut ajouter quatre alertes dhte si les serveurs sont injoignables. Les notifications sont envoyes toutes les 120 minutes, soit toutes les deux heures. Si le problme survient 18 h, les administrateurs se retrouvent le lendemain matin 8 h avec (8 h - 18 h ) / 2 28 = 196 e-mails dalertes. Et ce, pour quatre malheureuses machines. Si le problme arrive aprs lajout dune vingtaine de serveurs, le nombre de notifications peut atteindre 1 000 e-mails dans la nuit. Aucun administrateur, mme avec la meilleure volont du monde, ne va lire toutes les erreurs. Heureusement, Nagios propose des mcanismes simples permettant de limiter trs fortement ce phnomne. Ils seront tudis au prochain chapitre.
137
Si les gains sont importants, ils ne sont pas suffisants pour atteindre un seuil acceptable en termes de charge de configuration lorsque le nombre dhtes et de services est lev. Ladministrateur risque fortement de perdre pied. Sans matrise complte de la configuration, des lments peuvent faire lobjet dune surveillance superflue. Les administrateurs reoivent des alertes qui ne les intressent pas. Plus grave, des lments peuvent ne pas tre surveills alors que les administrateurs croient le contraire. Si ladministrateur passe son temps changer la configuration, il ne peut pas profiter des bienfaits de la supervision. Bien utilise, la supervision peut lui faire gagner du temps ; passer son temps ladministrer ne rentre pas dans la catgorie utilisation optimale . L encore, Nagios propose de nombreux mcanismes pour aider ladministrateur grer simplement sa configuration. Ils seront tudis au chapitre 8.
En un mot
Cette premire mise en place nous permet de sentir le fonctionnement de Nagios. Pour un faible nombre de nuds, elle est simple. Les administrateurs prennent got trs rapidement la supervision. Laugmentation du primtre de lapplication intervient rapidement et suivant deux axes : le nombre de nuds ; le nombre de services surveills par hte. Les problmes surviennent lors de la phase dexpansion et aprs. Mal contrle, la solution submerge les administrateurs dalertes inutiles. La configuration devenant de plus en plus consquente, ladministrateur Nagios doit passer un temps croissant administrer loutil au lieu de lutiliser. Dautres problmes surviennent, par exemple la gestion des services particuliers. Les alertes passives ne sont pas gres par linstallation actuelle. Ladministrateur na, pour linstant, aucune mthode pour connatre les capacits de traitement de Nagios. Poussons notre tude de cet outil dans les prochains chapitres afin de rpondre toutes ces questions et dobtenir une solution pleinement utilisable.
DEUXIME PARTIE
6
Trier les alertes et amliorer leur pertinence
Les alertes remontes aux administrateurs sont au cur mme des outils de supervision. Nous allons voir comment assurer leur prcision et leur pertinence.
142
Concision et prcision
Les administrateurs naiment pas perdre de temps lorsquil sagit dalertes sur leurs serveurs ou lments rseau. Ils veulent que linformation soit nonce rapidement et clairement. Le responsable de la solution de supervision doit donc particulirement veiller la concision des alertes, sans pour autant tomber dans le travers inverse : lalerte doit tre suffisamment explicite pour permettre ladministrateur de savoir do vient le problme. Trop court, un descriptif nindique pas do vient la panne. Les informations gnralement ncessaires sont les suivantes : le nom de la machine sur laquelle le problme est survenu ; llment qui est en faute sur la machine ; la criticit de lalerte ; lheure o le problme a t dtect ; un petit texte explicatif du problme (une ligne ou deux maximum) ; un lien vers la rsolution du problme si elle est disponible. Il nest pas ncessaire dajouter des formules de politesse dans le texte, les administrateurs ne sen vexeront pas. Ils ne trouveront les informations recherches que plus rapidement. Il ne faut pas oublier que les messages dalerte sont souvent envoys par plusieurs biais. Les textes ne devront pas tre les mmes entre un envoi par e-mail et un envoi par SMS. Ce dernier est de taille limite : il faut tre trs concis. Les seules informations y placer sont le nom de la machine, llment qui est en faute, la criticit et lheure du problme.
143
Exemple de SMS
Dans le cas dun SMS envoy pour le mme problme, on peut envoyer ce qui suit :
Message dans le cas dun SMS
WARNING: srv-web2/Memory at 16-12-2008 15:35
Criticit
Linformation de criticit des alertes est lune des plus importantes. Un administrateur doit savoir en priorit si lalerte est importante ou non. Il peut tre en train deffectuer une opration sur un serveur et doit pouvoir dterminer rapidement sil a besoin de sinterrompre. Diffrents niveaux dalerte sont dfinis. Ces niveaux changent suivant diffrents critres comme la criticit de la machine et limpact du problme. Ces niveaux se traduisent sur la console par diffrentes couleurs. Celles-ci sont visibles et simples comprendre, et ce sans mme avoir lu la moindre documentation : critique : rouge ; avertissement : orange ; tout va bien : vert.
144
145
tion en raison de lhtrognit de lenvironnement. Nous verrons que Nagios offre lutilisateur des solutions simples pour la grer.
au niveau de la
146
Puisque que la machine est tombe, les services qui y sont surveills passent galement tous en tat non OK. Si la solution de supervision lance une alerte par service, ladministrateur qui les reoit est, pour chaque machine qui tombe, submerg dalertes. Il est inutile de recevoir ces alertes. Ladministrateur a dj linformation de non-disponibilit de la machine. Celle du service napporte aucune nouvelle information. Inutile, elle ne doit pas remonter ladministrateur.
Raction de Nagios
Nagios traite cette situation trs simplement. Si un hte est en tat DOWN, les services sont toujours surveills, mais les alertes ne sont pas envoyes. Sil sarrtait l, lutilisateur pourrait tout de mme recevoir certaines informations inutiles. Les nuds sont surveills rgulirement. Cette supervision permet de dterminer ltat des machines. Ces tests se font en parallle de ceux des services. Si la machine est teste avant les services et si elle tombe entre ces deux tests, on peut arriver une situation o lhte est indiqu comme OK alors que les services ne le sont pas. Nagios pourrait alors dcider denvoyer ce rsultat lutilisateur. Ce nest heureusement pas le cas. En cas de retour non OK sur une machine en tat UP, il planifie un test du nud avant denvoyer le rsultat du service. Si lhte est disponible, cest que le service a rellement un problme. La notification du service est envoye. Il y a un dcalage entre la dtection de lerreur et lenvoi cause du test supplmentaire. Puisque que la machine est disponible, le test est rapide. Ce dlai est, en rgle gnrale, plutt ngligeable. Si lhte est indisponible, la notification du service est oublie. Ceci permet dviter ladministrateur de recevoir une information inutile (voir figure 6-1).
Figure 61
Ce mcanisme est simple et efficace pour limiter le nombre dalertes. La supervision dhte est presque ddie cette utilisation. Linformation envoye aux administrateurs est filtre. Ils nont pas besoin de lire plusieurs messages afin de savoir que cest tout simplement une machine qui est tombe.
147
De plus, suivant les tests des services et le plug-in utilis, linformation de nonrponse de la machine nest pas forcment facilement intelligible. Un message issu dune alerte de test de nud est reue sans erreur dinterprtation, mme par un administrateur ayant peu de cafine dans le sang.
REMARQUE Une premire notion de dpendance
Nous pouvons considrer que ce comportement quivaut une dpendance entre les services et les nuds. Ces derniers ont le mot final concernant les envois dalertes.
Dpendances rseau
Les pertes rseau constituent un autre cas classique o les administrateurs peuvent tre submergs dalertes.
148
Un arbre plus complexe La figure 6-4 prsente un exemple de liens o un nud a plusieurs parents. Dans cette situation, le serveur srv-distant1 a deux pres, ici routeur-1 et routeur-2.
149
Recherche du lien dfaillant Lorsquil rencontre un problme sur un nud, Nagios remonte son arbre de parent en lanant des tests de disponibilit de nuds. Le dernier lment ne rpondant pas est la cause du problme. Cet lment passe en tat DOWN, ses fils sont quant eux en tat UNREACHABLE (inaccessible). Dans le cas des relations parents multiples, il faut que tous les parents soient non disponibles pour que lenfant soit dclar non atteignable sur le rseau (tat UNREACHABLE). La remonte de vrification est illustre par la figure 6-5.
Gnralisation de la dpendance services/hte Ce mcanisme est en fait une gnralisation sur le rseau de la relation de dpendance qui lie les services un hte. Pour cette relation, larbre de relation est trs rduit. Il est mme complmentaire du mcanisme global. Si un service sur un hte est non disponible, Nagios lance un test de nud. Si ce dernier ne rpond pas, il remonte larbre des relations pour trouver la source du problme. Ladministrateur ne reoit quune seule notification, la bonne. Il peut cependant, sil le souhaite, recevoir des alertes pour tous les nuds perdus car non atteignables. Il faut simplement que, dans la configuration des nuds, il ait donn la valeur u (UNREACHABLE) au paramtre notification_options ainsi quau paramtre host_notification_options dans le contact associ au nud. Il est cependant dconseill de procder ainsi, ces informations napportant rien pour la rsolution du problme. De plus, si lutilisateur souhaite avoir la liste des machines indisponibles, il peut regarder directement sur la console.
150
Exemple de dfinition Voici un exemple de dfinition de relation pour lun des cas vus prcdemment :
Exemple de relation de parent
define host{ host_name srv-dist1 parents routeur-filiale,routeur-filiale-bkp } define host{ host_name routeur-filiale parents routeur-princ } define host{ host_name routeur-filiale-bkp parents routeur-princ }
Larbre, un graphe sans cycle Il faut faire particulirement attention ne pas faire de boucle dans la dfinition des relations de parent. Dans une telle situation, la remonte des tests de disponibilit serait sans fin et Nagios tournerait indfiniment. Pour viter cela, il vrifie dans la configuration si les relations forment un arbre, cest--dire un graphe sans cycle.
PERFORMANCES Une vrification trs longue
Dans le pass, la vrification des relations de dpendance par Nagios tait trs lente, voire trop lente. Lalgorithme utilis nest pas optimal. Votre serviteur a propos un nouvel algorithme bien plus efficace qui est, au jour de rdaction, tout juste intgr Nagios. Il sera actif avec la version 3.2.
En cas de problme dtect, la configuration est rejete avec une erreur et Nagios refuse de se lancer. Une telle configuration est interdite :
Relation de parent incorrecte
define host{ host_name routeur-1 parents routeur-2 }
151
Dpendances applicatives
Les applications sont, de nos jours, aussi lies que les lments rseaux. Tout comme pour ces derniers, une gestion des dpendances amliore la pertinence des alertes.
152
Il permet de dfinir les proprits suivantes : dependent_host_name : nom de lhte sur lequel se trouve le service dont on dpend. Dans notre exemple, cest lhte du service B ; dependent_hostgroup_name : nom du groupe de machines o se situent les services dont on dpend ; dependent_service_description : nom du service dont on dpend, dans notre exemple B ; host_name : nom de lhte hbergeant le service surveill initialement, soit le service A ; hostgroup_name : nom du groupe de machines de lhte du service A ; service_description : nom du service surveill initialement, dans notre exemple A ; inherits_parent : on applique ou non les relations de dpendance du service dont on hrite. Ce mcanisme sera tudi un peu plus tard ; execution_failure_criteria : tats du service dont on dpend qui annulent la vrification du service A. Les tats possibles sont : o : tat OK ; w : tat WARNING ; u : tat UNKNOWN ; c : tat CRITICAL ; p : tat PENDING (ltat na pas encore t vrifi) ; n : aucun tat ; notification_failure_criteria : tats du service dont on dpend qui annulent la notification du service A. Les tats sont les mmes que prcdemment ; dependency_period : priode de temps durant laquelle le relation est active. Types dtat Dans la configuration de base, ltat pris en compte est le dernier tat de type HARD. Mme si ltat a chang en SOFT, il nest pas pris en compte. Si ladministrateur souhaite changer ce comportement, il peut ajouter le paramtre soft_state_dependencies dans le fichier de configuration nagios.cfg. Exemple de dfinition Dans le cas de nos services A et B, nous supposons que si service A ne doit pas tre surveill. La dfinition est :
B
est en tat
CRITICAL,
le
153
154
155
Si le service B est en tat CRITICAL ou D en tat WARNING, alors A nest pas surveill. Ce comportement est en fait le plus logique. Considrons A comme un service web, B un service de base de donnes et D le service daccs au disque de la base. Pour que le service web (A) fonctionne, il a besoin de sa base de donne (B). Cette dernire, quant elle, a besoin daccder ses fichiers (D). Nous avons naturellement besoin de D pour A.
CONFIGURATION Un hritage conseill
Comme nous venons de le voir, lhritage des dpendances est un comportement logique. Il est conseill de lactiver systmatiquement.
156
Astreintes
Toutes les productions ne seront pas forcment la mme enseigne. Certaines sont plus critiques que dautres. Cest particulirement vrai lors des priodes dastreinte. Pendant ces priodes, certains services peuvent par exemple envoyer des alertes par SMS. Il ne faut pas que nimporte quel service puisse lever une telle notification. Un environnement important la journe peut ne pas ltre la nuit.
PSYCHOLOGIE Des priodes complexes grer
Les priodes dastreinte sont dlicates. tre rveill par une alerte non pertinente nest pas des plus agrable. Inversement, ne pas ltre alors que la production est dans un tat critique peut avoir des consquences fcheuses.
Certains serveurs et quipements rseau ont un statut particulier dans la production car ils peuvent lever les alertes les plus importantes. Ces alertes doivent tre dfinies avec deux types de contacts : les administrateurs normaux, et les personnes dastreinte. Ces dernires ont une priode de notification bien prcise pour viter les alertes doubles en journe.
157
La solution est simple : ne faire apparatre en rouge que les environnements de production. La couleur est simplement dfinie dans Nagios comme le retour dun plugin. Cest ltat dun service ou dun nud. Pour la disponibilit des machines, nous avons vu que cette information est importante quelle que soit la machine. Pour les services, ce nest pas le cas. Les alertes critiques sur un environnement de qualification ne sont, au final, quun avertissement. Il suffit dappliquer ce principe. Seule la production doit pouvoir monter au niveau critique. Le niveau maximum des autres environnements est le niveau WARNING. Ces avertissements restent clairement identifiables sur la console de supervision, mais les administrateurs ne shabituent pas voir du rouge sur la console. Cette couleur garde tout son sens : une alerte importante sur la production. Nous verrons un peu plus loin dans le chapitre comment appliquer ce principe sur les plug-ins sans avoir tous les modifier grce aux sur-couches.
PSYCHOLOGIE Le choix des couleurs
Les couleurs correspondant aux alertes sont immuables. Si ladministrateur peut jouer sur la teinte, il est fortement dconseill de changer radicalement une couleur. Par exemple, personne ne comprendrait un indicateur bleu : bien ou mal ?
158
Priodes de supervision
Suivant ce que souhaite obtenir ladministrateur, il doit dfinir lune de deux ces deux variables. La priode de vrification restreint la supervision. Si la priode exclut, par exemple, les heures de sauvegarde, Nagios ne tente pas de vrifier ltat de lapplication pendant ce temps. Sil ne voit rien, il nenvoie pas dalerte. Cette mthode a lavantage de ne rien prsenter aux administrateurs. Que ce soit sur les notifications ou la console, rien ne fait rfrence ltat indisponible de llment. Elle rduit cependant les informations disponibles pour Nagios. Si un problme inhabituel fait surface, labsence de supervision implique quil nest pas dtect. Les administrateurs nont aucun moyen dobtenir les informations par ce biais ultrieurement.
Priodes de notification
La priode de notification permet, quant elle, de poursuivre la vrification des lments, mais de ne pas envoyer de notification sur une certaine priode. Si ladministrateur la dfinit sur la priode de non-disponibilit, Nagios nenvoie pas dalerte inutile aux administrateurs. Cette mthode a pour inconvnient de laisser apparatre dans la console de supervision des erreurs normales . Si, sur cette priode, personne ne la regarde, cela ne pose pas de problme. Les administrateurs nen prennent pas connaissance le matin en lisant leurs messages. Elle permet de continuer superviser les lments. Si un problme anormal se produit, Nagios conserve les informations. Les administrateurs peuvent aller chercher dans les fichiers de journalisation leurs informations. Cette mthode est privilgier si les erreurs dans la console ne sont pas un point bloquant pour les administrateurs.
159
Le cas des services est moins vident. Ce type de tests regroupe en fait deux catgories : les tests de disponibilit dun service ; les recherches dinformations comme la charge CPU.
160
Ltat UNKNOWN est ddi ce genre de cas : linformation nest pas disponible, donc on annonce Nagios un statut inconnu. La plupart des contacts choisissent avec raison de ne pas se faire envoyer de notification sur des alertes UNKNOWN. Sur la console de supervision, les alertes sont signales en gris. Si la perte rseau est longue, le nud passe en DOWN et les personnes sont clairement averties du problme. Exemple Prenons pour exemple la recherche de la charge sur un serveur distant grce NRPE. Une telle information nest pas une information de disponibilit. Nous renvoyons le statut UNKNOWN si NRPE narrive pas rcuprer linformation. Nous utilisons pour cela le paramtre -u de check_nrpe qui permet de changer le comportement normal du plug-in qui est de sortir en tat CRITICAL. Le texte de check_nrpe nest pas modifi, linformation reste claire.
Comportement dune sonde lors dune perte de connexion
check_nrpe -H srv-web1 -c load -u connexion timeout echo $? 3
161
Prenons un peu de recul sur ce problme. Un plug-in est une simple commande lance qui renvoie : un texte explicatif ; des donnes de performance, spares du texte par un caractre | ; un code de retour. Les variations de contexte ne peuvent porter que sur ces trois lments. Pour en modifier ou en supprimer un, le plug-in peut tre lanc par un script qui reoit lensemble des sorties du plug-in. Il effectue ensuite les modifications, puis retourne le rsultat Nagios. Ce script est une sur-couche. Comme les plug-ins retournent tous les mmes trois lments, la sur-couche peut tre utilise pour lensemble des plug-ins de ladministrateur. Il na plus besoin de maintenir une arme de sondes.
Dans la configuration de Nagios, nous dupliquons simplement la dfinition des commandes : une commande normale pour la production ; une commande qui ne peut pas renvoyer dtat CRITICAL, cest--dire la mme ligne, mais prcde de nocritical.sh.
162
Selon leur environnement (production ou non), les services appellent la commande qui leur est ddie.
163
Supprimer la mtrologie
Certains plug-ins renvoient des informations de mtrologie qui ne sont pas utiles aux administrateurs. Si elles sont recueillies, elles sont envoyes loutil de mtrologie. Elles consomment des ressources pour rien. Il est possible de spcifier au niveau du service de ne pas rcuprer ces donnes de performance. Cette configuration doit tre effectue sur tous les services appelant le plug-in. Il serait prfrable que la commande ne retourne tout simplement pas ces donnes. Lutilisation dun script de sur-couche est recommand dans cette situation. Il supprime simplement la partie mtrologie sans toucher au reste. Nous pouvons nommer un tel script nometrol.sh. Il sera de la forme suivante :
nometrol.sh
#!/bin/sh LINE=`$* | cut -d'|' -f1` RET=$? echo "$LINE" exit $RET
164
Le fichier dalerte est /tmp/alerte.txt. Si le fichier est absent, le script, utilis normalement, a le comportement suivant :
Comportement normal de test.sh
test.sh /tmp/alertes.txt CRITICAL the file /tmp/alertes.txt does not exist. echo $? 2
Le texte nest pas modifi, mais les administrateurs ne sont pas avertis. trs pratique pour rgler les situations un peu atypiques.
negate
est
Le fond et la forme
Les alertes ne sont pas, par dfinition, trs joyeuses. Elles apportent de mauvaises nouvelles aux administrateurs. Parfois, elles sont annonciatrices de nuits blanches ou dinterventions en priode dastreinte. Cest pour cette raison que Nagios na pas trs bonne rputation. Cest un oiseau de mauvais augure. Une solution pour amliorer un peu cette situation est dgayer les alertes. Les administrateurs ne sont pas, en rgle gnrale, trs sensibles la forme des messages. Ils se concentrent le plus souvent sur le fond. Le fait que bon nombre dentre eux prfrent la ligne de commande en est la meilleur preuve. La forme peut cependant mettre en avant certaines informations importantes. La svrit et le nom de llment concern doivent tre mis en avant dans les alertes. La
165
forme de celles-ci est importante pour faire ressortir ces informations. Le temps gagn dans la qualification des alertes est trs important lorsquon considre le nombre que lon en reoit dans lanne. Il peut tre mis contribution sur des actions plus intressantes, comme les amliorations darchitectures. Si la forme des alertes est importante, le mdia dinformation lest galement. Suivant les alertes et les administrateurs, on peut choisir de les avertir dune manire particulire. Par exemple, pour les priodes dastreinte, lutilisation de SMS est conseille, voire obligatoire. Nous allons voir que dautres moyens sont la disposition de ladministrateur pour alerter ses camarades de la manire la plus efficace qui soit.
PSYCHOLOGIE Un outil plus attirant
Ces moyens rendent loutil un peu plus attrayant, ce qui peut donner un petit sourire aux administrateurs lorsquils reoivent lalerte. Cest dj un objectif assez intressant lorsquon considre ce public :-)
166
Le WARNING sera ici en orange. Ladministrateur sait que linformation est intressante, mais non critique.
167
rssdir : chemin vers les fichiers rss des contacts ; max : nombre dentres des flux.
Les administrateurs doivent, quant eux, dfinir le chemin suivant dans leur gestionnaire de flux :
Adresse de lecture du flux
http://srv-nagios/nagios/cgi-bin/rss.cgi
Chaque utilisateur doit tre identifi au niveau dApache pour le rpertoire cgi-bin afin dobtenir son flux personnalis. Cette configuration a dj t tudie dans le chapitre prcdent (configuration du fichier htpasswd.users).
Exemple de flux
Voici un exemple de flux gnr, ici limit 2 entres :
Exemple de flux RSS de rss-multiuser
<?xml version="1.0" encoding="UTF-8"?> <rss version="2.0" xmlns:blogChannel="http://backend.userland.com/blogChannelModule"> <channel> <title>Nagios alerts</title> <link>http://srv-nagios</link> <description>Nagios alerts for RSS readers</description> <language>en</language> <item> <title>UP: srv-web1</title> <link>http://srv-nagios/nagios/cgi-bin/ extinfo.cgi?type=1&host=srv-web1</link> <description>Output: TCP OK - 0.041 second response time on port 139 </description> <guid isPermaLink="false">/nagios/srv-web1/1229516001</guid> <pubDate>17 Dec 2008</pubDate> </item>
168
<item> <title>CRITICAL: srv-web2 Fans</title> <link>http://srv-nagios/nagios/cgi-bin/ extinfo.cgi?type=2&host=srv-web2&service=Fans</link> <description>Output: Critical : Fan 1 is Faulted</description> <guid isPermaLink="false">/nagios/srv-web2/Fans/1229514475</guid> <pubDate>17 Dec 20080</pubDate> </item> </channel> </rss>
Les liens des entres pointent vers linterface web de Nagios qui permet dobtenir plus dinformations sur les alertes correspondantes. Ces liens peuvent galement effectuer des actions complmentaires comme relancer une vrification ou la prendre en considration pour les autres contacts.
La liste des tlphones compatibles est disponible sur le site du programme. Lorsquun tlphone est connect, il est disponible travers le fichier /dev/ttyACM0. Laccs au fichier demande lutilisateur nagios dtre dans le groupe dialout. Le programme gnokii est configur dans le fichier /etc/gnokiirc.
169
/etc/gnokiirc
port = /dev/ttyACM0 model = AT connection = serial
Une simple commande permet de tester lenvoi dun message vers un tlphone portable :
Test dun envoi de SMS
echo 'Test avec Gnokii' | gnokii -config /etc/gnokiirc -sendsms +33670809010
Le numro de tlphone doit tre au format international, avec lindicatif +33 pour la France. Dans Nagios, on dfinit les commandes denvoi de SMS comme suit :
Commande denvoi de SMS pour les services
define command{ command_name notify-by-sms command_line echo "$NOTIFICATIONTYPE$ : $HOSTALIAS$ $SERVICEDESC$ is $SERVICESTATE$ - $OUTPUT$" | gnokii config /etc/gnokiirc sendsms $CONTACTPAGER$ }
Ces commandes ne doivent tre associes quaux contacts grant des services et des htes de la plus grande importance. Les priodes de notification doivent tre cales sur celles dastreinte. Les administrateurs ne comprendraient pas de recevoir un SMS en pleine journe alors quils sont devant leur bureau.
PIGE Bien surveiller le tlphone
La mise en place denvoi par SMS avec un tlphone implique de surveiller que ce dernier est toujours allum. Il serait dommage de ne pas recevoir une alerte cause dune batterie vide. Cette surveillance peut se baser sur la prsence du fichier /dev/ttyACM0.
170
171
Le script doit simplement crire dans le fichier /tmp/g15pipe pour que le message apparaisse sur lcran. Nagios crit simplement dans le fichier via SSH (voir figure 6-10).
Envoi dun message sur le clavier
#!/bin/sh ssh pc "echo 'TL \"$NOTIFICATIONTYPE$ :\" \"$HOSTALIAS$/$SERVICEDESC$ is \" \"$SERVICESTATE$ \"' > /tmp/g15pipe "
Figure 610
172
Nous pouvons adapter ce gadget notre supervision. Il vrifie rgulirement si Nagios lui a fourni un texte lire. Ce dernier est tout simplement le message dalerte. Pour les mmes raisons que prcdemment, il ne faut faire passer par ce biais que les alertes rellement critiques. Le bureau pourrait rapidement se transformer en jardin enchant. On envoie le message sur le site du fabricant avec le programme wget. Cest le rle du script suivant, nomm send_nabaztag. Il prend en argument un numro de srie de lappareil et un token. Ces informations sont disponibles pour chaque lapin sur le site du fabricant. Le dernier argument est tout simplement la ligne annoncer.
Script denvoi dun message au lapin : send_nabaztag
#!/usr/bin/perl use URI::URL; $str=URI::URL->new($ARGV[2]); $url='http://api.nabaztag.com/vl/FR/ api.jsp?sn='.$ARGV[0].'&token='.$ARGV[1]."&tts=$str&ttlive=300"; system("/usr/bin/wget -q -O /dev/null '$url'");
Il ne faut pas oublier de changer SERIAL et TOKEN par ceux de lappareil. Il ne reste plus qu lassocier un contact qui accepte de voir ses alertes chantes par un petit gadget.
SCURIT Confidentialit
Il va de soi que les alertes seraient ainsi connues dudit fabricant...
Le lance-roquettes USB
Le lance-roquettes USB est un gadget dont on peine voir lutilit, mais on peut dclencher une salve avec une simple commande. Un administrateur taquin a probablement dj une ide derrire la tte de ce quil peut faire en le couplant avec Nagios. Cela est laiss en exercice. Pour aider un peu, le paquetage de contrle sous GNU/Linux est USBMissileLauncher, et on dclenche le lancement comme suit :
173
Gestionnaires dvnements
Nagios propose un systme de raction sur problme. Ce sont les event handlers (gestionnaires dvnements). Ce sont de simples scripts fournis par les administrateurs que Nagios peut lancer dans les situations suivantes : le problme vient dtre dtect (tat SOFT) ; le problme est confirm et passe en tat HARD ; le systme revient en tat OK ou UP. Ils sont dfinis dans le fichier commands.cfg, comme toutes les commandes. Il existe, pour les htes comme pour les services, deux types devent handlers : les scripts globaux ; les scripts spcifiques.
174
Les premiers sont appels dans le fichier nagios.cfg. Les variables correspondantes sont nommes global_host_event_handler et global_service_event_handler. Ils sont appels pour tous les htes et services. Les dfinitions spcifiques sont associes aux htes et services par le paramtre event_handler. Ils crasent la dfinition globale si elle existe. Le paramtre enable_event_handlers permet de dsactiver cette fonctionnalit.
PRATIQUE Dsactivation des event handlers
Si le paramtre enable_event_handlers prsent dans nagios.cfg a la valeur 0, alors cette fonctionnalit est dsactive, mme si le paramtre a la valeur 1 sur un hte ou sur un service.
Dfinition
Les scripts utilisent en priorit les macros suivantes (ici celles associes aux services) : $SERVICESTATE$ : tat du service ; $SERVICESTATETYPE$ : type dtat (SOFT ou HARD) ; $SERVICEATTEMPT$ : nombre de fois o le test a t lanc depuis le dernier tat OK/ HARD. Prenons lexemple du redmarrage du service web local, dfini comme suit :
Appel dune commande daction
define service{ host_name srv-web2 service_description Http max_check_attempts 3 event_handler restart-local-httpd [...] }
175
Nous souhaiterions que le script ne relance le service que dans le cas dun tat HARD ou un tat SOFT au 2e test, le 3e dbouchant sur ltat HARD. Dans cette situation, le script est appel trois fois :
Appel au premier tat CRITICAL/SOFT (pas daction du script)
restart-httpd CRITICAL SOFT 1
176
Mthode de dtection
Nagios conserve pour chaque lment ses 21 derniers tats. Cela permet davoir potentiellement 20 changements dtats. Pour chaque passage en tat HARD, il calcule le taux de variation des tats. Les valeurs les plus anciennes ont un poids moins important que les rcentes. Ce poids varie entre 0.8 pour les plus vieilles 1.2 pour les plus rcentes. Il ne prend en considration que les tats indiqus par le paramtre flap_detection_options pour les htes : o : UP ;
177
d : DOWN ; u : UNREACHABLE ;
Si le taux est suprieur high_sevice_flap_threshold, Nagios considre que llment se met osciller. Il envoie alors une notification dans ce sens si les valeurs notification_options de llment et des contacts ont la valeur f (flapping). Par la suite, pour savoir si llment est toujours en tat FLAPPING, il compare le taux low_sevice_flap_threshold. Si le taux calcul est plus faible, Nagios considre que ltat de flapping sarrte. Ces deux paramtres sont disponibles au niveau global de Nagios et on peut les dfinir pour chaque hte et chaque service. Il est possible de dsactiver la dtection des oscillations avec le paramtre flap_detection_enabled. Les paramtres dtectant le flapping des htes sont nomms high_host_flap_threshold et low_host_flap_threshold. La valeur par dfaut du taux high est de 50 %, celle du taux low de 25 %.
Exemple de dtection
Prenons pour exemple un service. Sur le diagramme de la figure 6-11, nous notons ses changements dtat. Les tests sont numrots dans lordre chronologique. Le service a chang dtat aux tests 5, 7, 10, 13, 15, 17, 18 et 20. Nous obtenons sans pondration un taux de 8/20=40 %. Nous appliquons ensuite les pondrations indiques en figure 6-12.
178
Nous obtenons, au final, un taux proche de 41 %. Sil est suprieur high_sevice_flap_threshold, le service est dclar en flapping. Sil ltait dj et que le taux est infrieur low_sevice_flap_threshold alors ltat de flapping est supprim.
179
Les administrateurs peuvent spcifier une priode de maintenance sur les lments grce une commande externe. Cette dernire est, pour un hte, SCHEDULE_HOST_DOWNTIME. Elle prend les arguments suivants : host_name : nom de lhte ; start_time : date de dbut de la maintenance, exprime en temps Unix ; end_time : date de fin ; fixed : si sa valeur est 1, la date de fin a la valeur end_time, sinon cette valeur est start_time+duration ; trigger_id : identifiant dune autre priode de maintenance qui peut activer cette priode ; duration : dure de la priode de maintenance en secondes ; author : auteur ; comment : commentaire. Dautres commandes externes existent pour placer un service ou tout un groupe de machines en maintenance. Pour plus de dtails, se rfrer la documentation de Nagios.
En un mot
Un outil de supervision peut tre trs envahissant. Nagios ne fait pas exception. Des mthodes existent afin de diminuer sensiblement le nombre dalertes reues par les administrateurs. Ils peuvent se concentrer pleinement sur celles qui en valent la peine. Lorsquils regardent la console de supervision, ils peuvent en un coup dil savoir si un problme grave est en cours grce un code couleur trs simple. Nagios propose de nombreux moyens pour prvenir les administrateurs. Ceux-ci ne sont pas obligs dtre rivs leurs e-mails.
7
Services particuliers : journaux, alertes SNMP...
Certains services ne peuvent tre surveills comme les autres. La vrification des fichiers de logs (journaux) et les alertes passives en font partie. Nous allons voir comment les traiter au sein de Nagios.
182
Ces messages nont pas tous le mme niveau de criticit. Certains annoncent des problmes futurs. Dautres rvlent des problmes graves qui sont en train de se produire dans lapplication. Sur ce point encore, les administrateurs sont les seuls pouvoir jauger la criticit.
183
En cas de retour positif, le niveau dalerte souhait est lev, le nombre doccurrences du message est indiqu (ci-dessous 13) et la dernire entre est renvoye :
Commande de vrification dun fichier journal Oracle
check_log2.pl -l /oracle/bdump/alert_PROD.log -s ~/alert_PROD.seek -p 'ORA-' -c
Nous obtenons :
Rsultat positif dans la recherche
CRITICAL: (13): ORA-00600: internal error code, arguments: [memory leak], [],[],[],[],[],[],[]
Tests suivants
Les tests qui suivent la dtection dun problme posent un problme dans la logique de supervision. Lorsquun problme est dtect, une erreur est leve. Lorsquon ritre le test, de nouvelles entres sont analyses. Le problme qui nous intresse nest relev quune seule fois. Le nombre maximal de tests avant notification des utilisateurs doit tre de 1. Les alertes sont envoyes et les actions de correction, si elles sont dfinies, sont lances. La phase SOFT de lalerte est vince. On passe directement en HARD.
184
Si cette procdure permet dalerter immdiatement les administrateurs, elle pose la question des tests suivants et de leur traitement : il ny a aucune alerte dans le nouveau texte, le test renvoie OK ; il y a une erreur moins critique que prcdemment, par exemple un WARNING ; il y a une nouvelle erreur critique.
Test en tat OK
Dans le premier cas, le service repasse en type OK / HARD. Lalerte figure sur la console de supervision seulement pendant la dure coule entre deux tests. Si les administrateurs sont absents pendant ce temps, ils ne peuvent se fier quaux notifications. Il est noter que, si le service est configur avec une option notification_options de type r (recovery), une nouvelle notification est mise. Celle-ci annonce que le problme est rgl, alors que ce nest nullement le cas. Cest une nouvelle partie du journal qui a t analyse, mais rien nindique que le problme est bien rsolu. Il ne faut pas configurer de notification recovery sur une analyse de fichiers journaux.
185
Le service passe en tat HARD au moindre problme. Les administrateurs reoivent toutes les erreurs dcouvertes dans le fichier journal. Ils peuvent remonter sans difficult lhistorique des erreurs. Leur rsolution devrait en tre simplifie. Les actions correctrices sont lances correctement pour chaque problme. Les administrateurs ne reoivent pas non plus de notification de type recovery.
186
tant de savoir quun disque est perdu. Une alerte de type recovery prviendra les utilisateurs que tout est revenu la normale. Les administrateurs ont besoin a posteriori de remonter prcisment toutes les tapes de la reconstruction. Ils nont pas besoin dtre alerts de chaque tape. De mme, le lancement des actions correctrices na pas de sens dans cette situation. Lutilisation du paramtre is_volatile nest pas adapt.
Exemple de paramtrage
Reprenons le cas de notre contrleur RAID. Voici une srie de retours du plug-in qui vrifie ltat du contrleur : 1 OK : RAID OK ; 2 WARNING : RAID degraded (1 drive down, 1 spare rebuilding) ;
3 WARNING : RAID degraded (2 drives down,1 spare online, 1 spare
rebuilding)
4 CRITICAL : RAID failed (3 drives down) ; 5 CRITICAL : RAID failed (3 drives down).
Dans le cadre dun service normal, les seuls retours enregistrs sont les tats 2 et 4. Si le service est configur avec le paramtrage suivant, les tats sauvegards sont les tats 2, 3 et 4. Ltat 5 ne lest pas car son texte est identique au prcdent.
Dfinition de loption de stalking
stalking_options w,c
Dans les deux cas, seuls 2 et 4 dclenchent les notifications et les actions correctrices.
187
188
Pour les htes, il faut utiliser PROCESS_HOST_CHECK_RESULT. Les commandes doivent tre excutes sur le serveur Nagios. Nous verrons par la suite comment lavertir depuis des serveurs distants. Les informations ne sont prises en compte que si lhte ou le service correspondant existe bien. Dans le cas contraire, on observe lentre suivante dans le fichier nagios.log :
Lhte / service nexiste pas
[1229979805] Warning: Passive check result was received for service 'Traitement' on host 'NEXISTEPAS', but the service could not be found!
Linformation est simplement oublie car incorrecte. Lors des premires mises en place des vrifications passives, il est conseill de sassurer, dans le fichier journal de Nagios, que tout se passe comme prvu. Les tats reus passivement arrivent dans la file dattente des traitements. Cette file est analyse toutes les check_result_reaper_frequency secondes. Ce paramtre figure dans le fichier de configuration principal de Nagios et vaut par dfaut 5 secondes. Les informations actives et passives sont gres de la mme manire par Nagios. Une fois dans la file dattente, il ny a plus de diffrence entre elles. La mme logique de supervision est applique toutes les informations, que ce soit sur les tats SOFT et HARD ou bien la volatilit. Nous pouvons suivre dans le fichier nagios.log les rceptions passives dtats. Voici un exemple pour le service Backup sur la machine srv-web2, qui est dclar comme tant CRITICAL.
Rception de linformation
[1229979143] EXTERNAL COMMAND: PROCESS_SERVICE_CHECK_RESULT;srvweb2;Backup;2;Backup failed.
189
Puis vient son traitement : ici, une alerte critique sur le service Backup est leve.
Traitement de linformation
[1229979144] SERVICE ALERT: srv-web2;Backup;CRITICAL;HARD;1;Backup failed.
Nous remarquons sur ce dernier exemple que les informations sur le type dtat sont prsentes. Il est en HARD et cest le premier test qui est effectu. Nous souhaitions tre averti ds la premire alerte : le script de supervision nenverra pas dautre alerte.
190
et un
Nous configurons simplement le service pour quil ait comme commande de test actif check_dummy avec un texte stipulant que le traitement nest pas pass temps. Cette vrification ne doit pas tre ordonnance. Le service peut tre vu comme purement passif. Nous positionnons active_checks_enabled 0. La vrification lance cause du manque dinformations est tout de mme effectue, mme avec cette valeur.
Exemple de configuration
Voici un exemple de configuration avec prise en compte de la fracheur dun tat.
Configuration dun service passif avec vrification de la fracheur
define service{ host_name srv-web1 service_description Traitement active_checks_enabled 0 passive_checks_enabled 1 check_freshness 1 freshness_threshold 3720 check_command check_dummy!2!Traitement non lance temps. [...] }
Supposons que le traitement sexcute toutes les heures. Si le traitement ne renvoie pas dtat (que ce soit OK, WARNING ou CRITICAL) au moins toutes les 3720 secondes, la commande check_dummy est lance et place le service en tat CRITICAL (2). Les administrateurs sont alors avertis que le traitement ne sest pas lanc comme il aurait d. Cette vrification est effectue toute les service_freshness_check_interval secondes pour les services et host_freshness_check_interval secondes pour les htes. Par dfaut, elle a lieu toutes les minutes.
191
Dans le fichier journal de Nagios, nous avons la trace suivante, indiquant que ltat du service est arriv premption.
Entre dune information prime
[1229984990] Warning: The results of service 'Traitement' on host 'srvweb1' are stale by 0d 0h 0m 57s (threshold=0d 1h 2m 0s). I'm forcing an immediate check of the service.
192
Nous allons tudier laspect passif de SNMP. Chaque alerte est rfrence sur larbre SNMP en tant quOID (Object Identifier ou identifiant dobjet), comme pour les informations actives. Chaque alerte peut reprsenter un large ventail dinformations, comme le redmarrage dun lment rseau ou une erreur de connexion sur une application. Une alerte (trap) est envoye depuis llment rseau ou lapplication vers un serveur charg de la recevoir. Elle est envoye sous la forme de paquets UDP sur le port 162. Dans le cas de Nagios, cest le serveur de supervision qui accueille ce service de rception. Il se nomme, sous Linux, SNMPTRAPD. Le service SNMPTRAPD est exclusivement ddi la rception de ces alertes envoyes via SNMP. Il les transmet ensuite un autre outil qui les traduit sous une forme un peu plus lisible des fins de traitement. Cet outil de transformation est SNMPTT et utilise pour cela les MIB (Management Information Base ou base dinformations de gestion). Une fois la transformation effectue, linformation est fournie Nagios. cet effet, le script submit_check_result prvient Nagios de ltat dun service. Dans cette mise en place, toutes les alertes SNMP lances depuis un nud arrivent sur le mme service accroch dessus, sans aucune diffrenciation au niveau du service.
PRATIQUE Prfrer Centreon pour une mise en place simple et performante
Nous verrons au chapitre 11 une mthode beaucoup plus souple pour grer ces alertes, qui utilise la couche apporte par Centreon, un outil de configuration. La mthode prsente ici ne doit tre utilise que dans le cas dun Nagios mis en place seul, sans Centreon.
Configuration de SNMPTRAPD
SNMPTRAPD sert uniquement rceptionner les paquets dalertes envoyes via SNMP et les fournir SNMPTT. Nous le paramtrons avec son fichier de configuration, /etc/snmp/snmptrapd.conf. Sa configuration est la suivante :
/etc/snmp/snmptrapd.conf
traphandle default /usr/sbin/snmptt disableAuthorization yes donotlogtraps yes
Elle permet notamment les choses suivantes : dappeler SNMPTT pour toutes les alertes (traps) reues ; de ne pas avoir tenir compte de la communaut SNMP (mot de passe) sous laquelle nous avons reu les traps ;
193
de ne pas avoir tracer les traps reus ; cest SNMPTT qui sen chargera.
Par dfaut, SNMPTRAPD modifie les OID des alertes SNMP quil reoit. Il faut lui indiquer de les laisser au format brut. Pour cela, nous ajoutons le paramtre -On dans sa ligne de dmarrage. Sur un systme RedHat, ceci implique de modifier /etc/rc.d/ init.d/snmptrapd comme ci-dessous :
Pas de modification des OID par SNMPTRAPD
OPTIONS="-On -Lsd -p /var/run/snmptrapd.pid"
Configuration de SNMPTT
Fichier snmptt.ini
SNMPTT
est appel par SNMPTRAPD pour grer les traps reus. Sa configuration est divise en deux parties : une pour son comportement gnral ; une pour la gestion des OID.
[General],
La configuration globale se fait dans le fichier /etc/snmp/snmptt.ini. Dans la partie il faut modifier le paramtre strip_domain_list comme ci-dessous :
Ce paramtre permet de supprimer le nom de domaine des adresses rseau reues afin de les faire concider avec la configuration des nuds dans Nagios. Il faut galement rajouter la ligne suivante :
Utilisation de Net-SNMP
net_snmp_perl_enable = 1
Elle permet de faire appel au module OID. Conversion des fichiers MIB
SNMPTT
net_snmp
appeler
a besoin de savoir quoi faire des alertes quil reoit. Nous allons lui faire submit_check_result, qui permet denvoyer une commande externe
194
Nagios. Nous lui passons comme paramtres le nom du nud metteur, le service TRAP dfini sur les nuds et enfin le niveau WARNING. La commande ci-dessous gnre un fichier snmptt.conf.equipement. Nous utiliserons pour chaque MIB de fabricant un nom plus explicite.
Conversion dune MIB
snmpttconvertmib in=EQUIPEMENT.MIB --out=/etc/snmp/ snmptt.conf.equipement --exec='/usr/local/nagios/libexec/eventhandlers/ submit_check_result $r TRAP 1'
Rajout des fichiers snmptt.conf.equipement dans snmptt.ini Une fois les fichiers snmptt.conf.equipement gnrs, il suffit de les rajouter dans la partie [TrapFiles] de snmptt.ini. Nous obtenons :
Dclaration des nouveaux OID
[TrapFiles] snmptt_conf_files = <<END /etc/snmp/snmptt.conf.equipement1 /etc/snmp/snmptt.conf.equipement2 END
La configuration est automatiquement prise en compte pour les prochaines alertes reues.
195
Le service est dfini comme volatile. Plusieurs traps peuvent arriver sur ce service et, pour chacun deux, les administrateurs doivent tre mis au courant. Lutilisation de check_freshness permet simplement de faire disparatre lerreur de la console de supervision au bout dune heure, grce lutilisation de check_dummy avec comme argument OK.
Son fonctionnement
Le dmon coute le port TCP/5667 sur le serveur Nagios. Il se compose dun simple excutable qui prend moins de 2 Mo en mmoire. Lorsquil reoit un tat, il crit simplement dans le fichier nagios.cmd les renseignements ncessaires pour informer Nagios. Les nuds utilisent un client particulier pour dialoguer avec ce dmon. La communication peut tre chiffre et base sur un mot de passe partag. Il est conseill de
196
definir le mot de passe afin dempcher nimporte qui denvoyer des informations fausses Nagios. Le client se nomme send_nsca et il possde lui aussi un fichier de configuration. Il est disponible pour une large palette de systmes (voir figure 7-1).
SCURIT Utilisateur non privilgi
NSCA na pas besoin davoir des droits levs. Le compte le plus adapt pour le lancer est tout simplement nagios.
Configuration du dmon
Le dmon utilise un fichier de configuration nomm nsca.cfg situ dans /usr/ local/nagios/etc. Il possde les proprits intressantes suivantes : server_port : port TCP que le dmon coute, par dfaut 5667 ; server_address : si spcifie, le dmon coute sur cette IP, sinon il coute sur toutes ; nsca_user : utilisateur faisant fonctionner le dmon, typiquement lutilisateur
nagios ;
nsca_group : groupe de lutilisateur prcdent, typiquement le groupe nagios ; debug : envoi ou non, par le dmon, des informations reues syslog ; command_file : chemin du fichier de commande externe de Nagios ; max_packet_age : ge maximum accept pour les commandes reues, ceci afin
dviter les tentatives de r-mission ; password : mot de passe partag entre le dmon et les clients ;
197
Configuration du client
La configuration du client est trs simple. Elle seffectue dans le fichier send_nsca.cfg, qui ne possde que deux proprits : password : mot de passe partag entre le dmon et le client ; encryption_method : mthode de chiffrement utilise, devant tre la mme que NSCA. Une fois la configuration du dmon en place, celle du client est presque un simple copier-coller.
Il est possible de le lancer travers xinetd. Le client send_nsca prend en argument -H le nom du serveur de supervision et en -c le chemin vers son fichier de configuration. Les informations de supervision lui sont envoyes sur son entre standard. Pour les services, il prend les options dans lordre suivant : host_name : nom du nud auquel est accroch le service ; svc_description : nom du service qui nous intresse ; return_code : code retour de ltat que lon souhaite positionner ; plugin_output : ligne de retour souhaite. Pour les htes, il suffit de ne pas mettre le champ svc_description. Les options doivent tre spars par un dlimiteur que lon fixe grce largument -d. Par dfaut, cest la tabulation qui est utilise.
198
Il est important de noter que lon peut envoyer une information sur le service que lon souhaite. Mme sil nest pas accroch au nud sur lequel on se situe, NSCA ne refusera pas linformation. On peut, depuis lhte srv-web1, envoyer une information pour un service accroch au nud srv-web2.
PIGE La casse est importante
Il est important de respecter la casse utilise lors de la dfinition des htes et des services. Sans cela, Nagios ne peut pas faire la correspondance entre ltat reu et les objets concerns, et il ne prend pas en compte linformation. Une entre figure tout de mme dans son fichier journal pour avertir ladministrateur du problme.
web2.
Voici un exemple denvoi dtat pour un service Traitement accroch au nud srvCette commande est, par exemple, lance depuis srv-web1 :
Le serveur de supervision est ici srv-nagios. Sur ce dernier, si nous avons activ debug=1 dans le fichier nsca.cfg, nous avons dans le fichier de syslog :
Rception de linformation par NSCA
Dec 24 06:04:53 srv-nagios nsca[5641]: Handling the connection... Dec 24 06:04:53 srv-nagios nsca[5641]: SERVICE CHECK -> Host Name: 'srvweb2', Service Description: 'Traitement', Return Code: '0', Output: 'Le traitement et bon.' Dec 24 06:04:53 srv-nagios nsca[5641]: End of connection...
199
Avec un programme comme check_log2.pl, qui ne traite les lignes quune par une, il est impossible de dtecter ce genre de comportement. Si une erreur est remonte ds quun utilisateur se trompe de mot de passe, les botes aux lettres des administrateurs sont submerges en moins dune journe. La configuration de SEC intervient dans des fichiers plats. Leur syntaxe est trs complte. La configuration suivante dtecte des tentatives infructueuses rptes :
sshd-logins.conf
type=PairWithWindow ptype=RegExp pattern=sshd\[\d+\]: \[ID \d+ auth\.error\]\ error: PAM: Authentication failed for (\S+) from \S+ desc=PAM authentication failed for $1 action=event PAM_AUTHENTICATION_FAILED_FOR_$1 ptype2=RegExp pattern2=sshd\[\d+\]: \[ID \d+ auth\.info\]\ Accepted keyboard-interactive/pam for ($1) from \S+ port \d+ ssh2 desc2=PAM authentication successful for $1 action2=none window=30
200
type=SingleWithThreshold ptype=RegExp pattern=PAM_AUTHENTICATION_FAILED_FOR_(\S+) context=!USER_$1_ALREADY_COUNTED && !COUNTING_OFF continue=TakeNext desc=Ten authentication failures for distinct users have been observed action=pipe '%s' mail -s 'PAM alert' root; create COUNTING_OFF 3600 window=600 thresh=10
Nous nexpliquerons pas toutes les possibilits de SEC. Il mriterait un ouvrage lui tout seul. La configuration prcdente comporte trois volets. Le premier dtecte un message de type PAM: Authentication failed for USER from MACHINE. Une fois dtect, le message place en mmoire dans SEC une valeur PAM_AUTHENTICATION_FAILED_FOR_USER, valeur qui est conserve 30 secondes. Au bout de 10 valeurs consignes, un e-mail est envoy ladministrateur et la valeur COUNTING_OFF est enregistre. Cette dernire a une dure de vie dune heure. Pendant ce temps, ladministrateur ne reoit pas de nouveaux e-mails. Pour lancer SEC sur le fichier, une simple commande suffit :
Lancement de SEC
sec.pl conf=sshd-logins.conf input=/var/log/messages
Il est certes pratique de prvenir ladministrateur par e-mail, mais envoyer linformation Nagios lest encore plus. Pour cela, il suffit de remplacer lappel par :
shellcmd /usr/local/nagios/libexec/eventhandlers/submit_check_result SERVEUR LoginAttack 2 "Too many failed connection"
Laction conjointe de SEC et Nagios permet de grer les journaux de manire trs performante. Malheureusement, la configuration de SEC est complexe maintenir car elle est situe sur les machines distantes. Octopussy est un ensemble de programmes Perl que lon peut administrer par une interface web. Celle-ci permet de visualiser les alertes, mais galement de dfinir simplement de nouvelles rgles. Lorsquune entre est dtecte, elle peut faire appel en natif NSCA. Octopussy se base sur les fichiers journaux reus par syslog-ng. Ce dernier, successeur de syslogd, permet dexporter finement les log dun systme vers un serveur distant, ici le serveur Octopussy. Les fichiers lus par syslog-ng sont non
Octopussy
201
seulement ceux grs par syslog, mais galement nimporte quel fichier du systme. Lorsquune modification y a lieu, elle est transfre automatiquement. ne permet pas encore de corrler des vnements. En ce sens, il est moins performant que SEC. Il a pour lui sa facilit dadministration grce son interface web. Son intgration NSCA est native. Il volue rapidement et pourrait devenir sous peu la nouvelle rfrence en matire de gestion des journaux dans le monde de lOpen Source.
Octopussy
ces diffrents modes de fonctionnement sajoutent diffrentes vues utilisateur. Les utilisateurs peuvent avoir connaissance de larchitecture du cluster, ou bien ne voir
202
quun unique point dentre. Ne prsenter quune interface simplifie a bien des avantages. Les clients nont pas besoin de savoir comment la solution est mise en uvre. Les modifications de larchitecture, par exemple lajout dun membre, ne ncessitent pas de modifier la configuration de tous les clients (voir figure 7-3).
Figure 73
Cette prsentation unique dinterface nest malheureusement pas toujours ralisable. Les mthodes de supervision doivent tre adaptes toutes ces situations.
En actif / actif
La supervision des services rels en mode actif / actif est trs simple. Elle se rsume superviser chaque service rel comme un simple client, ce qui implique de pouvoir sadresser directement eux. Ce nest pas leur fonctionnement en cluster qui est intressant ici, mais la capacit voir si une des ressources du cluster est en faute.
En actif / passif
Dans ce mode de fonctionnement, on a une situation normale si le service matre actif est en bon tat de fonctionnement. Le service de secours doit tre inactif. Pour cette vrification, nous utilisons la mme commande que pour la ressource active mais avec negate. Cet excutable, vu au chapitre prcdent, inverse un code retour. Par exemple, si nous vrifions un service web en commande suivante sur le nud actif :
actif / passif,
nous utilisons la
203
En cas de bascule du nud actif vers le nud passif, les administrateurs sont avertis que le nud matre est tomb et que le nud passif a pris le relais. Ce dernier message sera une alerte. Il est possible de ne pas utiliser negate et denvoyer uniquement les notifications de type recovery. Cette solution a malheureusement linconvnient dafficher en continu une erreur sur la console de supervision, ce qui nest pas conseill.
Plug-in check_cluster
Les administrateurs ont besoin dtre avertis de la perte dlments du cluster, mais aussi de la criticit de ces pertes. Si la perte dun lment est inquitante, la perte dautres peut tre plus critique. Le nombre de services encore actifs est une information primordiale. Tester nouveau chaque service est embtant car cette vrification a dj t faite. Cela conduirait dupliquer la configuration ncessaire ainsi que la charge associe. Nagios possde dj ces informations dtat en mmoire. Il suffit de les utiliser pour obtenir un tat global. Le plug-in check_cluster va tre mis profit ici.
204
Ce plug-in permet davoir un indicateur agrg : il faut pour cela lui spcifier les tats des services et ce que les administrateurs considrent comme inquitant ou critique. Il prend en argument -l un intitul du cluster, utilis pour laffichage. Il attend un argument -service ou -host afin de savoir sil a affaire un type de cluster particulier. Les arguments -w et -c reprsentent le nombre dlments en tat autre que OK/UP qui doivent lever respectivement un avertissement ou une situation critique. Enfin, largument -d est une liste de codes dtat, spars par des virgules. Si les premiers arguments sont simples fournir, le dernier lest beaucoup moins.
Macros la demandes
Nous utilisons dans ce cadre la fonctionnalit de macros la demande. Ce type de macro permet dobtenir les informations relatives nimporte quel objet de Nagios, et plus seulement de celui qui est surveill. Leur format est simple. Dans le cas dun service :
Macro la demande pour un service
$NOMMACRO:nomhost:nomservice$
Pour un hte :
Macro la demande pour un nud
$NOMMACRO:nomhost$
Par exemple, pour obtenir ltat du service Http situ sur le nud positionnons la macro $SERVICESTATEID:srv-web1:Http$.
srv-web1,
nous
Elle peut tre appele par une commande sexcutant sur nimporte quel service, quil soit sur srv-web1 ou non. Considrons un cluster de services Http situs sur les serveurs srv-web1, 2, 3 et 4. La perte de 2 services est alarmante. En perdre 3 est critique. Ce cluster est illustr figure 7-4. Le service reprsentant le cluster se nomme ClusterHttp. Nous laccrochons un nud imaginaire, SuperCluster. Ce dernier est simplement un nud vrifi avec la commande check_dummy!0.
205
Figure 74
206
Nous obtenons :
Http Cluster ok: 4 ok, 0 warning, 0 unknown, 0 critical
Si les services Http sont en tat critique sur les serveurs srv-web1 et 2 :
Appel avec deux services en CRITICAL
check_service_cluster!"Http Cluster"!2!3!2,2,0,0
Nous obtenons :
Http Cluster problem: 2 ok, 0 warning, 0 unknown, 2 critical echo $? 1
207
En un mot
Les services ne sont pas tous aussi simples vrifier que louverture dun port. Les services passifs ne sont pas ce quoi les administrateurs pensent immdiatement lorsquon parle de disponibilit des systmes et des applications. Ils forment pourtant une part non ngligeable des sources dinformations. Leur gestion est assure dans Nagios grce de nombreuses options avances.
8
Lhritage de configuration pour les grands environnements
La mise en place et la configuration initiale dune solution de supervision doivent tre le plus simples possible. La gestion de la solution doit galement tre aise et grer au mieux larrive de nouveaux lments superviser, afin que les utilisateurs, dj occups intgrer un nouveau matriel, naient pas subir la lourdeur dun outil cens leur faire gagner du temps.
210
Prenons un premier exemple de deux nuds similaires dfinis par, nous lavons vu au chapitre 3, au minimum 9 arguments et nayant que 3 arguments diffrents (le nom, lalias et ladresse). Leurs tats sont surveills de la mme manire (avec une adresse rseau diffrente bien sr), les mmes personnes sont prvenues aux mmes horaires, etc. Pour ces deux htes, nous configurerions un total de 18 arguments, dont 12 sont communs. En transposant, nous aurions, pour N nuds, une configuration trs imposante (N x 9) avec une majorit de valeurs identiques (N x 6). Si N est grand (20 nuds par exemple), la complexit de la configuration devient beaucoup trop importante et induit une norme perte de temps. Pour peu quun administrateur ait peaufin sa configuration, il risque de passer beaucoup de temps au moindre changement commun tous ses serveurs : il doit modifier chaque configuration de nud, sans compter quil risque den oublier dans lopration. Certes, il pourrait se crer des outils pour automatiser et fiabiliser cette reconfiguration, mais ce nest pas son cur de mtier que de pallier les manques des outils.
PSYCHOLOGIE Les attentes des utilisateurs varient
Il faut faire attention au fait que le ressenti dune solution est trs diffrent suivant que nous nous plaons du point de vue des utilisateurs ou de celui des administrateurs : les utilisateurs veulent principalement des alertes pertinentes et, si possible, peu nombreuses ; pour les administrateurs, la facilit dadministration va primer. Si un outil est difficilement administrable, il est laiss de ct, mme sil est performant.
En matire de programmation, le concept de factorisation est primordial. Il consiste rassembler ce qui peut ltre afin de rduire le nombre de lignes pour que, en cas de changement, on nait besoin de modifier quun seul lment, la modification tant rpercute partout o cet lment est utilis (voir figure 8-1).
Figure 81
Factorisation
211
Ce principe de bon sens quest la factorisation peut sappliquer dans Nagios : nous dfinissons un modle qui possde des valeurs de configuration, mais ne correspond aucun vrai lment supervis. Il peut cependant tre appel par un tel lment qui utilise alors les valeurs que nous avons places dans le modle. Celui-ci ne correspondant rien de rel, il nest pas surveill par Nagios. Il ne sert que de repre de configuration pour ladministrateur. Il nest pas non plus ncessaire dy renseigner toutes les valeurs obligatoires. Nous pouvons utiliser tout ou partie dun modle. Cette facilit de configuration fait partie de lensemble des techniques dhritage que nous expliquerons par la suite.
212
besoin de 11 paramtres au minimum et nous arrivons une configuration de NY11 lignes. Pour les grands environnements, cest tout simplement ingrable en ltat. En effet, il est trs rapide darriver plus de 200 machines ayant chacune une quinzaine de services. Dans un tel cas, nous arrivons plus de 33 000 lignes si nous nutilisons aucune mthode de simplification de configuration. Nous allons voir que Nagios propose des mthodes permettant de rduire de manire drastique cette configuration et de laisser ladministrateur travailler sur des activits valeur ajoute. Ces mthodes sont les techniques dhritage. Nous pouvons voir en figure 8-2 un ordre de grandeur de lvolution de la complexit de la configuration en fonction du nombre dlments configurs lorsquon utilise ou non les techniques de configuration. Ladministrateur a tout intrt les utiliser, et ce mme pour un nombre dlments assez restreint.
213
Factorisation simple
Commenons notre analyse par le rle des modles.
214
Les serveurs sont srv-web1, srv-web2, etc. Ils font appel au modle grce au mot-cl use. Le modle, ntant quune facilit de configuration, ne doit pas tre rellement cr. Il utilise le mot-cl register la valeur 0 pour que Nagios le considre comme un modle. Pour notre exemple nous obtenons :
Mise en place dun modle
define host{ name linux-web-server contacts_group admin-linux,admin-apache [...] register 0 ; dfinit un modle } define host{ use linux-web-server host_name srv-web1 alias srv-web1 address srv-web1.mydomain.com } define host{ use linux-web-server host_name srv-web2 [...] }
Nous pouvons voir que la dclaration des srv-web* est trs courte, bien plus que si lon avait d mettre toutes les valeurs que demandent les nuds. Nous gagnons en maintenabilit : si nous voulons ajouter, par exemple, un groupe de contacts, il suffit de lajouter dans le modle pour quil soit appliqu automatiquement.
215
216
Cascade dhritages
Nagios permet aux administrateurs dutiliser lhritage simple sur plusieurs niveaux.
Arbre dhritage
Nagios permet un modle den utiliser lui-mme. Cela forme un arbre dhritage. Les feuilles sont les lments rels que lon supervise, les niveaux suprieurs les modles. Lhritage est gr de proche en proche, un modle redfinissant un argument gagne par rapport ses pres, tout comme une dfinition dlment gagne par rapport son modle. Ainsi, dans cette cascade de modles, chacun apporte une spcification dans les proprits. Les lments les plus gnriques se retrouvent en haut et les lments les plus spcialiss, cest--dire les lments rels, en bas (voir figure 8-4). Ladministrateur de Nagios peut dfinir un arbre permettant de ne pas dupliquer dinformation. Pour raliser cela, on regroupe dans des modles les valeurs les plus courantes et on construit un arbre. On peut, par exemple, dfinir sur les serveurs de production une priode de vrification de 24h/24 7j/7 et un groupe de contact admin-prod.
217
Figure 84
Il faut faire tout particulirement attention ce que la complexit de la configuration ne soit pas transforme en complexit dhritage. Il faut rester raisonnable dans le nombre de modles que lon dfinit.
PRATIQUE Impact de lutilisation de modles
Nous pouvons considrer cette mthode comme lune des plus efficaces pour rduire la taille de la configuration et amliorer sa maintenabilit. On peut esprer diviser par un facteur 5 le nombre de lignes de configuration de nuds ou de services, car en plus des paramtres obligatoires, il ne faut pas oublier lexistence des paramtres optionnels. Cest sans hsiter la premire mthode mettre en place sur sa configuration.
218
Hritages multiples
Nous avons vu les hritages simples. tudions-en les limites et ce que les hritages multiples peuvent y apporter.
219
Le modle web-server a t factoris par rapport la situation prcdente. Il peut tre rutilis en cas de mise en place dun nouveau systme dexploitation. De mme, les modles linux-server et windows-server sont dsormais indpendants de lapplication web. Nous avons dcorrl les rles de machines. Il est ainsi plus simple didentifier et de sparer les proprits en modles.
220
Exemple de dfinition
Si nous reprenons lexemple de nos serveurs web, nous obtenons :
Exemple dhritage multiple
define host{ use generic-server name linux-server check_command check_tcp!22 register 0 } define host{ use generic-server name windows-server check_command check_tcp!339 register 0 } define host{ name web-server contacts_group admin-apache register0 } define host{ use linux-server,web-server host_name srv-web1 alias srv-web1 address srv-web1.mydomain.com } define host{ use windows-server,web-server host_name srv-web2 [...] }
221
222
Exemple dhritage
define host{ name generic-server contacts_group admin-default register 0 } define host{ use generic-server name linux-server check_command check_tcp!22 register 0 } define host{ name web-server contacts_group admin-apache register 0 } define host{ use linux-server,web-server host_name srv-web1 alias srv-web1 address srv-web1.mydomain.com }
Dans cette configuration, la valeur contacts_group de linux-server est admincar il hrite de generic-server, alors que celle de web-server est adminapache. Le nud srv-web1 utilise linux-server en premier et ne dfinit pas de valeur pour ses groupes de contacts, il utilise donc ceux de linux-server. Sa dfinition est donc quivalente :
default
apache,
Si nous souhaitons que le nud srv-web1 ait comme groupe de contact il faut le dclarer comme ceci :
admin-
223
Lordre de dfinition des modles est trs important. Il faut les dfinir convenablement afin dobtenir ce que nous souhaitons. Dans la mesure du possible, il faut viter de croiser des dfinitions en hritage multiple afin de simplifier la configuration.
Groupes de machines
Dans la plupart des cas, nous allons dfinir plus de services que de nuds. Les htes sont la base de la configuration de Nagios, les services y tant associs. Il faut dclarer chaque nud. Cependant, les services sont associs des nuds similaires. Nous avons dj utilis cette proprit pour diminuer la taille de la dclaration des nuds. Nous allons encore lutiliser pour diminuer cette fois le nombre de services configurer. Si on applique de plus les mthodes dhritage par modles sur ces dclarations, elles ne seront plus un souci.
224
Une premire solution la configuration des services consiste appliquer la mthode vue au chapitre 5 : on dfinit chaque service pour chaque nud. Une telle configuration est lourde. Par exemple, pour 100 serveurs avec chacun 10 services, cela fait 1 000 dfinitions. Mme avec des modles 3 lignes par service, cela fait tout de mme 3 000 lignes de configuration Il est probable qu des nuds similaires correspondent des services identiques. Nous pouvons regrouper les nuds ayant des services en commun dans des groupes dhtes. Cette mise en commun permet de diminuer sensiblement le nombre de dclarations de services faire. La dfinition des groupes de nuds est contenue dans un objet hostgroup. Il contient un nom indiqu dans la proprit hostgroup_name (ayant un alias tout comme les htes) et une liste de membres groups dans la proprit members. En voici un exemple :
Dfinition dun groupe de machines
define hostgroup{ hostgroup_name Web-Servers alias Web-Servers members srv-web1,srv-web2,srv-web3 }
225
Nous obtenons un effet de factorisation. Lorsquon ajoute un nouveau service, il suffit de lappliquer sur le groupe, sans avoir le redfinir autant de fois quil y a de nuds. De plus, si un nouveau serveur arrive, il suffit de lajouter dans le groupe de machines pour quil hrite automatiquement de tous les services attachs au groupe. Attention cependant : la mme dfinition de service sapplique sur lensemble des machines du groupe. Les arguments de la commande de vrification sont les mmes. Bien sr, lors du lancement des commandes, les macros sont toujours dfinies et uniques chaque membre du groupe afin de pouvoir surveiller le bon lment.
Dfinition et exemple
Cette dfinition a lieu simplement dans le service : il suffit dutiliser la proprit host_groups pour lappliquer sur le ou les groupes que nous souhaitons. En reprenant lexemple de notre service Http sur les serveurs web, nous obtenons :
Application dun service sur un groupe dhtes
define service{ use generic-service host_groups Web-Servers contacts_groups linux-admin, apache-admin service_description Http check_command check_tcp!80 }
Le service Http est ici cr sur lensemble des machines dfinies dans le groupe Webservers. Cela est quivalent :
226
Dfinition quivalente
define service{ use generic-service host srv-web1 contacts_groups linux-admin, apache-admin service_description Http check_command check_tcp!80 } define service{ use generic-service host srv-web2 contacts_groups linux-admin, apache-admin service_description Http check_command check_tcp!80 } []
227
propre service, dautant plus si ce groupe se voit galement associer dautres services comme la vrification des disques de donnes ou bien la mmoire disponible. En cas dexclusion de lhte du groupe, il faudrait galement copier ces services.
PIGE Nagios 3.1 : un correctif est ncessaire
La fonctionnalit prsente ci-dessous nest possible quavec un correctif propos par lauteur. Le correctif est tout juste inclus et devrait tre disponible dans Nagios 3.2. Les versions de Nagios jusqu la 3.1, incluse ne disposent pas de cette fonctionnalit, sauf si le correctif est appliqu.
Dfinition dune exception par Nagios Heureusement, Nagios permet de redfinir sur un hte particulier un service dfini sur un groupe dhtes avec le mme nom. La dfinition sur lhte simple prend systmatiquement le pas sur celle des groupes dhtes.
PIGE Sans correctif le comportement est tout autre
Sans lapplication du correctif, les dfinitions des groupes sont systmatiquement prioritaires par rapport celles des htes simples.
Exemple dexception Par exemple, reprenons notre service Http. Imaginons que le service sur srv-web1 ait besoin dalerter, en plus des groupes linux-admin et apache-admin, le groupe adminexperts. La dfinition suivante est valide :
Application dun service sur un groupe dhtes
define service{ use generic-service host_groups Web-Servers contacts_groups linux-admin, apache-admin service_description Http check_command check_tcp!80 } define service{ use generic-service host srv-web1 contacts_groups linux-admin, apache-admin, admin-experts service_description Http check_command check_tcp!80 }
228
Le service
apache-admin
sur srv-web1 notifie dans ce cas tous les groupes linux-admin, et expert-admin. La dfinition du service sur srv-web2 et sur le reste des serveurs dans Web-Servers nest pas modifie.
Http
Nous verrons par la suite, que dautres mthodes existent pour ajouter une exception sur un service. Celle-ci a le mrite dtre simple et de ne pas ncessiter de modifier la dfinition du service sur les groupes de nuds. Nous remarquons cependant quelle implique une duplication dinformations, cest ce que permettent dviter les mthodes que nous allons voir par la suite.
229
pour chaque priode de temps utilise. Cela implique un nombre important de groupes dfinir et maintenir. La tche se complique encore lors de la cration de services particuliers. Si nous changeons la commande lance ou ses paramtres, il faut modifier lensemble des services. Nous perdons encore en maintenabilit car nous dupliquons les informations. Nous pouvons diminuer cet impact en dfinissant des modles de services, mais ce nest quun faible palliatif.
Raction de Nagios
Partant de ce constat, si Nagios na pas linformation pour le service dans sa configuration, il rcupre les valeurs du nud. Nous hritons de ces valeurs pour les services. Cest un hritage entre diffrents types que lon nomme hritage implicite. La mthode consiste identifier les arguments que lon souhaite hriter du nud et ne pas les remplir sur le service associ un groupe. Le simple changement de la configuration du nud le rpercutera automatiquement sur le service (voir figure 8-8).
230
Nous dfinissons le service Http sur le groupe Web-Servers en utilisant lhritage implicite : nous ne dfinissons pas de valeur pour contacts_group :
Dfinition du service avec hritage implicite
define service{ use generic-service
231
Nous supposons ici que generic-service na pas de valeur contacts_group dfinie, sinon le service Http en hrite. Ici, nous obtenons une dfinition quivalente :
Dfinition quivalente des services
define service{ use generic-service service_description Http host srv-web3 contacts_group admin-apache check_command check_tcp!80 } define service{ use generic-service service_description Http host srv-web4 contacts_group admin-apache,admin-experts check_command check_tcp!80 }
Si nous modifions les contacts des htes, linformation est reporte automatiquement sur les services.
PRATIQUE Quand faut-il utiliser cette mthode ?
Dans le cas de services appliquer sur un groupe de nuds, si linformation qui pose problme est prsente dans la configuration de ces derniers, cest cette mthode quil faut utiliser. Nous pouvons esprer diminuer le nombre de groupes et de services de moiti avec cette mthode.
232
_ .
Ces macros sont utilises dans une commande appele par un service commun aux diffrents nuds. Lors du lancement de la commande, Nagios substitue la valeur par celle qui a t dfinie par lutilisateur sur le nud. Nous navons plus besoin de dupliquer le service.
Exemple dutilisation
Prenons pour exemple un service qui fait une interrogation SNMP. Ici, pour simplifier, nous ne faisons pas figurer les informations communes aux vrifications. Nous nous concentrons sur une valeur qui diffre suivant les nuds : la communaut SNMP.
Dfinition des macros variables
define host{ host_name srv-web3 _SNMPCOMMUNITY public }
233
La commande check_snmp est diffrente lorsquelle est utilise pour le service Snmp sur le nud srv-web3 et sur srv-web4. En effet, la variable $_HOSTSNMPCOMMUNITY$ change de valeur. Nous obtenons : pour srv-web3 : /usr/local/nagios/libexec/check_snmp -H srv-web3 -c public ; pour srv-web4 : /usr/local/nagios/libexec/check_snmp -H srv-web4 -c secret.
PRATIQUE Quand faut-il utiliser cette mthode ?
Cette mthode est utilise dans les mmes cas que lhritage implicite : si linformation diffrente entre les services est spcifique aux nuds, cette mthode est applicable.
234
Nous souhaitons ajouter le groupe admin-experts sur cette machine. Nous avons prcdemment fait cela en dfinissant srv-web4 de cette manire :
Ajout dun groupe dadministrateurs par recopie complte
define host{ use linux-web-server host_name srv-web4 contacts_group admin-linux,admin-apache,admin-experts }
Nous avons dupliqu les valeurs admin-linux et admin-apache. Si nous modifions contacts_group dans le modle linux-web-server, il faut modifier le serveur srv-web4. Nagios permet de rsoudre ce problme grce lhritage additif : on ajoute la valeur quon souhaite une valeur quon hrite. Pour cela, on prfixe tout simplement les valeurs quon ajoute dun signe +. Ce nest valable que pour les paramtres de type chane de caractres.
experts
Utilisons lhritage additif sur lexemple prcdent. Nous ajoutons le groupe adminau lieu dcraser la valeur hrite. Nous dfinissons srv-web4 de cette faon :
Ajout dun groupe dadministrateurs par hritage additif
define host{ use linux-web-server host_name srv-web4 contacts_group +admin-experts }
235
Nous obtenons la mme dfinition que prcdemment, sans duplication et en amliorant la maintenabilit. Ce mcanisme permet de dfinir simplement de nouvelles valeurs par rapport celles hrites. Il peut tre trs appropri pour ajouter, par exemple, un ou plusieurs contacts particuliers sur une machine. Ladministrateur Nagios a ainsi le choix, lors de lutilisation des modles, entre utiliser les valeurs hrites en ne redfinissant pas de valeur, lui ajouter des lments grce au signe + ou bien craser compltement les valeurs sans ce caractre.
236
Nous pouvons ainsi utiliser sans crainte lhritage additif, mme sur un champ ayant t hrit de manire implicite.
237
238
En un mot
La gestion de la configuration peut devenir un vritable calvaire lorsque le nombre dlments augmente. Si ladministrateur ne fait rien, il ne peut pas grer correctement la situation au-del dune cinquantaine de machines. Nagios propose heureusement une panoplie trs toffe de mthodes pour diminuer sensiblement cette configuration. Elles sont regroupes sous le terme de techniques dhritage. Ladministrateur peut diminuer le nombre de lignes de configuration sans pour autant perdre de vue les exceptions qui ne manqueront dapparatre.
9
Pousser Nagios dans ses derniers retranchements
Sil est bien une question qui revient systmatiquement lors de ltude de Nagios, cest celle des performances. Quel serveur faut-il pour surveiller son parc ?
240
La supervision rencontre principalement des problmes de temps de calcul pour ordonnancer les tests. Si le serveur nest pas capable de suivre, les tests sont lancs en retard. Sil ne peut pas rattraper ce retard, lcart se creuse. Les tests sont de plus en plus dcals et ne se font pas aussi rapidement que le souhaitait ladministrateur. Un serveur qui dispose de ressources suffisantes lance les tests en temps et en heure. Les principaux problmes de la mtrologie concernent, quant eux, les disques. Les informations devant tre conserves sur une longue dure, lespace est une ressource critique. Si le volume ncessaire est plutt simple estimer, limpact des disques sur le traitement des donnes est plus complexe suivre et prvoir. Une mtrologie mal taille peut rapidement ralentir la supervision, avec toutes les consquences que nous venons dvoquer.
Un ordonnancement coupable
La supervision est en charge de lancer des tests rguliers. Les lments surveills sont varis. La supervision de la charge CPU est diffrente de celle des espaces disques. Lobtention des informations ne seffectue pas de la mme manire et suivant un ordonnancement diffrent. La charge varie trs rapidement. Un serveur qui ne fait pas grand chose 8h50 peut tre sous leau 9 h. La probabilit est bien moins leve de voir un disque ayant encore 100 Go despace libre se remplir en moins de 5 minutes. Le risque de problme nest pas le mme dans le temps. Les vrifications de charge doivent tre trs proches. Celles portant sur lespace disque peuvent tre bien plus espaces. Si ordonnancer les tests de manire trop rapproche nest pas problmatique pour les informations reues, a lest pour la charge de supervision. Lancer le test a un cot. La charge dun test pris unitairement est trs faible ; celle de plusieurs milliers, beaucoup moins. Prenons un exemple. Pour 1000 htes, nous vrifions la charge CPU et lespace disque. Les tests sont lancs toutes les minutes. Supposons quun test prend 50 ms. Si les tests ne sont pas lancs en mme temps, ceci demande 2000 0,050 secondes = 100 secondes, soit plus dune minute. Lordonnancement ne peut suivre ce rythme. Si nous effectuons le test sur les disques une fois par heure, nous avons en moyenne 1000 / 60 = 17 tests la minute. 50 ms par test, cela reprsente moins dune seconde de tests conscutifs. Ajouts aux 50 secondes ncessaires aux tests de la charge, nous arrivons une situation o nous avons le temps deffectuer les tests dans une minute.
241
Cette situation est volontairement exagre. Les tests de charge la minute ne sont pas une bonne ide et, heureusement, les tests peuvent se faire de manire paralllise. Elle illustre cependant que bien ordonnancer les tests est un exercice complexe. Pour raliser cela, sadapter aux variations des indicateurs est primordial. Que les indicateurs varient rapidement ou lentement, les tests doivent suivre le rythme. Ceci permet de diminuer la charge de supervision en supprimant les informations inutiles qui peuvent ralentir la surveillance dautres lments.
242
Le phnomne de latence
243
Il exporte un nombre important de donnes. Les plus importantes sont les suivantes : Services Checked : nombre total de services configurs ; Services Scheduled : nombre de services devant tre surveills de manire active ; Services Actively Checked : nombre de services ayant t surveills depuis le lancement de Nagios ; Services Passively Checked : nombre de services surveills de manire passive ; Total Service State Change : taux de variations minimal, maximal et moyen des tats de services, en pourcentages ; Active Service Latency : valeurs minimale, maximale et moyenne de la latence de lancement des vrifications ; Active Service Execution Time : valeurs minimale, maximale et moyenne du temps dexcution des sondes ; Active Service Checks Last 1/5/15 min scheduled : nombre de vrifications de services lances sur les priodes indiques ; Active Service Checks Last 1/5/15 min cached : nombre de tests de vrification vits car pris dans le cache (ce mcanisme sera tudi un peu plus loin) ; External Commands Last 1/5/15 min : nombre de commandes externes reues sur les dures indiques ; Used/High/Total Command Buffers : nombre de slots utiliss actuellement, au maximum et au total, pour les commandes externes. Les donnes pour les services sont galement disponibles pour les htes. Linformation tudie dans cette partie est la latence des vrifications des services actifs.
244
La latence moyenne des vrifications actives est de 0.619 seconde. Cela signifie que les tests de vrification sont lancs moins dune seconde aprs lhoraire prvu.
Supervision de la latence
Une valeur de latence infrieure la seconde est tout fait acceptable. Elle peut crotre trs fortement si nous augmentons le nombre de vrifications actives, comme nous allons le voir par la suite. Si les administrateurs ont le rflexe de vrifier, lors de la premire mise en place de Nagios, quelle latence ils ont affaire, peu pensent suivre cette valeur sur le long terme. Il est pourtant important de superviser cette valeur et il existe un moyen simple pour cela. Il suffit de crer un script qui vrifie la latence et avertit lorsquelle est trop importante. Si ce script renvoie des donnes de performances, ladministrateur peut suivre cette volution au fil des mois et voir simplement si le serveur de supervision est encore capable de suivre la cadence. Voici un script simple charg de cette vrification :
check_latency.pl
#!/usr/bin/perl $latency=`/usr/local/nagios/bin/nagiostats | grep "Active Service Latency"|cut -f3 -d'/' | awk '{print $1}' | tr -d '\n'`; if($latency > 5){ print "Latency is too high $latency | latency=$latency"; exit(1); }else{ print "Latency is ok $latency | latency=$latency"; exit(0); }
Le service auquel cette commande est accroche ne doit pas sonner lalarme la premire alerte. La latence peut augmenter temporairement, par exemple lors des sauve-
245
gardes du serveur de supervision. Une deux heures de latence leve reprsentent en revanche un dlai correct pour alerter les administrateurs.
Configuration ncessaire
La commande lance est simple :
Dfinition de la commande check_ping
define command{ command_name check_ping command_line $USER1$/check_ping -H 127.0.0.1 -w 3000.0,80% -c 5000.0,100% -p 1 }
246
Lhte configur se nomme srv-1 et il est attach la machine locale. Son unique rle est de servir de point dancrage aux services. Le fait quil ny ait quun seul hte na pas dimpact sur les performances tant quil est en tat UP.
Dfinition de lunique hte
define host{ use linux-server host_name srv-1 alias srv-1 address localhost }
Les services ont comme nom service-n et lancent la commande check_ping. Ils sont ordonnancs toutes les 5 minutes. Leur retour est toujours OK. Leur nombre est notre variable lors des tests. Par exemple, la dfinition du service-3 est gale :
Exemple de dfinition dun service
define service{ use generic-service host_name srv-1 service_description service-3 normal_check_interval 5 check_command check_ping }
La valeur suivie est la latence dexcution des services. Pour la rcuprer, nous utilisons le script prsent prcdemment.
247
Les intervalles de vrification des lments en tat non OK ou UP sont plus courts que les intervalles normaux. Des notifications sont envoyes de temps en temps. Des vrifications supplmentaires sont effectues pour la gestion des dpendances. Tout ceci augmente la charge de Nagios. Une marge de 20% entre nos tests et une situation relle est raisonnable.
La latence reste faible. Cette machine est pleinement capable de grer le lancement de 100 commandes en 5 minutes. Lanons prsent la mesure avec 1000 services (voir figure 9-3) : Nous remarquons que la valeur de latence est similaire au cas prcdent, comportant 100 services. Les situations de bon fonctionnement de Nagios sont caractrises par une latence qui reste faible aux cours du temps.
248
Regardons ce qui se passe avec 10 fois plus de services (voir figure 9-4).
249
Dans ce cas, la situation est tout autre. La latence augmente de manire importante pendant les 20 premires minutes, puis se stabilise sur un plancher. Traons cette dernire valeur suivant le nombre de services.
Une valeur acceptable pour la latence est de quelques secondes. On observe un phnomne de seuil. Lorsque Nagios a suffisamment de ressources pour effectuer ses tests, la latence est faible. Lorsquil commence en manquer, la situation se dgrade trs rapidement. Nous pouvons considrer quavec cette configuration, la machine peut supporter environ 9500 services toutes les 5 minutes. Nous verrons par la suite que nous pouvons fortement amliorer cette valeur. Les administrateurs peuvent reproduire ce test afin dvaluer la charge acceptable pour leur serveur. En sachant combien de tests peuvent tre lancs toutes les 5 minutes, ils peuvent configurer leur ordonnancement de faon adapte.
250
taille maximale du tampon dfinie par la valeur external_command_buffer_slots de nagios.cfg. Nagios consomme les lments toutes les command_check_interval secondes. Il est fortement conseill de laisser la valeur -1 : elle signifie quil consomme les lments disponibles ds que possible. La valeur du remplissage actuel, ainsi que la valeur maximale atteinte, sont galement disponibles. Voici un exemple de valeurs :
Used/High/Total Command Buffers: 5 / 100 / 4096
Dans cette situation, lutilisation maximale du tampon de commandes passives est de commandes en attentes. Cette valeur tant loin de la limite des 4096 que compte le tampon, ladministrateur na pas de souci se faire. Dans le cas dune valeur trop proche de la limite, voire gale, il est important daugmenter la taille du tampon sous peine de perdre des informations.
100
Tout comme pour la latence, si ladministrateur a une forte utilisation des commandes externes, notamment par supervision passive, il est important de garder un il sur cette valeur.
REMARQUE Un cas rarissime
Les cas dutilisation de Nagios qui occasionnent un remplissage des 4096 commandes externes sont trs rares. Dans la plupart des installations, cette valeur est bien suffisante.
251
252
Si, par exemple, nous doublons le dlai de vrification sur la moiti des serveurs, la charge de Nagios est diminue de 25%. On peut alors revenir sous la limite du nombre de vrifications lances et retrouver une latence acceptable. Dans ce genre de situation, il est bon de vrifier que les recommandations fournies au dbut du chapitre ont bien t appliques. Chaque information doit tre surveille son rythme. Les gains peuvent tre rapides et demandent peu de temps. Si cest dj le cas, il est alors ncessaire damliorer le fonctionnement de Nagios. Pour cela, nous allons tudier diffrentes pistes.
253
Ladministrateur a tout intrt suivre ces conseils. Une bonne solution est de laisser Nagios grer seul le nombre de tests quil va effectuer en parallle. Pour cela, le paramtre max_concurrent_checks doit valoir 0.
Un impact fort
Que ce soit pour obtenir une information directement, ou bien pour interroger des agents, il faut un certain temps dexcution. Suivant les sondes et leur programmation, elles vont consommer des ressources qui peuvent tre du temps CPU, des entres / sorties disques ou rseau. Pris unitairement, le lancement de ces sondes passe bien souvent inaperu. La plupart sexcutent en quelques millisecondes. Ladministrateur demande Nagios dordonnancer un grand nombre de ces tests. Si le serveur ne peut pas suivre le rythme, la latence augmente et les administrateurs ne sont plus avertis assez rapidement. Les limites du serveur sexpriment en nombre de tests lancs par minute. Suivant les sondes utilises, cette limite peut fortement varier. Nous allons tudier les divers types de sondes, leur impact sur les performances et lincidence qua une meilleure intgration Nagios.
254
Et en C ensuite :
check_test.c
#include <stdio.h> main(){ FILE *fp = fopen("./test.txt","r"); if( fp ) { printf("Le fichier existe\n"); fclose(fp); return(0); } else { printf("Le fichier n'existe pas\n"); return(2); } }
Si nous lanons 10 000 fois ces deux tests nous obtenons un temps total dexcution de 30 s pour le test en shell et 8 s pour celui en C. Ils effectuent pourtant la mme vrification. Sur un grand nombre de vrifications, limpact du type de sonde est lev. Dautres langages de scripts offrent un large ventail de fonctions pour viter de faire appel des excutables extrieurs tels que cat ou grep. Des langages comme Perl ou Python, qui offrent de telles bibliothques de fonctions, sont privilgier face au shell lorsque les performances viennent manquer. Ils peuvent galement tre utiles dans le cas o les tests sont complexes raliser avec les commandes standard Unix.
DOCUMENTATION Un ouvrage de rfrence sur Python
Ceux souhaitant apprendre le langage Python peuvent se tourner vers le livre sur Python de Tarek Ziad aux ditions Eyrolles. Les administrateurs pourront mme grce lui prendre got la programmation. R Tarek Ziad, Programmation Python, syntaxe, conception et optimisation, Eyrolles, 2e dition 2009
255
Les scripts sont en rgle gnrale plus simple crire que du code en C. Leur maintenance en est facilite. Davantage de dveloppeurs sont capables de crer des scripts que des binaires. Ceci peut avoir un impact important car, dans le monde des administrateurs, peu sont galement dveloppeurs. Changer un script sera plus simple que modifier et recompiler un fichier .c.
Un interprteur intgr
Ce langage a le soutien des administrateurs. Il existe un grand nombre de bibliothques pour effectuer les tches dadministrations courantes. tant un langage de scripts, il est interprt par le binaire perl. Cette interprtation a un cot non ngligeable en termes de temps CPU. Laction demande, avant mme son excution, mobilise une partie des ressources CPU. Si laction est rpte un nombre important de fois, la consommation est importante. Si Nagios fait appel au script directement, celui-ci sera compil par Perl chaque demande. Ceci a un impact important sur les performances. Nagios propose un interprteur Perl interne dot dun cache, nomm ePN (pour embedded Perl Nagios). Au premier ordonnancement du script Perl, Nagios le compile en bytecode. Ce dernier est plac dans un cache. Nagios peut ensuite lexcuter sans avoir passer par le binaire perl. Lorsque le script est demand nouveau, la phase de compilation nest plus ncessaire car le code est dj en cache. La phase dexcution peut directement se lancer. Lexcution tant lance par le processus Nagios, cest une excution de processus que lon spargne. Ce gain est important et apprciable lorsque le serveur est charg. Le fait de mettre en cache le code excuter prsente un inconvnient : si le script est modifi aprs avoir t compil par Nagios, les modifications ne sont pas prises en compte. Il est alors ncessaire de relancer Nagios pour quil compile nouveau le script.
ePN nest par limit aux lancements de vrifications. Il est galement utilis pour toutes les autres commandes que lance Nagios. Les notifications et les commandes de rsolution peuvent en tirer partie.
256
Ils ont comme pre un processus nagios, lui mme issu du processus matre. Lorsque linterprteur intgr est utilis, ces processus /usr/bin/perl disparaissent. Ce sont les processus nagios qui effectuent la commande, sans avoir appeler le binaire / usr/bin/perl. Regardons la limite des tests lancs avec et sans utilisation de linterprteur intgr. Il est noter que les options de performances avances, analyses plus loin dans ce chapitre, sont galement appliques.
Lintrt de linterprteur intgr est trs lev pour les administrateurs faisant appel beaucoup de scripts Perl. On observe un gain de 30%.
257
Pour activer cette fonctionnalit, loption enable_embedded_perl du fichier nagios.cfg doit tre positionne 1. Nagios doit galement tre compil avec cet interprteur, mais cest gnralement le cas.
PERFORMANCES Le cache Perl est important
la compilation de Nagios, on peut lui demander de ne pas utiliser de cache pour les plug-ins Perl. Cette configuration est dconseiller trs fortement. Nagios devant recompiler le script chaque lancement, les performances seront moins bonnes que si le plug-in est appel travers le binaire perl.
Tous les scripts Perl ne peuvent tre utiliss de cette manire. Par exemple, les morceaux de codes <DATA> ou BEGIN ne peuvent tre utiliss par linterprteur interne. Dans ce cas, cest le binaire perl qui prend le relais, mais ladministrateur perd alors le bnfice des performances.
suffit pour le compiler. Une fois lanc, il demande la ligne de commande lancer. Il se comporte alors comme le module ePN de Nagios. Avec le script check_mem.pl, nous obtenons :
Test dune sonde avec new_mini_epn
new_mini_epn plugin command line: /usr/local/nagios/libexec/check_mem.pl -w 90 -c 95 embedded perl compiled plugin /usr/local/nagios/libexec/check_mem.pl with error: Can't locate utils.pm in @INC (@INC contains: /home/nagios/ nagios-3.0.5/contrib
Une erreur de compilation sest produite. Le script check_mem.pl fait appel au fichier module Perl utils.pm. Ce dernier nest pas disponible dans le rpertoire courant de new_mini_epn, il ne peut donc pas lutiliser. Si nous copions ce fichier (disponible dans /usr/local/nagios/libexec) dans contrib et que nous relanons notre test, nous obtenons :
258
Lancement russi
plugin command line: /usr/local/nagios/libexec/check_mem.pl -w 90 -c 95 embedded perl plugin return code and output was: 0 & OK: 29% Used Memory | MemUsed=29%;90;95
Ladministrateur a tout intrt tester ses scripts avec cet excutable afin de vrifier leur fonctionnement dans ePN. Si un script nest pas correct et sil nest pas possible de le corriger, il est important de spcifier Nagios de ne pas utiliser linterprteur interne. Cest ce que nous allons voir de suite.
Nagios propose par ailleurs loption use_embedded_perl_implicitly dans son fichier nagios.cfg, grce laquelle les administrateurs peuvent prciser sil doivent ou non activer automatiquement linterprteur pour tous les scripts Perl. Dans le cas o linterprteur est dsactiv automatiquement, ladministrateur peut utiliser la ligne suivante pour demander Nagios de compiler le script en interne :
Activation de lePN pour ce script
# nagios: +epn
259
NRPE ou SSH
Au chapitre 4, il est fait mention du protocole SSH comme remplaant possibles de NRPE. Si les deux offrent un chiffrement fort pour effectuer des commandes distance, leur impact en termes de performances nest pas identique. SSH consomme en effet presque trois fois plus de ressources CPU que NRPE. Ceci est d principalement une phase dauthentification par cls qui nest pas prsente dans NRPE. Cette phase permet dauthentifier formellement un serveur distant avec SSH. NRPE se base quant lui sur les adresses IP. Sur le serveur test, on obtient pour les tests NRPE une limite de presque 30000 pour 5 minutes (avec les options de performances dcrites plus loin), contre seulement 15000 pour SSH. En cas de problmes de performances, il est prfrable deffectuer les vrifications par NRPE plutt qu travers SSH.
PERFORMANCES Les conditions du test
Dans le cas de SSH, nous avons utilis le protocole aes128-cbr. Cest le plus rpandu et il offre de trs bonnes performances.
260
Sauf si des problmes de performances se profilent lhorizon, les vrifications passives doivent tre cantonnes la supervision de traitements particuliers. Il est conseill, avant de passer aux vrifications passives en cas de problmes de performances, de tester toutes les possibilits de Nagios. Les solutions tant nombreuses, rares sont les situations o des administrateurs doivent sacrifier leurs tests actifs.
261
Comme nous pouvons le voir, la perte de performances est brutale, de lordre de 40 %. Si ladministrateur na pas besoin dune telle puissance, la virtualisation est privilgier. Dans le cas contraire, il doit prfrer une machine physique.
PERFORMANCES Conditions du test
Les administrateurs de virtualisation peuvent se poser des questions sur les conditions du test. Le serveur de supervision tait totalement jour, les tools taient installs correctement sur la machine virtuelle. Les autres machines fonctionnant sur le serveur taient au repos et le %ready (temps dattente de la machine) tait infrieur 3 %. La machine virtuelle navait pas de limite en mmoire ou en processeur. Le serveur hbergeant les machines ntait pas surcharg. De nombreux tests disponibles sur Internet arrivent au mme rsultat.
Vrifications supplmentaires
Dans certains cas, Nagios prend linitiative de lancer de nouvelles vrifications pour claircir une situation. Cest le cas, par exemple, pour les relations de parent rseau. Si un nud ne rpond pas, Nagios vrifie ses parents (sil en a) afin de dterminer lorigine exacte de la perte. Le mme systme existe pour les dpendances de services. Ces vrifications entrent dans le groupe des vrifications on demand ( la demande), lances pour vrifier les dpendances. Leur nombre peut varier fortement suivant les relations entre les lments, par exemple sil existe une grande hirarchie au sein du rseau. Lutilitaire nagiostats offre une vue sur le nombre de ces tests supplmentaires qui sont lancs au fil du temps. Les lignes suivantes leur sont ddies :
262
Sur cet exemple, il y a eu des tests supplmentaires pour les htes et ce, principalement pour la gestion des liens de parent. Les htes et les services sont surveills rgulirement. Un test de vrification hors ordonnancement normal peut trs bien survenir quelques secondes aprs un prcdent test normal . Dans une grande majorit de cas, ltat sera le mme. Il est intressant de rcuprer en mmoire ltat de llment et de ne pas relancer le test.
Ces valeurs sont exprimes en secondes. Dans cette configuration, si ltat en mmoire est g de moins de 15 secondes, il sera pris en considration sans avoir besoin de relancer de nouveaux tests.
263
Cest pour cette raison que certains administrateurs dcident de purement et simplement dsactiver le cache. Pour cela, il paramtrer le temps de validit 0 seconde. Dautres vont accepter ces informations imprcises de temps en temps. Si, par exemple, leur installation est sa limite de performance, le gain que reprsente une latence acceptable est bien suprieur quelques imprcisions.
Nous remarquons quici, sur les 699 tests de machines lancs ces 5 dernires minutes, 42 taient des demandes de revrifications. Ceci reprsente presque 6 % de tests supplmentaires. 33 de ces tests ont t vits. Ceci reprsente 80 % de tests supplmentaires vits. Cest notre cache hit ratio. Dans cet exemple, le temps de validit est de 30 secondes. Si nous diminuons cette valeur, le taux chute fortement. Les administrateurs peuvent suivre cet indicateur et positionner comme ils souhaitent les dures de validit des caches. Il est conseill de maintenir une valeur faible si les administrateurs nont pas de problme de performances. Les informations quils reoivent sont alors totalement pertinentes.
264
Il est important de vrifier que les sondes mises en place par ladministrateur nutilisent pas cette fonctionnalit. Si cest le cas, il est ncessaire de les modifier pour quelles utilisent ces valeurs travers les arguments. Si limpact de cette modification en termes de performance nest pas miraculeux, il est tout de mme apprciable. Voici par exemple la courbe des seuils de latence sur le serveur pris en exemple, avec et sans lutilisation de ce paramtre.
265
Lamlioration est de lordre de 15%. Son impact nest pas trs important car lutilisation des variables denvironnement est anecdotique parmi les sondes standards.
Lamlioration issue de ce paramtre est de 90 %. Ce paramtre est trs intressant pour augmenter la performance dun serveur Nagios. Son impact est relativement
266
limit le temps que le systme prend bien en charge les processus qui oublient de librer leur mmoire.
REMARQUE Un systme adquat
Le nettoyage de lespace mmoire des fils tant laiss au systme, celui-ci doit pouvoir grer la situation correctement. Sur la plupart des systmes actuels, cela ne pose aucun problme et le risque est vraiment limit.
Le lancement de processus consomme plus de 80 % du temps systme de Nagios. Rduire ces appels a un fort impact sur les performances, et ce dans le bon sens. Le paramtre ddi cela est child_processes_fork_twice. De base, il vaut 1. Pour supprimer la double duplication, il faut le positionner 0.
Duplication unique pour les fils
child_processes_fork_twice=0
La figure suivante prsente les courbes des seuils de supervision avec et sans suppression de la double duplication.
267
Cette amlioration est la plus efficace des trois. Elle est de 190 %. Si les administrateurs ont confiance dans la robustesse de leurs sondes, cette technique peut tre utilise facilement et avec des effets rapides.
REMARQUE Un systme adquat
La encore, le systme doit grer la situation par lui-mme. Dans ce cas, il doit reprer les processus zombies de Nagios et les supprimer. Les systmes actuels nont, pour la plupart, aucun problme le faire.
268
La figure suivante prsente les courbes de seuils de latence avec et sans ce paramtre.
Lamlioration est de lordre de 225%. Si ce gain est impressionnant, le risque quil reprsente est loin dtre nul. Ce paramtre est utiliser avec la plus grande prcaution.
269
Un autre type despace temporaire existe. Son nom est tmpfs et cest un systme de fichiers accessible comme nimporte quel autre. Sa spcificit est de loger les informations en mmoire. Sans accs physique sur les disques, la vitesse de lecture / criture est trs rapide. Les fichiers consomment simplement leur taille en espace mmoire. Un tel espace existe en standard sur les systmes Linux. Il est mont dans / dev/shm. Seul lespace rellement consomm est pris en mmoire, lexcdent est disponible pour le reste du systme. Voici un exemple dun tel espace :
Exemple despace en mmoire
df -h /dev/shm/ Filesystem tmpfs
Les fichiers crits dans cet espace sont perdus si la machine est redmarre. Ne doivent y tre placs que des fichiers temporaires de taille rduite et ayant une dure de vie trs faible. Il est prfrable de privilgier les fichiers ayant besoin de fortes performances en lecture / criture.
Fichier status.dat
Une source de ralentissement du serveur Nagios est la gnration rgulire du fichier status.dat. Utilis par linterface CGI de Nagios, il est gnr rgulirement par Nagios. Sa localisation est gre par le paramtre temp_file. Le fichier est ensuite copi sous status_file. Cette opration en deux tapes vite que les utilisateurs de status_file aient lire un fichier non fini. Cette gnration intervient toutes les status_update_interval secondes. Par dfaut, le fichier est enregistr sous /usr/ local/nagios/var/status.dat toutes les 10 secondes. Si ladministrateur a configur un nombre lev dhtes et de services, le fichier peut tre trs imposant. Par exemple, pour une configuration importante de 30000 services, le fichier peut atteindre 120 Mo. Ceci reprsente 12 Mo par seconde dcriture sur le disque, ce qui est important. Une solution consiste diminuer lintervalle de gnration du fichier. Ceci implique cependant un dlai plus long entre larrive de linformation dans Nagios et son apparition sur la console. Une autre solution existe. Le constat est simple : ce fichier a une dure de vie trs limite et nest pas important en cas de redmarrage du serveur. Pour amliorer la situation, sans avoir diminuer sa priode de gnration, nous pouvons gnrer le fichier dans un espace en mmoire.
270
status_file
Size Used Avail Use% Mounted on 1014M 123M 890M 13% /dev/shm
Et le fichier :
tat du fichier status.dat
l-rw-r--r-- 1 nagios 123M Jan 2 15:28 /dev/shm/status.dat
Rpertoire checkresults
Le rpertoire var/spool/checkresults est galement ligible cet espace. Il recueille les rsultats des tests de vrification. Il est rgulirement vid par le processus nagios matre pour obtenir les informations. Ces fichiers font en moyenne 400 octets. Il y en a autant que de tests lancs par priode de check_result_reaper_frequency, soit en gnral 5 secondes. Ceci peut reprsenter rapidement 1 Mo de fichiers mis jour trs rapidement. Ces fichiers ne sont pas importants en cas de redmarrage de serveur. Ce chemin peut donc faire appel lespace en mmoire. Il est paramtr avec check_result_path. Lui affecter la valeur /dev/shm permet de crer ces fichiers en espace mmoire plutt que sur un disque physique.
271
La plupart des installations nayant pas plus de 10 000 services, lutilisation mmoire sera infrieure 20 Mo. Ici, seule la consommation du processus matre est trace. Les processus fils font la mme taille avant de lancer les commandes qui, elles, ne consomment presque rien en matire de mmoire. Considrons le cas o nous lanons 10 000 services en 5 minutes et quun test prend en moyenne 1 seconde sexcuter ( cause des temps rseau sur un systme fortement rparti, par exemple). Nous avons en moyenne 33 processus en parallle. Fort heureusement, pour les administrateurs, ceci ne reprsente pas 33 fois la taille mmoire du processus nagios, mme si cest ce que nous indique la commande top lorsque nous dressons la liste les processus. Les noyaux Unix permettent de faire du copy-on-write de la mmoire lors de la duplication des processus. Ainsi, seules les pages mmoire qui diffrent du processus matre
272
sont rellement alloues. Les processus fils ne modifiant presque pas leur mmoire avant de lancer les commandes, leur consommation relle est quasi nulle. La consommation du processus matre est la seule susceptible dintresser ladministrateur. La consommation des sondes ne profite pas de ce systme. Les sondes font appel des bibliothques, qui sont partages entre les processus. On peut considrer quune sonde classique consomme entre 500 Ko et 1 Mo en mmoire. Suivant le nombre de sonde lances en parallle, la consommation mmoire est plus importante que celle de Nagios lui-mme. Dans le cas des 33 processus simultans, la consommation globale ne dpasse pas les 35 Mo dans la majorit des environnements. La ressource mmoire nest pas le plus grand problme dun systme bas sur Nagios. Ceci est dautant plus intressant que, dans larchitecture que nous allons monter par la suite, nous utiliserons une base de donnes pour grer les donnes de Nagios. Ce genre de programme est trs gourmand en mmoire. La mmoire non consomme par Nagios lui sera alloue.
Architectures distribues
Si, malgr toutes ces options, la latence est trop leve, il faut augmenter les capacits du serveur Nagios au plan physique. Lajout de processeurs peut avoir un effet bnfique. Une seconde solution consiste augmenter le nombre de serveurs et les faire travailler de concert pour superviser lensemble des htes et services. Cette solution est tudie au chapitre suivant.
En un mot
Une question revient souvent lors des tudes sur Nagios : quel serveur faut-il pour superviser X lments. Dans ce chapitre, nous avons prsent un ordre de grandeur. Si ce dernier nest pas suffisant, des mthodes permettent damliorer sensiblement les performances de Nagios. Elles ne sont pas toutes utilisables dans nimporte quelle situation. Que ce soit par des paramtres ou des astuces systme, les administrateurs ont le choix.
10
Haute-disponibilit et rpartition de charge
Comme tout programme, Nagios a des limites, que ce soit en termes de disponibilit ou de performance. Ce chapitre traite des solutions architecturales visant rgler ces problmes.
Haute-disponibilit
Un outil de supervision doit surveiller tous les autres. Il se doit dtre le plus rsistant possible. Si la simplicit de Nagios lui permet dtre particulirement robuste, il nest pas totalement infaillible. De plus, dpendant dun serveur et dun systme dexploitation, il subit leurs alas. Sil est possible de mettre en place deux Nagios identiques sur deux serveurs, il ne faut pas que les administrateurs soient doublement alerts des problmes. Nous allons tudier deux mthodes permettant de configurer Nagios en mode haute-disponibilit et grant le problme des notifications trop nombreuses.
274
Le Nagios principal na pas connaissance du second. Ce dernier surveille lhte du primaire ainsi que le processus nagios qui fonctionne dessus. Si lun des deux nest plus disponible, il excute une commande de rsolution qui active ses propres notifications. Pour cela, le script quil appelle lance la commande externe ENABLE_NOTIFICATIONS. Le script qui lance cette commande est habituellement /usr/local/nagios/libexec/ eventhandlers/enable_notifications (voir figure 10-2).
Figure 102
275
Si le Nagios principal revient, il dsactive les notifications du Nagios secondaire. Pour cela, la commande DISABLE_NOTIFICATIONS est utilise. Le script lanant cette commande est le suivant :
/usr/local/nagios/libexec/eventhandlers/disable_notifications.
Superviser un Nagios
La supervision du processus nagios distant se fait grce la sonde check_nagios. Cette dernire vrifie que le fichier dtat de Nagios nest pas plus vieux quune limite autorise. Pour rappel, ce fichier est gnr toutes les status_update_interval secondes. Par dfaut, cet intervalle est de 15 secondes. Elle vrifie galement que le processus Nagios est toujours lanc. Si lune des deux conditions nest pas remplie, elle retourne une erreur. La sonde prend comme arguments : -F : le chemin vers le fichier status.dat ; -e : le nombre de minutes pour lge maximum du fichier de rtention ; -C : le chemin vers le binaire Nagios. On lance par exemple la commande suivante :
Commande de vrification dun Nagios
check_nagios -e 1 -F /usr/local/nagios/var/status.dat -C /usr/local/ nagios/bin/nagios
276
Le script est appel si besoin par le service du nud secondaire qui supervise le Nagios matre. Voici un exemple de dfinition du service :
Appel de handle-master-nagios-event
define service{ host_name srv-principal service_description NagiosPrincipal max_check_attempts 1 event_handler handle-master-nagios-event check_command check_nagios_principal [...] }
277
Ce script peut, par exemple, tre ordonnanc par cron tout les quarts dheure afin de garder les sondes au mme niveau.
278
La mme configuration La configuration des services et des nuds doit galement tre gre. Il nest pas possible de transfrer automatiquement tous les fichiers du rpertoire /usr/local/ nagios/etc. Une partie de la configuration des deux nuds est diffrente. Par exemple, tout ce qui est en rapport avec handle-master-nagios-event sur le nud secondaire nest pas prsent sur le nud matre. La configuration du nud matre sur le Nagios secondaire doit tre place dans un fichier part. Le reste de la configuration des htes, services, commandes et contacts doit tre plac dans les mmes fichiers (hosts.cfg, services.cfg, commands.cfg et contacts.cfg). Le script suivant peut tre utilis conjointement au prcdent :
Script de synchronisation de la configuration
#!/bin/sh ETC=/usr/local/nagios/etc PID=/usr/local/nagios/var/nagios.pid cd $ETC #on copie la configuration scp hosts.cfg services.cfg commands.cfg contacts.cfg nagios@secondaire:$ETC #on redmarre nagios ssh nagios@secondaire "kill -HUP `cat $PID`"
279
Figure 103
Un Nagios dormant
Si une telle mise en place est trop complexe, il est possible dutiliser un systme bas sur un Nagios semi-dormant. Il ne lance pas les vrifications, mais attend que le Nagios primaire lui envoie passivement les tats. Lorsquil dcide de lancer ses vrifications, il dispose de toutes les informations dont il a besoin pour tre efficace rapidement. Le Nagios primaire les lui fournit par le biais de NSCA. On ne peut pas utiliser cette fin les commandes de rsolution de problmes. Le second Nagios a en effet besoin de tous les tats. Or, ces commandes ne sont lances quen cas de changement dtat. Nagios propose les commandes OCSP et OCHP qui, si elles sont dfinies dans le fichier de configuration nagios.cfg, sont appeles aprs chaque vrification. Elles servent lancer des commandes qui relaient les informations des services et des nuds dautres Nagios. Elles sont dfinies comme suit sur le matre :
Configuration des commandes OCSP/OCHP
obsess_over_services=1 ocsp_command=submit_service_check_result obsess_over_hosts=1 ochp_command=submit_host_check_result
280
Il galement mettre en place ce type de script pour les htes et la commande submit_host_check_result. Lances aprs chaque vrification de service ou dhte, ces commandes permettent denvoyer passivement les tats un autre Nagios. Ce dernier obtient sans effort les informations du matre (figure 10-4).
PERFORMANCE Un impact non ngligeable
Le fait denvoyer tous les tats un Nagios secondaire a un impact fort sur les performances. Chaque lancement dune sonde implique le lancement de la commande OCSP ou OCHP correspondante.
281
Figure 104
Ne pouvant pas lancer de vrifications actives, il ne peut pas superviser lui-mme le premier Nagios. Pour cela, nous utilisons un ordonnanceur externe de type cron. Dans le cas dun Nagios primaire qui ne rpond pas, il doit donner la main au secondaire pour la supervision. Pour cela, il lance les commandes START_EXECUTING_SVC_CHECKS, START_EXECUTING_HOST_CHECKS et ENABLE_NOTIFICATIONS. Elles permettent de ractiver les tests actifs et les notifications. Lorsque le premier Nagios est de nouveau disponible, le Nagios secondaire doit laisser la main. Pour cela, le script lanc par cron doit lancer les commandes DISABLE_NOTIFICATIONS, STOP_EXECUTING_SVC_CHECKS et STOP_EXECUTING_HOST_CHECKS. Sans vrification et sans notification, il redevient le Nagios de secours semi passif. Un tel script, nomm check_nagios_primaire.sh, est de la forme suivante :
check_nagios_primaire.sh
#!/bin/sh LIBEXEC=/usr/local/nagios/libexec
282
Il est lanc toutes les minutes par un utilisateur ayant les autorisations sur le fichier nagios.cmd, typiquement nagios (voir figure 10-5).
Figure 105
Il se peut quil y ait une priode de recouvrement entre le redmarrage du matre et sa dtection par le passif. Si le script de vrification est lanc toutes les minutes, cette priode est au maximum dune minute galement. Cest tout fait acceptable quant aux notifications qui peuvent tre envoyes pendant ce court laps de temps.
283
Rpliquer NSCA
Les alertes passives doivent galement tre gres par le systme de secours. NSCA est dj lanc, mais les clients ne sadressent pas lui. Un moyen pour pallier cela consiste mettre en place une adresse virtuelle sur les deux nuds grs par HeartBeat. Une telle mise en place sera dcrite plus loin dans ce chapitre.
284
Pour chaque information recueillie par les relais, ils avertissent le primaire par le biais des commandes OCSP et OCHP. La configuration des Nagios distants est la suivante :
Configuration des Nagios distants
obsess_over_services=1 ocsp_command=submit_service_check_result obsess_over_hosts=1 ochp_command=submit_host_check_result enable_notifications=0
Les commandes submit_service_check_result et submit_host_check_result sont celles qui ont t dfinies prcdemment. Elles doivent simplement envoyer les informations vers le Nagios central. La configuration des htes et des services est, quant elle, classique. Les serveurs Nagios distants ne devant pas envoyer dalerte, la partie notification nest pas ncessaire. Le serveur central reoit les tats des nuds et des services de manire exclusivement passive. Il doit accepter les commandes externes et il est charg de lever les notifications. Nous obtenons la configuration suivante :
Configuration du serveur central
execute_service_checks=0 execute_host_checks=0 enable_notifications=1 check_external_commands=1
285
Il doit avoir dans sa configuration lensemble des htes et des services dfinis sur les serveurs distants. Il naccepte passivement les tats que des lments dont il connat lexistence. Il faut, dans ce genre de situation, se prmunir des pertes des Nagios distants. Il faut, pour cela, vrifier la fracheur des informations reues. Sur le Nagios primaire, nous vrifions que nous avons bien des tats mis jour rgulirement. Du point de vue du Nagios central, nous sommes dans la situation de services purement passifs. Comme nous lavons dj fait au chapitre 7, la dfinition de la commande de la vrification active renvoie une alerte. Voici une telle dfinition :
Vrification de la fracheur des donnes
define service{ passive_checks_enabled 1 check_freshness 1 freshness_threshold 600 check_command check_dummy!2!Information prime. [...] }
Ici, la limite est place 10 minutes. Suivant la planification du service sur le serveur distant, il peut tre bon de laugmenter ou de la diminuer. Un changement dordonnancement sur un relais doit tre rpercut sur la valeur de fracheur, sous peine de voir lever des alertes inutiles. Le problme de la perte dun Nagios distant plane toujours. Dans le cas dune simple perte rseau entre les Nagios, des informations sont irrmdiablement perdues. La gestion de la configuration est particulirement complexe. Chaque service est configur au moins deux fois : 1 sur le serveur distant, pour la supervision active ; 2 sur le serveur central, pour la vrification de la fracheur et les notifications. Cette solution est trop lourde grer.
286
Les administrateurs peuvent faire ce quils souhaitent des informations recueillies. Ils peuvent par exemple les mettre dans une base de donnes. Lexcutable soccupant de cela se nomme ndo2db. La figure 10-7 illustre cette communication.
287
buffer_file : fichier tampon utilis lorsque ndomod ne peut pas transmettre ses
informations, par dfaut le fichier est /usr/local/nagios/var/ndomod.tmp ; output_buffer_items : nombre de places dans le fichier tampon, par dfaut 5000 lments ; reconnect_interval : temps entre deux tentatives de reconnexion lorsque la connexion sur le rseau est perdue ; data_processing_options : champ servant spcifier les informations exportes. Il sera tudi plus en dtail dans un second temps. La mthode conseille pour la connexion entre ndomod et ndo2db est la connexion rseau. Mme sils sont situs sur le mme serveur, ce type de connexion est le plus fiable. Le module ndomod doit tre charg par Nagios. Pour cela, il faut ajouter ce qui suit dans le fichier nagios.cfg :
Appel au module ndomod dans nagios.cfg
broker_module=/usr/local/nagios/bin/ndomod.o config_file=/usr/local/ nagios/etc/ndomod.cfg event_broker_options=-1
Choix des donns exportes Le paramtre data_processing_options sert spcifier les donns exporter. Si la valeur est -1, Nagios envoie toutes les donnes. Dans le cas contraire, il va utilise les bits de la numrotation binaire pour slectionner les informations. Celles-ci sont en effet indexes sur des puissances de 2. Les informations disponibles ne sont pas pleinement documentes. Il faut, lheure actuelle, aller regarder le code de ndomod afin de voir ces valeurs. Le fichier considrer est include/ndomod.h. Comme que ce nest pas trs pratique, les puissances de deux des lments sont retranscrits dans le tableau 10-1.
Tableau 101 Donnes exportes par NdoMod
Index de puissance de 2 0 1 2 3 4 5 6
Index de puissance de 2 7 8 9 10 11 12 13
288
Index de puissance de 2 14 15 16 17 18 19
Index de puissance de 2 20 21 22 23 24 25
Certaines informations font doublon avec les fichiers plats. Par exemple, les donnes de journalisation et les informations de rtention sont disponibles galement en base. Il est probable que, lavenir, Nagios propose plusieurs mthodes pour obtenir ces informations : les fichiers plats ou la base de donnes. Il est dconseill de supprimer une donne inconnue. Il peut tre intressant, cependant, de supprimer les donnes inintressantes, consommatrices de bande passante et despace disque. Les donnes les plus volumineuses sont SERVICE_CHECK, HOST_CHECK et SYSTEM_COMMAND. Elles concernent les commandes lances par Nagios et leur rsultat. Ces informations ntant pas, lheure actuelle, utilises, nous pouvons les enlever sans souci. En ajoutant les valeurs de toutes les donnes, on obtient :
SERVICE_CHECK, HOST_CHECK
et
SYSTEM_COMMAND,
nous
Nous utilisons cette valeur pour le paramtre nes inutiles ne sont pas envoyes ndo2db.
PIGE Garder les valeurs utiles
data_processing_options.
Les don-
Ici, nous avons enlev les valeurs service_check, host_check et system_command car nous savons quelles ne sont pas utilises par les outils que nous allons mettre en place par la suite. Il faut faire trs attention aux donnes que lon supprime. Si lon nest pas certain quune donne est inutile, mieux vaut la garder.
289
Charge gnre par lexport des donnes La charge de calcul du module ndomod est minime. Le trafic gnr est variable suivant le nombre dlments superviss. Lordre de grandeur est de 5ko/s pour 1 000 services superviss toutes les 5 minutes. Cette consommation de bande passante est raisonnable.
290
Le module ndomod se lance, quant lui, avec Nagios. Lorsque nous le dmarrons, nous obtenons dans le fichier nagios.log les entres suivantes :
Entres dans nagios.log pour le chargement de ndomod
[1230409791] ndomod: NDOMOD 1.4b7 (10-31-2007) Copyright (c) 2005-2007 Ethan Galstad (nagios@nagios.org) [1230409791] ndomod: Successfully connected to data sink. 0 queued items to flush. [1230409791] Event broker module '/usr/local/nagios/bin/ndomod.o' initialized successfully.
Lors de son chargement, le module demande un nettoyage des anciennes entres dans la base. Cette tape peut prendre quelques secondes.
PRATIQUE Rduire le temps de lancement
Pour rduire le temps de dmarrage, on peut demander ndo2db de conserver les informations moins longtemps. De cette manire, le nettoyage est plus rapide. Les paramtres max_timeevents_age, max_systemcommands_age, max_hostchecks_age et max_eventhandlers_age, exprims en minutes, sont utiliss dans ce but.
Il envoie ensuite les lments sauvegards dans buffer_file pour les envoyer en base. Dans lexemple ci-dessus, il ny en avait pas en attente. Le module en stocke au maximum output_buffer_items. Il enregistre dans le tampon les lments de supervision lorsquil narrive pas se connecter ndo2db. Il tente de se reconnecter toutes les reconnect_interval secondes.Sil arrive se reconnecter, il vide son fichier tampon. Par exemple, lors de la perte de connexion, nous observons ce qui suit dans nagios.log :
Perte de connexion entre ndomod et ndo2db
[1230412336] ndomod: Error writing to data sink! Some output may get lost... [1230412352] ndomod: Still unable to reconnect to data sink. 0 items lost, 669 queued items to flush.
291
Une fois en base, les informations ne demandent qu tre lues pour obtenir les tats de supervision. Pour linstant, la console standard de Nagios ne sait pas lire ces informations, mais nous verrons comment Centreon permet de les utiliser pleinement.
PERFORMANCE Faire attention aux performances de la base de donnes
Le module ndo2db ne consomme pas beaucoup de ressources. Il ne fait que transmettre les informations une base de donnes. Celle-ci peut cependant tre fortement sollicite suivant le nombre de services et de nuds dfinis. Pour lallger, il faut slectionner au mieux les donnes exportes.
292
Configuration La configuration des services et des nuds est rpartie sur les Nagios et ce, sans duplication. La charge de ladministrateur Nagios est allge par rapport la solution prcdente, mais reste contraignante. La gestion des configurations sur des serveurs qui peuvent se trouver trs loigns peut savrer dlicate. Les donnes de performances sont situes sur chaque serveur. Il faut que ladministrateur gre le rapatriement des donnes pour les intgrer dans loutil de mtrologie.
PRATIQUE Une gestion simplifie grce Centreon
Nous verrons dans un prochain chapitre Centreon qui permet de faciliter cette gestion. Ladministrateur pourra grer toute sa configuration depuis une seule console. Centreon permet galement dautomatiser la gestion des donnes de mtrologie.
Impact limit des pertes de lien Les pertes de connexion nont plus le mme impact. Les Nagios ayant la pleine responsabilit de leur supervision, les pertes de connexions sont gres comme pour tout Nagios. La console nest pas en reste. Les informations tant transmises par ndomod, en cas de perte de connexion avec ndo2db, un tampon est disponible pour renvoyer automatiquement les informations par la suite. Il ny a pas de perte de donnes.
293
Il est tout de mme important dtre averti de ces pertes de connexion. On peut, pour cela, exploiter check_nagios, mais nous pouvons mettre en place une autre solution utilisant la base NDO. Les Nagios y enregistrent rgulirement des donnes. La table programstatus contenant les informations issues de PROGRAM_STATUS est ici utile. Nous pouvons y voir la dernire mise jour dtat pour chaque instance de Nagios. Si nous recherchons linformation pour le premier Nagios, nous effectuons la requte suivante :
Requte dans la base NDO sur ltat dune instance
SELECT status_update_time FROM nagios_programstatus WHERE instance_id=1;
Il suffit de faire la diffrence avec lheure actuelle pour voir si les informations sont trop vieilles au got des administrateurs. Pour obtenir le numro attribu chaque instance, il suffit de lancer la requte suivante :
Identification des instances
SELECT instance_id,instance_name FROM nagios_instances;
Nous obtenons, ici pour une base remplie par deux instances :
instance_id=1, instance_name=default instance_id=2, instance_name=distant
En seulement deux requtes, il est simple de savoir si les serveurs distants sont encore fonctionnels. La sonde check_ndo est justement faite pour cela. Son rle est de surveiller ces enregistrements en base et dalerter si les informations sont trop ges. Elle prend en paramtres : H : ladresse du serveur de base de donnes ; -d : le nom de la base de donnes NDO ; -u : un utilisateur de la base ; -p : le mot de passe de lutilisateur ; -t : le temps en secondes de non-mise jour accept ; -i : le nom de linstance Nagios qui est vrifie.
294
Voici un exemple de ce que donne son lancement sur une base jour :
Vrification de ltat dune instance en base
check_ndo.pl -H srv-base -d ndo -u ndouser -p pass -t 60 -i default
Nous obtenons :
Instance en tat OK
Instance "default" is running and database was updated during the last 60 seconds. OK
Sur une base qui na pas t mise jour depuis plus dune minute par linstance default, nous obtenons :
Instance qui ne met plus jour la base
default was not updated during the last 60 seconds. echo $? 2
(Distributed Nagios eXecutor), utilise la fonction exporte Cette dernire permet un module de prendre en charge les vrifications actives. Lorsquune vrification doit tre lance, le module demande Nagios de faire la vrification et lui retourne linformation de bon drouDNX
295
lement du lancement. Ce dernier est, en fait, effectu par un client distant. Ce fonctionnement est illustr en figure 10-9.
Le module DNX charg dans Nagios, galement appel DnxServer, ouvre deux ports de communication : le port Dispatcher, UDP/12480, sert aux clients pour rcuprer les commandes lancer ; le port Collector, UDP/12481, sert aux clients pour retourner les rsultats des commandes.
SCURIT Des ports ouvrir
En cas dutilisation conjointe de DNX et dun pare-feu, il ne faut pas oublier douvrir ces ports en entre sur le serveur Nagios.
Des clients externes ralisant les vrifications Les clients, nomms DnxClients, sont des programmes fonctionnant sous Linux. Ils utilisent un compte non privilgi, idalement nomm nagios. Ils sont chargs de se connecter sur le port Dispatcher du serveur, et de rcuprer les commandes lancer. Les sondes doivent tre places sur les serveurs des clients. Ils utilisent intelligemment un pool de threads pour leurs vrifications. Ce systme est plus lger que la duplication de processus de Nagios. Une fois la sonde lance, le rsultat est retourn au port Collector. Ce rsultat, une fois rcupr par le module serveur, est export dans le rpertoire des rsultats de Nagios, comme pour nimporte quelle vrification. Nagios le parcourant rgulirement, il rcupre et traite les donnes normalement. Ce fonctionnement est illustr en figure 10-10.
296
Avantages Cette mthode est trs souple. Le serveur ne fait que proposer des commandes lancer. Il ne prend pas linitiative de contacter les clients. Lajout dun client est transparent pour le serveur. La perte dun client nest pas critique. Les vrifications dont il avait la charge sont perdues. Nagios ne rcuprant pas de rsultat, il rordonnance le test. Le client tant perdu, il ne rcupre pas de nouveaux tests. Ceux-ci sont la charge des autres clients.
DNX
Module serveur
Configuration Une fois install, la prise en compte du module serveur par Nagios est simple. Il suffit, comme pour NDO, dutiliser le paramtre broker_module dans le fichier nagios.cfg :
Appel au module dnxServer dans nagios.cfg
broker_module=/usr/local/nagios/lib/dnxServer.so
297
dnxServer.cfg.
La configuration du module est situe dans le fichier /usr/local/nagios/etc/ Les paramtres principaux sont : channelDispatcher : adresses et ports ouvrir pour la communication Dispatcher ; channelCollector : adresses et ports ouvrir pour la communication Collector ; authWorkerNodes : listes des adresses autorises se connecter au serveur ; localCheckPattern : expression rgulire permettant de reprer les services ne devant pas tre exports sur les clients, mais traits localement sur le serveur Nagios ; syncScript : commande permettant de synchroniser les sondes entre les clients ; logFile : fichier de journalisation du module serveur, par dfaut /usr/local/ nagios/var/log/dnxsrv.log.
Dmarrage Une fois configur, il suffit de lancer Nagios pour charger le module :
Entre dans nagios.log du chargement du module dnxServer
[1233820400] Event broker module '/usr/local/nagios/lib/dnxServer.so' initialized successfully.
DnxServer
Clients DNX
Configuration Une fois le serveur lanc, il est temps de soccuper des clients. Lorsquils sont installs, leur configuration est situe dans le fichier /usr/local/nagios/etc/ dnxClient.cfg. Les paramtres importants sont les suivants :
298
teur sur ses performances ; channelDispatcher : adresse du serveur auprs duquel le client doit aller rcuprer les tests de vrification ; channelCollector : adresse du serveur auquel le client doit renvoyer les rsultats ; poolInitial : nombre de threads allous au lancement pour traiter les demandes ; poolMin : nombre de threads minimum que le client doit conserver ; poolMax : nombre de threads maximum qui peuvent tre lancs ; poolGrow : unit dallocation des threads ; threadMaxRetries : temps dinactivit dun thread avant quil ne se ferme ; pluginPath : chemin vers les sondes ; logFile : fichier de journalisation du client ; User : utilisateur sous lequel fonctionne le client.
299
On peut vrifier que les commandes sont bien lances en observant les processus de lutilisateur nagios :
Vrification du lancement des commandes
ps -fu nagios nagios /usr/local/nagios/sbin/dnxClient -c /usr/local/nagios/etc/ dnxClient.cfg nagios |----->/usr/bin/perl /usr/local/nagios/libexec/check_bonding.pl
Avantages et inconvnients
Les avantages de DNX sont nombreux. Cette solution permet daugmenter facilement la rpartition de la charge sur plusieurs nuds. Lajout ou la suppression dun client naffecte pas, ou peu, le serveur. Cependant, ladministrateur na aucun contrle sur le client qui effectue la vrification. Si des commandes doivent tre lances dun nud particulier, elles doivent ltre depuis le serveur de supervision. Cette limite peut tre rdhibitoire dans certains cas. La gestion de la rpartition de la charge entre les clients nest pas vidente, mme avec les paramtres de nombres de threads maximum. Il est conseill davoir des machines identiques pour traiter les demandes. Les performances de chaque client sont trangement infrieures celle dun Nagios configur pour des performances maximum. Les options de configuration vues dans le chapitre prcdent ne sont plus applicables. Ladministrateur risque davoir besoin de plus de machines en utilisant DNX que dans le cas de serveurs Nagios utilisant NDO et dont les paramtres sont affins.
PERFORMANCE Des problmes contre-balancs avec NRPE
Dans le cas o les vrifications se basent majoritairement sur check_nrpe, DNX ayant une librairie intgre, il peut tre plus performant que Nagios.
La disponibilit du processus Nagios est galement un problme. Les agents ne sont pas critiques, mais le dmon qui ordonnance les vrifications lest. Il est malheureusement seul dans larchitecture actuelle.
et
NDO
300
est utilis dans le cas o une instance de Nagios ne peut pas supporter la charge qui lui est demande. Laugmentation du nombre de clients DNX permet de rpartir cette charge sur plusieurs serveurs.
NDO, quant lui, rajoute de nouvelles instances de Nagios. Elles peuvent travailler ensemble dans un objectif commun en se partageant un pan du systme dadministration. Elle sont utilises pour dcouper la supervision en units logiques indpendantes.
Les notifications sont envoyes depuis chaque Nagios distribu. Le dcoupage de NDO peut reflter celui de lorganisation de lentreprise : sil existe plusieurs datacenters, chacun a sa propre quipe dadministration. Il est utile davoir une vision densemble des problmes. NDO peut rpondre ce besoin particulier. Les administrateurs de chaque instance sont indpendants les uns des autres. Ils peuvent configurer leur Nagios comme bon leur semble sans risquer dinterfrer avec les autres administrateurs. Si une instance est coupe du reste de la socit, elle continue de surveiller son pan du systme. Les administrateurs ne sont pas sans supervision pendant ce temps.
DNX, quant lui, ne propose quune rpartition des tests. Cette rpartition nest pas contrlable par les administrateurs. Les notifications sont envoyes depuis un unique Nagios. Si un site est coup du reste du monde, le client DNX na plus aucun intrt puisquil ne peut pas interroger le serveur Nagios central. Il ne peut pas envoyer de notification. Les administrateurs se retrouvent dmunis.
Ces deux systmes ne sont pas exclusifs. NDO permet de dcouper de grands pans indpendants du systmes dinformation tout en ayant une vue globale des problmes et DNX permet chaque instance de rpartir sa charge sur autant de clients quelle le dsire. La figure 10-11 illustre cette architecture.
301
302
Si les deux serveurs ont un nom dinstance NDO diffrent, chaque tat est dupliqu dans la base de donnes. Cette situation tant viter, le nom est identique. Lorsque le second Nagios envoie ses donnes, elles sont simplement mises jour et non dupliques. Seul un doublement de la charge sur ndo2db et la base de donnes est perceptible. Il ny a malheureusement, lheure actuelle, pas de moyen de communiquer via commandes externes avec ndomod. Il faut utiliser un moyen dtourn pour limiter les connexions non souhaites provenant du systme de secours. Pour rappel, le script check_nagios_primaire.sh vrifie rgulirement que lactif est toujours vivant. Il dmarre les vrifications actives sur le systme de secours si besoin. Nous pouvons lui ajouter une commande supprimant les liaisons entre ndomod et ndo2db quand le service est passif. Lorsquil passe en mode actif, le script est charg dautoriser la communication.
check_nagios_primaire.sh
#!/bin/sh LIBEXEC=/usr/local/nagios/libexec EVENT=$LIBEXEC/eventhandlers/ $LIBEXEC/check_nrpe -H srv-primaire -c check_nagios $RET=$? if [ "$RET" = "0" ] then $EVENT/disable_active_service_checks $EVENT/disable_active_host_checks $EVENT/disable_notifications $EVENT/drop_ndo_connexions else $EVENT/enable_active_service_checks $EVENT/enable_active_host_checks $EVENT/enable_notifications $EVENT/enable_ndo_connexions fi
Les scripts drop_ndo_connexions et enable_ndo_connexions crent simplement une rgle de pare-feu pour autoriser ou non les communications vers le port de ndo2db. Le script suivant vrifie que la rgle NetFilter est active. Si elle ne lest pas, il la cre.
CONFIGURATION Droits sudo
Pour ce script, lutilisateur nagios a besoin de lancer une commande en tant que root. Pour cela, il utilise la commande sudo. La rgle rajouter au fichier /etc/sudoers est nagios
ALL=NOPASSWD:/sbin/iptables *
303
drop_ndo_connexions
#!/bin/sh sudo /sbin/iptables -L | grep "ndo-server tcp dpt:5668" RET=$? if [ "$RET" = "0" ] then sudo /sbin/iptables -I OUTPUT -d ndo-server -p tcp --dport 5668 -j DROP fi
304
Les notifications sont toujours envoyes, mais les administrateurs ne peuvent pas obtenir plus dinformations par la console de supervision. Cette dernire se doit dtre galement configure en haute-disponibilit.. Lutilisation du logiciel HeartBeat de Linux est ici justifie. Pour faciliter la gestion des modules ndomod, ndo2db est mis en place sur une IP virtuelle. ndo2db et lIP virtuelle basculent au besoin sur le systme de secours. Ce mcanisme est observable sur le diagramme suivant :
Figure 1014
Haute-disponibilit de NDO2DB
Le programme HeartBeat de chaque nud surveille ltat de lautre nud. Un membre et un seul la fois est nomm matre des ressources : ladresse virtuelle et le processus ndo2db. Sil nest plus disponible, le systme de secours acquiert toutes les ressources. Si le nud matre revient, il reprend la main.
305 de
/etc/ha.d/ha.cf,
auto_failback on
La configuration demande au programme HeartBeat de vrifier lautre membre toutes les 2 secondes. Au bout de 10 secondes sans rponse, il est dclar mort. Le fichier /etc/ha.d/haresources sert dcrire les ressources du cluster. Il est identique sur les deux membres et se compose dune seule ligne indiquant le nom du matre et les ressources proprement parler :
/etc/ha.d/haresources
srv-clust1.domain.com Ipaddr::192.168.0.3 ndo2db
306
resource.d.
et ndo2db sont des scripts dinitialisation placs dans le rpertoire /etc/ha.d/ Ils permettent respectivement de monter une adresse virtuelle et de lancer ndo2db. Le premier est fourni par le paquet HeartBeat. Le second, /etc/ ha.d/resource.d/ndo2db, est reproduit ici :
/etc/ha.d/resource.d/ndo2db
#!/bin/sh # Start/stop the ndo2db daemon. Ndo2dbBin=/usr/local/nagios/bin/ndo2db Ndo2dbCfg=/usr/local/nagios/etc/ndo2db.cfg case "$1" in start) echo -n "Starting ndo2db" $Ndo2dbBin -c $Ndo2dbCfg ;; stop) echo -n "Stopping ndo2db" killall $Ndo2dbBin ;; esac exit 0
Le fichier /etc/ha.d/authkeys sert dfinir le message qui permet de vrifier le bon tat de lautre membre. Il est identique pour les deux membres et a les droits root/600 :
/etc/ha.d/authkeys
auth 2 1 md5 "Vive ndo2db" 2 crc
Une fois les services HeartBeat lancs, les membres se mettent daccord sur celui qui possde les ressources. Ici srv-clust1 prend la main, car il est nomm matre des ressources dans haresources.
CONFIGURATION Le lien de HeartBeat
Ici, pour des raisons de facilit, le lien LAN primaire est utilis pour la communication entre les serveurs
HeartBeat. Une situation plus robuste consiste utiliser entre les serveurs un lien ddi qui ne subit
307
Supervision de HeartBeat
HeartBeat
est trs pratique pour mettre en place un cluster facilement. Il est important de le superviser afin de pouvoir remonter lhistorique des problmes rencontrs. Un moyen simple de vrifier si le nud sur lequel nous nous situons est le nud actif consiste lancer un ifconfig. Si nous voyons ladresse virtuelle, cest bien le cas.
La commande cl_status permet dobtenir les informations souhaites sur ltat du cluster. Elle est appele par la sonde ddie la supervision de HeartBeat. Elle se nomme check_heartbeat_link et vrifie que le programme est bien lanc sur le nud actuel et que lautre membre rpond bien galement. Par exemple, lanc sur srv-clust1 :
srv-clust1 voit bien srv-clust2
Heartbeat Link OK: srv-clust2.domain.com:eth0:up
En un mot
Nagios nest pas infaillible. Ses performances sont leves, mais pas illimites. Nagios propose des solutions architecturales permettant davoir une solution haute-disponibilit, distribue, ou les deux la fois. Chaque architecture a ses avantages et ses inconvnients. Suivant la rpartition du systme dinformation, les solutions bases sur DNX ou NDO peuvent permettre de grer autant dhtes que le souhaitent les administrateurs. Les mthodes de haute disponibilit peuvent profiter des facilits offertes par le programme HeartBeat sous Unix.
TROISIME PARTIE
310
Nagios 3
Le chapitre 15 prsente un systme dinformation type et explicite la configuration des lments superviss, non sans avoir rappel les points importants qui dterminent la russite du projet de supervision.
11
Outils daide la configuration : lexemple de Centreon
La configuration de Nagios peut tre longue et fastidieuse. Heureusement, il est possible de puiser dans un cosystme applicatif trs vaste pour trouver dexcellents outils daide la configuration, parmi lesquels figure en premire place Centreon.
312
De nombreux programmes gravitent dans lcosystme doutils libres de Nagios. Les sondes en sont la partie la plus visible, mais dautres programmes sont galement disponibles. Parmi ceux-ci, les outils de gestion de configuration ont une place toute particulire. Ces outils sont le plus souvent bass sur une interface web. Les administrateurs y font appel pour administrer leur solution depuis nimporte quel endroit avec un simple navigateur. Leur convivialit permet de faire adopter la solution bien plus facilement que si les administrateurs doivent diter directement les fichiers de configuration. Ils pallient bon nombres de points faibles de Nagios. Ils sont indispensables la mise en place efficace dune solution de supervision base sur Nagios.
La solution Centreon
Parmi toutes les solutions existantes, celle de Centreon se dmarque particulirement. Il a volu au fil du temps pour assurer bien plus que la simple configuration de Nagios, comme nous allons le voir par la suite. Simposant comme loutil de rfrence pour btir une solution de supervision autour de Nagios, il est devenu indispensable pour la mise en place de Nagios dans de grands environnements. Centreon repose sur une base trs active dutilisateurs de tous horizons. Certains sont des membres de la premire heure de la communaut Nagios, dautres sont de tout rcents utilisateurs. Lentraide sur les forums est trs bonne. La documentation,
313
longtemps perue comme le point faible de loutil, volue rapidement grce la participation de tous les membres. Un wiki est disponible afin que tout le monde puisse apporter sa brique ldifice.
COMMUNAUT DOreon Centreon, une volution rapide
Le dveloppement de Centreon commence en 2003 sous le nom dOreon, sous licence GLP v2. Les dveloppeurs principaux de lapplication sont franais. La communaut dutilisateurs se dveloppe rapidement. Lorsquelle change de nom pour devenir Centreon, cette solution a atteint la maturit et reprsente un choix sr pour mettre en place un Nagios administrable, dautant plus quelle corrige au fur et mesure ses erreurs de jeunesse, et gagne en rapidit et agilit dans la manire de proposer les informations. B http://fr.doc.centreon.com/Docs:Centreon2/fr
Cet tat de fait est bien souvent oubli par les administrateurs. Cest pourtant la premire cause dchec de la mise en place dune solution de supervision. Si la modification dune sonde ou dun paramtrage est rapide, reprendre les processus de dcision concernant la supervision est bien plus contraignant. Si bien que, dans la majorit des cas, ils ne seront pas modifis ou amliors par la suite.
314
Il ne faut pas oublier que, comme il sagit dune couche supplmentaire la solution, ces outils peuvent contenir des bugs. Leur conception tant relativement simple, peu de problmes sont survenus au fil du temps. Les soucis peuvent tre fcheux, mais ils sont vite corrigs.
Les diffrents lments tant lis, leur volution suit le mme rythme. Il nest pas toujours possible de profiter des toutes dernires nouveauts de Nagios sans attendre une mise jour de loutil de configuration. Parfois le fonctionnement des outils de gestion de configuration nest que partiel avec une nouvelle version majeure de Nagios. Dans ce cas, si les fonctionnalits perdues ne sont pas utilises par les administrateurs, rien nempche dexploiter loutil en ltat. Dans le cas contraire, les administrateurs peuvent soit attendre une nouvelle version, soit modifier directement les outils. Ces derniers tant Open Source, rien nempche les administrateurs de les adapter aux nouvelles fonctionnalits. Ils peuvent en faire profiter la communaut par la suite.
315
La partie grant la configuration est tout particulirement concerne. Les outils gnrent les fichiers de configuration de Nagios, fichiers qui sont valides de son point de vue. Le problme qui peut se poser concerne leur maintenance sans loutil. Nous verrons que cest le cas avec Centreon. Le problme pourrait paratre bloquant, mais il ne faut pas oublier que ces outils sont libres. Rien nempche les administrateurs de rcuprer les donnes quils souhaitent ou bien dadapter les outils de nouvelles fonctionnalits. Dans le cas dun outil propritaire, le problme serait beaucoup plus inquitant.
Un outil incontournable
Dressons une liste des avances de Centreon qui lui ont permis de grer de plus en plus daspects de la solution de supervision.
316
Le projet a cess dvoluer en 2005. Centreon a alors propos une solution nomme ODS (qui sera renomme CentStorage par la suite) afin de grer au mieux la mtrologie sans retomber dans les travers de PerfParse.
317
Une fois les paramtres fournis, les valeurs sont sauvegardes dans une base de donnes MySQL, fournie par Centreon. Cette partie est nomme CentWeb. Les pages de configuration sont claires et lon sy retrouve facilement. Des onglets permettent de regrouper les donnes par thmes. Par exemple, dans la configuration dun service, ladministrateur a le choix entre les onglets suivants : Service configuration : paramtres dfinissant quelle commande lancer et qui avertir en cas de souci ; Relations : paramtres dfinissant les nuds auxquels accrocher le service ; Data processing : paramtres concernant des options facultatives comme la vrification de la fracheur des services passifs ; Service Extended Info : donnes facultatives comme un lien vers la documentation ; Macros : onglet permettant de dfinir des macros pour ce service. Dans la majorit des cas, les administrateurs nutilisent que les deux premiers onglets. Ils peuvent dupliquer un lment pour en dfinir un autre. Cette fonctionnalit est toutefois utiliser petite dose. Une duplication dinformations est dangereuse sur le long terme. Il est prfrable dutiliser le plus possible les modles, afin de diminuer le nombre de pages modifier le jour o un paramtre commun doit tre chang. Les principes de configuration tudis au chapitre 8 sappliquent galement Centreon. Une fois la configuration complte, ladministrateur demande Centreon de gnrer les fichiers de configuration de Nagios. Avant dcrire la configuration finale, on peut gnrer et faire tester par Nagios une version dans un rpertoire temporaire. Si celleci est valide, la configuration de Nagios est crase et il lui est demand de la relire.
Ladministrateur na pas besoin de modifier directement les fichiers de configuration de Nagios. Ceux-ci sont regnrs chaque demande. Il na pas besoin de savoir parfaitement le nom des proprits des objets. Il est tout de mme fortement conseill de connatre la mthodologie de configuration de Nagios. Sans cela, la configuration na pas forcement le sens souhait par ladministrateur.
318
Nous pouvons voir ci dessous une capture dcran de linterface de configuration dun hte dans Centreon.
Figure 112 Capture dcran de linterface de configuration dun hte dans Centreon
319
Figure 113
Le chargement doit tre effectu dans lordre suivant : 1 commandes de notification ; 2 commandes de vrification ; 3 priodes de temps ; 4 contacts et groupes de contacts ; 5 htes et groupes dhtes ; 6 services et groupes de services ; 7 escalades. Pour chaque tape, Centreon indique le nombre dlments quil a chargs. Ladministrateur vrifie ainsi que lensemble de sa configuration est bien charge. Une fois complte, il peut demander Centreon de regnrer la configuration et relancer Nagios.
CONFIGURATION Des commandes diffrentes
Centreon fait la diffrence entre les commandes de vrification et celles de notifications. Cette diffrence ntant pas prsente au niveau des fichiers de Nagios, limport doit se faire en deux tapes distinctes.
320
Ladministrateur peut choisir plusieurs modles, ils seront retranscrits dans lordre dans les fichiers de configuration. Les hritages multiples sont ainsi utilisables.
Lors de la conception de la configuration, les groupes de nuds sont remplacer intgralement par les modles de nuds. Ceux-ci ont deux utilisations : placer les paramtres de supervision dhte ; servir de point daccroche de services.
321
Cette mthode a cependant quelques inconvnients. Les administrateurs ont un peu de mal sy retrouver parmi la montagne de services configurs. Ce problme se rgle rapidement avec une bonne utilisation des filtres. Un problme un peu plus ennuyeux se pose lorsquun modle est retir dun nud. Les services sont gnrs automatiquement, mais leur suppression ne lest pas. Ce problme peut devenir difficile grer lorsque le nombre de nuds devient important. Il se pose un autre problme avec cette utilisation lorsque ladministrateur veut changer doutil de gestion de configuration. La configuration gnre par Centreon est valide du point de vue de Nagios. On peut lintgrer sans mal dans un nouvel outil. En revanche, les liens de templates lui sont spcifiques et ils sont donc perdus ; et avec eux, la gestion des mises jour simples des services. Les administrateurs se retrouvent face un nombre important de services non factoriss. Leur travail de refactorisation est important. Les risques derreur sont levs lors de cette phase. Heureusement, au vu des qualits de Centreon, ce genre de situation na que peu de chances de se produire.
Cette possibilit permet un plus grand nombre dadministrateurs de dfinir des commandes ou des variations de commandes existantes. Ils nont pas connatre lemplacement physique des commandes pour les tester. Une option de Centreon permet de lancer les commandes avec largument -h, qui sert demander la documentation de la sonde. Ladministrateur a alors toutes les informations ncessaires pour tester et configurer efficacement sa nouvelle vrification.
322
323
fournir un rsultat passif ; dsactiver ou ractiver les notifications de llment ; prendre en compte lalerte ; planifier une priode de maintenance.
On peut fournir des commandes Nagios sans pour autant devoir accder un shell sur le serveur de supervision. La syntaxe des commandes ntant pas vidente, le passage par une page web est le bienvenu. Nous pouvons voir ci-aprs une capture dcran de linterface de visualisation de lensemble des alertes, ainsi quune alerte particulire.
Figure 114
Figure 115
324
Pour information, linterface web de Nagios utilise encore ce jour le fichier Il nest pas conseill de lutiliser comme console de supervision constamment affiche sur un cran. Sa charge, en termes de temps de calcul CPU, est assez importante. Cest lune des raisons pour lesquelles elle nest pas traite dans cet ouvrage.
325
tre exportes : les formats grs sont le CSV et le XML. Ces donnes peuvent tre utilises par dautres outils ou tre remontes, par exemple, comme preuve la direction. Heureusement, cette recherche ne seffectue pas directement dans les fichiers journaux de Nagios, qui rallongeraient dautant la recherche quils peuvent tre volumineux. la place, toutes les 5 minutes, le programme /usr/local/centreon/bin/ logAnalyser analyse le fichier journal de Nagios. Il en extrait les informations quil dpose en base de donnes. Ce script permet galement darchiver dans /usr/local/ nagios/var/archives les anciens fichiers journaux de Nagios. Les recherches tant effectues en base de donnes, elles sont trs rapides. Elles profitent des possibilits de filtrage des requtes SQL.
Restrictions daccs
Les informations de supervision ne sont pas publiques. Elles peuvent contenir des donnes confidentielles. Certaines politiques de scurit sont ncessaires.
326
perdre du temps inutilement dterminer si llment impact est de sa responsabilit ou non. Les notifications sont envoyes uniquement aux personnes responsables des lments : la vue dans la console doit faire de mme.
Un administrateur form rgle ce problme trs rapidement. Il ne se serait pas trouv dans une telle situation. Si aucune personne capable de rgler le problme nest prsente, la supervision devient indisponible et peut conduire une situation critique. Des lments rencontrent des problmes sans que personne ne puisse les dtecter avant les utilisateurs. Les accs en modification doivent tre rservs aux personnes qui y sont formes. Une formation, mme sommaire, peut suffire. Tous les champs ne sont pas intressants pour les administrateurs. Ceux-ci souhaitent le plus souvent changer les paramtres des commandes lances. Sils savent quils ne doivent toucher qu ce champ, les risques sont amoindris. Ils ne doivent avoir accs qu des lments dont ils sont responsables. Un administrateur systme na pas changer un paramtre sur une sonde vrifiant un lment rseau. Mme avec les meilleures intentions du monde, cela ne peut conduire qu des problmes.
327
Suivant les groupes dun utilisateur, il pourra avoir accs certaines parties de linterface et pas dautres. Sa vision sera limite aux nuds et services qui le concernent. Une application simple de ce principe consiste dfinir des utilisateurs ayant seulement le rle de pupitreur. Ils ne peuvent pas accder la partie configuration des lments. Ils peuvent observer les alertes des nuds qui les intressent, mais ne voient pas le reste des lments dfinis dans Nagios. Accs aux pages de linterface Les possibilits de filtrage sont regroupes dans des grandes familles que lon peut inclure ou exclure facilement : home : vue globale des tats des lments ; monitoring : vue prcise des erreurs ; views : accs la partie mtrologie ; reporting : partie rserve au reporting de Centreon ; configuration : partie concernant la configuration de Nagios et des lments qui sy trouvent ; administration : partie concernant ladministration de Centreon. Visibilit sur les lments Les lments visibles et modifiables sont galement disponibles. La slection peut se faire sur des groupes de machines, des htes ou bien des services, que lon peut inclure ou exclure. Cette fonctionnalit permet de filtrer trs finement laccs. Il est important de noter que ces accs sont dcorrls des notifications de Nagios. Les administrateurs peuvent recevoir une alerte de ce dernier sans pour autant avoir les autorisations daccs llment dans la console. Ce type de configuration est fortement dconseill : les administrateurs risquent de se sentir lss par la solution. La partie administration doit tre rserve aux administrateurs de Centreon. Les autres utilisateurs nont pas y avoir accs. Ils pourraient y faire des modifications empchant le bon fonctionnement de Centreon. La partie configuration peut tre laisse aux administrateurs ayant t forms Nagios. Ils peuvent changer directement la configuration pour la supervision des lments qui les concernent sans avoir demander systmatiquement lintervention de ladministrateur Nagios. Il est conseill de leur faire tester la configuration par Nagios avant de le relancer, car les modifications de configuration sont rarement bonnes du premier coup.
328
Le script appel est /usr/loca/nagios/libexec/process-service-perfdata. Il crit simplement dans le fichier service-perfdata les donnes passes en arguments :
/usr/loca/nagios/libexec/process-service-perfdata
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
329
O :
1232884634 : est la date de la donne, exprime en temps Unix. Ici le dimanche
25 janvier 2009 12h57. srv-web1 :est le nom de lhte. Reboot : est le nom du service. OK: uptime=8028213s : est le texte de retour de la sonde. OK : est le code retour de la sonde? uptime=8028213s : est la donne de performances utiliser pour le graphique.
Le module CentStorage est un programme crit en Perl tournant en tche de fond. Il utilise le compte nagios pour fonctionner et il a pleinement accs au fichier service-perfdata. Par dfaut, le programme CentStorage est situ dans /usr/ local/centreon/bin/.
330
des donnes. Ladministrateur peut observer les donnes sur les dernires heures, les derniers jours ou la dernire anne. Il peut galement observer les donnes sur une priode particulire. Les donnes sont de plus en plus agrges au fil du temps. Cette fonctionnalit ne peut tre utilise avec des informations prcises que sur des donnes rcentes, comme sur les tous derniers jours par exemple. Voici un exemple despace disque consomm sur un serveur au cours des derniers mois :
Figure 116
Sur cette courbe, nous observons une forte augmentation de lespace occup sur le disque F: (courbe gris clair). Si lvolution continue ce rythme, dans deux mois, le disque sera plein. Les administrateurs doivent prendre des mesures rapidement sous peine de devoir trouver de lespace disque en urgence.
331
Cette mthode ntait pas trs pratique. Il fallait lancer cette commande pour chaque fichier MIB, ce qui na rien de simple. Toutes les alertes du fichier arrivaient un mme service dans Nagios, et ce mme si les informations taient destines des contacts diffrents. Il ntait pas possible de dfinir plusieurs services pour plusieurs contacts. Tous devaient tre relis au mme service TRAP et tous recevraient les alertes. Ce manque de souplesse explique en grande partie pourquoi les traps SNMP ne sont que peu dploys dans le cadre dun Nagios simple. Les administrateurs nont pas particulirement envie de passer leur temps compiler des MIB en ligne de commande pour obtenir des informations trop globales leur got.
332
la configuration de SNMPTT : chaque OID aura sa propre entre. Les messages des alertes et un appel au script /usr/local/nagios/libexec/traps/trapHandler y figurent. Ce script, fourni par Centreon, est charg denvoyer ces alertes Nagios.
se
Les arguments de trapHandler sont des macros de SNMPTT. Tout comme dans le cas de Nagios, elles sont modifies lorsque la commande est envoye. Elles signifient respectivement : $aA : adresse IP de lmetteur, $A : nom de lmetteur, $o : OID de lalerte SNMP envoye. Avec ces informations, trapHandler peut rechercher le service mettre en alerte. Une fois que ladministrateur a dfini les OID dans Centreon, il peut les associer un service. Cette association se fait dans la base de donnes de Centreon. Nagios nen a aucune connaissance. Cette fonctionnalit permet de dfinir plusieurs services pour des alertes diffrentes. Les fichiers MIB ne sont plus vus comme un bloc, mais bien comme une collection dalertes dans laquelle les administrateurs pourront piocher souhait. Pour savoir qui alerter, trapHandler parcourt ces relations dfinies en base de donnes. Sil trouve, pour la machine qui a envoy lalerte, un service accroch lOID mis, il gnre alors une alerte passive pour ce service. Pour cela, il crit simplement dans le fichier nagios.cmd avec lappel :
Envoi dun rsultat Nagios
/bin/echo "[$datetime] PROCESS_SERVICE_CHECK_RESULT;$this_host;$this_service;$status;$argument s_line" >> $conf[0]
La valeur $conf[0] est le fichier nagios.cmd. Nagios recevant une alerte passive, il lve les notifications requises au besoin, comme pour nimporte quelle alerte passive. Le fonctionnement global est illustr sur le diagramme suivant :
333
Centreon permet dassocier simplement, et en passant uniquement par son interface graphique, des OID et des services. Les administrateurs nont plus besoin de compiler la main les MIB ni dcrire la configuration des fichiers SNMPTT pour chaque service : le gain de temps est donc trs important.
334
Dans Centreon, chaque Nagios possde ses propres fichiers de configuration nagios.cfg et ndomod.cfg. Le serveur Centreon, quant lui, dispose en plus dun fichier ndo2db.cfg utilis par ndo2db. Ce dernier rceptionne les messages des Nagios distants et envoie les informations dans une base de donnes. Cette base est ensuite lue par Centreon pour afficher les informations aux utilisateurs. Cest le mme fonctionnement qui est utilis dans le cadre dun Nagios simple mais, ici, chaque Nagios distant a son identifiant en base.
Une fois ces relations dfinies, Centreon gnre la configuration de chaque poller. Celle-ci se compose des fichiers nagios.cfg et ndomod.cfg, mais galement des fichiers de tous les lments superviser et ce qui y est raccroch. Seuls les lments devant tre superviss par le poller sont gnrs. La configuration globale est rpartie sur lensemble des pollers. Lensemble des contacts et des commandes figurent dans les configurations distribues. Les serveurs distants devant lancer les vrifications et avertir les administrateurs, ils ont besoin de ces informations.
335
Figure 118 La gestion des donnes de performances dans le cas dune architecture distribue
336
Les administrateurs nont pas se proccuper de lintgration des donnes de performances lorsquils disposent dune architecture distribue. Leur travail en est grandement facilit.
En un mot
Les outils daide la supervision peuvent recler des piges que les administrateurs doivent connatre : il est courant de voir des personnes mettre en place une solution complte et penser quavec une interface graphique, ils nont pas concevoir les mthodes de supervision. Ces outils sont nanmoins trs utiles, ils induisent un gain de temps ne pas ngliger. Parmi eux, Centreon est une rfrence. Il soccupe de nombreux aspects de la solution comme la supervision, la configuration, la gestion des alertes SNMP (traps) ou encore la mtrologie. Il facilite grandement la mise en place denvironnements distribus.
12
Au-del de la supervision : cartographie et reporting
Une fois les informations de supervision recueillies, il peut tre important de les prsenter sous diffrentes formes, que les donnes soient utilises immdiatement ou agrges pour tre intgres dans des indicateurs.
338
339
340
Dans ces deux situations, les informations quil est possible de fournir ne sont pas identiques, comme nous allons le voir par la suite. Que ce soit sur le fond ou la forme, les deux types dcrans ne prsentent pas les mmes niveaux dinformation. Il est important que les crans des administrateurs ne soient pas visibles de tout le monde. Les responsables eux-mmes ne devraient pas les avoir sous les yeux en continu. Dans la majorit des cas, ils ne peuvent pas prendre le recul suffisant pour interprter les informations reues de Nagios. Ce ne sont pas eux qui ont dfini les services et les seuils de criticit. Ils ne devraient venir voir ces crans que lorsquun indicateur est pass en orange ou en rouge sur les crans publics. Une fois avertis dune application posant problme, ils peuvent demander un administrateur ce qui se passe. Bien souvent, ce dernier peut alors montrer lcran o linformation est clairement affiche.
341
Les vues utilisateur doivent tre exposes au regard de tous ; elles dmontrent ainsi une volont de transparence de la part du service informatique plus forte raison quand celui-ci a mauvaise rputation. Les administrateurs sont gnralement vus comme des personnes peu sympathiques, sexprimant en des termes sotriques pour la majorit des personnes. Ils sont responsables de tous les maux survenant sur le systme dinformation. Bien souvent, ils sont mme accuss de faire de la rtention dinformation quant la disponibilit des applications. Avec un tel systme dcrans, tout le monde peut savoir dans quel tat se trouvent les applications. Il nest pas utile dafficher des indicateurs trop hermtiques aux utilisateurs, comme les charges des machines ou les espaces disque. Cest laccessibilit des applications qui doit tre linformation principale et visible comme telle. Quant aux niveaux de fonctionnement dgrads, ils peuvent certes tre reprsents sur ces crans mais sans tre considrs comme critiques. Un utilisateur ou un directeur passant par l et voyant une croix rouge ct du nom dune application pense immdiatement quelle nest pas disponible du tout. Si lindicateur est orange, il comprend, sans que personne ne lui donne la notice dexplication, que des problmes existent mais quils ne mettent pas en pril lutilisation de lapplication.
342
dun cluster est galement importante. Les utilisateurs ont toujours accs aux applications, mais les administrateurs doivent rgler les problmes le plus rapidement possible avant quils ne se propagent. Ces crans permettent aux administrateurs de faire leur contrle matinal bien plus rapidement. Ils peuvent bien sr aller vrifier les notifications quils ont reues pendant la nuit, mais un cran leur montre ltat actuel. Un cran rempli de vert est bon signe : il ny a pas derreur importante. Ils peuvent se concentrer sur des actions moins importantes que remettre en marche la production.
REMARQUE Des diffrences entre les crans pour administrateurs et pour utilisateurs
Il est intressant de remarquer que les administrateurs souhaitent des crans bien diffrents de ceux des utilisateurs. Ils tendent vers une vision conceptuelle de leur architecture. A contrario, les utilisateurs veulent des informations basiques limites aux applications. Ces diffrences illustrent bien les diffrents points de vue entres ces deux mondes.
Les flux entre les applications sont galement des informations quil est possible dafficher. Les administrateurs peuvent, en arrivant le matin, tout comme pour ltat des applications, savoir si les traitements importants de la nuit se sont bien passs. Cette vrification a le mrite dtre immdiate.
Les administrateurs doivent identifier parmi les leurs un nombre raisonnable dlments afficher. Sils ne sont pas capables de le faire, cest quils nont pas t capables de bien ordonnancer leur criticit pour les notifications. Il faut alors leur expliquer comment procder.
343
Cela permet de crer une hirarchie de cartes. Une conception du gnral au particulier est recommande. Le systme dinformation doit tre reprsent dans son ensemble. Nous le dcoupons en applications principales. Celles-ci peuvent tre redcoupes gographiquement si besoin. La figure 12-2 montre un exemple de hirarchie de cartes.
Figure 122
Plus on descend dans larbre des cartes, plus on entre dans le dtail. Les responsables nont pas besoin davoir les cartes prcises sous les yeux. Une vue plus haute leur suffit gnralement. Deux hirarchies parallles sont utilises : une pour les crans publics ; une autre pour les crans des administrateurs. La vue des administrateurs est plus prcise que celle des utilisateurs. Elle comporte bien plus derreurs. Si cette vue se situait en-dessous, hirarchiquement, de celle des utilisateurs, ces derniers observeraient des erreurs quils ne devraient pas voir. Un autre arbre parallle au premier est ncessaire. Les donnes ne sont pas lies un arbre, mais peuvent tre affiches dans plusieurs arbres simultanment. Il ny a donc pas de problme de duplication de donnes.
PRATIQUE Un nombre variable de hirarchies
Nous conseillons deux hirarchies afin de bien sparer les vues utilisateur et administrateur. Ce nombre ne constitue pas une limite haute. Si des vues reprsentent une vision plus prcise dun pan du systme dinformation et quelles ne sont destines qu certains utilisateurs, alors elles peuvent former leur propre hirarchie.
344
Diffrents types de vues sont possibles. Ils vont dpendre de ce que Nagios est capable de superviser. Ses possibilits sont grandes ; par exemple il est possible de faire figurer des indicateurs qui ne sont pas du tout techniques (par exemple, indicateur issu dune sonde alertant un financier sur la chute dun cours de bourse, etc.). De manire gnrale, on peut distinguer trois types de cartes : physique : reprsentation des serveurs ou des lments rseaux ; logique : reprsentation des applications ; gographique : liens rseau entre les pays, par exemple. Les administrateurs peuvent reprsenter facilement des indicateurs pour des personnes peut enclines recevoir des alertes par e-mail. Elles peuvent avoir un tat des lieux des informations importantes en levant la tte.
345
Ces images de fond doivent tre sobres. Si elles fourmillent de dtails, on a du mal y retrouver les informations importantes. Des diagrammes avec des couleurs ples sont trs adapts ce genre de cas. Ils peuvent reprsenter facilement les diffrentes couches des applications.
GRAND COMPTE Sur une carte du monde...
Les situations gographiques peuvent galement tre prises en compte. Une simple carte du monde avec peu de couleurs et quelques indicateurs reprsentant la connectivit des filiales suffit. Cette carte est interprte par tout le monde comme ltat des liens entre les pays. Le titre de la page nest mme pas ncessaire.
La cration des cartes se fait directement depuis son interface web. Cette tape est intuitive. Les fonctionnalits Javascript font que la dfinition dun lment et son placement sont faciles.
346
Si les premiers lments sont clairement dfinis, le dernier ncessite quelques explications. Il permet dobtenir une hirarchie entre les cartes. Un tat est associ chaque carte, correspondant ltat le plus grave des lments quelle contient. Si une carte contient un hte qui est en tat DOWN, alors elle est en tat critique. Les informations peuvent ainsi tre remontes aux niveaux suprieurs. Si les niveaux les plus levs sont verts, cest que tous les indicateurs dfinis en-dessous le sont galement.
347
De nombreux modles sont mis disposition par la communaut. Ils peuvent tre adapts librement.
348
ndomy ; ndo2fs.
349
peut tre utile dans le cas o lon ne souhaite pas mettre en place de base Si lon nutilise pas Centreon, la base de donnes nest quune gne pour obtenir les informations. Avec ndo2fs, un simple rpertoire suffit contenir les informations de Nagios et les prsenter au reste du monde.
ndo2fs MySQL.
Seules certaines donnes sont gres par ce module. Voici la liste des donnes conserves : les vrifications dhtes (check) ; les changements dtat (statechange) ; les tats des nuds (host_status) ; les contacts (contact_status) ; les tats des services (service_status) ; les commentaires (comment) ; les fichiers de configuration principaux (main_config) ; les prises en compte dincidents (acknowledgement) ; la sauvegarde des tats entre les redmarrages (retention) ; la configuration des objets (object_config) ;
350
les priodes de maintenance (downtime) ; ltat du processus Nagios actuel (program_status) ; les vrifications de services (service_check) ; lhistorique des anciens processus Nagios (process).
Ladministrateur souhaitant utiliser uniquement ndo2fs peut dfinir le paramtre data_processing_options de ndomod la valeur 32259009. Les fichiers gnrs sont rpartis dans deux rpertoires : PERSISTENT : toutes les donnes qui se conservent la fermeture de Nagios, comme les fichiers de journalisation ; VOLATILE : les informations temporaires. Le second rpertoire, VOLATILE, est le plus intressant. Cest dans celui-ci que se trouvent les donnes utilises par NagVis. Il est organis en rpertoires pour chaque instance de Nagios. Les rpertoires disponibles sont : auth : liens entre les contacts, les htes et les services ; contactgroups : liste des contacts dans les groupes ; contacts : liste des contacts ; hostauth : liens entre les contacts les htes ; hostgroups : liste des nuds dans leurs groupes ; hosts : liste des htes ; serviceauth : liens entre les contacts et les services ; servicestate : tats des services. Quatre fichiers sont la racine de linstance : mainconfig : paramtres du fichier de configuration principal ; process_status : historique des anciens processus Nagios ; program_status : tat du processus Nagios actuel ; runtimevars : statistiques de la configuration de Nagios. La consommation despace des fichiers de la partie VOLATILE est constante lors dune excution de Nagios. titre dexemple, une configuration de 6 000 services consomme environ 110 Mo. Il est conseill de placer ce rpertoire directement en mmoire. Pour cela, il suffit de le faire pointer vers le rpertoire /dev/shm sous Linux.
PERFORMANCE Une consommation raisonnable
La majorit des processus nagios grent entre 3 000 et 6 000 lments. Mme pousse lextrme avec les 40 000 services dfinis dans le chapitre 9, la consommation de lespace de ndo2fs reste acceptable aux vu des capacits mmoire des serveurs actuels.
351
La configuration de la partie ndo2fs au sein de NagVis est plus simple que celle de ndomy : path : chemin vers les fichiers de ndo2fs ; dbinstancename : nom de linstance Nagios utilise ; maxtimewithoutupdate : temps dinactivit dinstance partir duquel NagVis affiche une erreur, gnralement 180 secondes. La charge de ndo2fs est plus faible que celle de ndo2db. Nayant pas grer toute une base de donnes, cette solution consomme moins de ressources CPU. Elle nest pas adapte pour les analyses sur le long terme des informations. Il est conseill de linstaller en mmoire afin den maximiser les performances. Les informations des lments sont directement accessibles selon leur nom grce la hirarchie de ndo2fs. NagVis nayant pas besoin deffectuer une requte pour obtenir les informations, la charge est limite. Si les informations sont en mmoire, la charge est mme minimale.
352
353
Sur le long terme, une alerte na que peu dimportance. Si elle est trs ge, le problme est srement rsolu. Il en est de mme pour la mtrologie. Une valeur ancienne a peu dintrt. Cest pour cette raison que la mtrologie est agrge afin de fournir les variations sur le long terme. La supervision doit galement faire lobjet dagrgations. Cest le rle du reporting des alertes. Si une moyenne du nombre dalertes est disponible pour chaque environnement, il est possible de dtecter ceux qui ont le plus de difficults.
PSYCHOLOGIE Superviser les administrateurs ?
Encore plus que pour la supervision en temps rel, les administrateurs peuvent trs mal prendre les rsultats prsents ici. Il faut faire particulirement attention ce que les moyennes sur les environnements ne soient pas interprtes comme des moyennes sur les personnes. Les valeurs recueillies par les outils que nous allons voir ne doivent pas tomber entre toutes les mains.
Lorsque les administrateurs reoivent au jour le jour les alertes, ils ne peuvent pas prendre un recul suffisant pour apprcier au mieux les points faibles des environnements. Ces sujets sont en outre trs sensibles, et peu dadministrateurs sont objectifs lorsquil sagit de leurs serveurs. Un calcul effectu de manire totalement objective permet dviter ce genre de problmes. Une fois les environnements reprs, les efforts damlioration peuvent se concentrer dessus. La supervision passe un stade suprieur. Reste dfinir ces calculs prcisment et comment les mettre en place.
354
Dans le second cas, les occurrences de performances dgrades sont prises en compte. Ces indicateurs sont plus complexes mettre en place. Leur interprtation nest pas vidente non plus. Si le service informatique est soumis contrat avec les autres services, les taux acceptables ont dj t discuts. Suivant que les contraintes aient t fortes ou non, suivant la ralit des chiffres, les parties peuvent se remettre daccord sur des valeurs plus acceptables. La limite du taux de disponibilit des applications est plus simple dfinir que celle des performances dgrades. Les utilisateurs ne comprennent pas quun systme peut tre disponible mais plus lent que la normale. L encore, les taux peuvent tre remanis pour coller au plus prs de la politique de lentreprise. Si les informations ne sont utilises quen interne dans le service, la pression de ces chiffres est moindre. Les rsultats permettent de savoir si des investissements particuliers sont ncessaires. Par exemple, si la disponibilit de lapplication est trs bonne, mais que son taux de performances dgrades est lev, des amliorations sont prvoir. Si les pertes sont dues une faiblesse dun nud du cluster, lajout dun membre est envisageable.
RAPPEL Une couleur part : lorange
Si, en matire de supervision, les couleurs vertes et rouges sont simples comprendre, lorange est plus sujet interprtation. Tout le monde linterprte comme quelque chose va mal . Au regard de leurs expriences respectives, les utilisateurs pensent un problme de disponibilit sur un module particulier alors que les administrateurs pensent un ralentissement.
355
En un mot
Les administrateurs ont souvent besoin dobserver ltat des indicateurs les plus importants de leurs systmes. Des crans de supervision placs dans leur bureau constituent un lment incontournable de la solution. NagVis permet de rcuprer les informations de Nagios et de les prsenter de manire agrable. Le choix des informations y placer nest pas si simple. Suivant la personne qui regarde les crans, les alertes peuvent ne pas tre interprtes de la mme manire. Les crans publics doivent tre conus avec un trs grand soin. Les solutions de reporting ne sont pas en reste. Elles font pleinement partie de laspect processus du projet. Centreon propose un module relativement complet.
13
Compilation et installation de Nagios, Centreon et NagVis
Passons enfin la mise en place des outils tudis ! Voyons comment, en partant dun systme vierge, nous pouvons arriver une solution pleinement fonctionnelle.
358
du temps. Nul besoin de connatre par cur toutes les options des programmes puisque le dveloppeur qui a compil et empaquet le programme a dj fait le choix des options, qui permettent dutiliser le programme dans le maximum de situations. Hlas, en de rares occasions, ces choix ne sont pas adapts aux besoins de ladministrateur.
EXEMPLE Inclusion de linterprteur Perl dans le paquet
Par exemple, une poque, il ntait pas possible de choisir dutiliser ou non linterprteur Perl intgr Nagios. Ce choix tait fait lors de la compilation. Si un script ne passait pas la phase de compilation interne, il tait lanc avec linterprteur Perl du systme. Chaque lancement demandait une compilation interne voue lchec, qui dgradait les performances. Suivant le choix du crateur du paquetage, linclusion ou non de linterprteur Perl pouvait correspondre ou non aux besoins de ladministrateur.
Cette mthode lui permet de choisir ses propres options de compilation. Si une fonctionnalit de loutil ne lintresse pas, il peut ne pas lintgrer. Ceci permettra notamment de diminuer les ressources ncessaires au programme.
PERFORMANCE Un gain minime
Le principal gain dans la suppression dune option de compilation est la mmoire. Nous avons vu que la consommation de Nagios sur ce point est trs raisonnable. Le gain esprer est donc minime.
359
place Nagios, Centreon, NagVis et Nareto (un outil de reporting) en une seule installation. Elle a de plus lavantage de proposer un environnement dj configur. Les administrateurs nont plus qu rajouter leurs lments superviser. Cette distribution avance rapidement et elle est promise un grand avenir dans le monde de la supervision Open Source. Elle va devenir sans lombre dun doute la rfrence pour la mise en place dune solution complte de supervision base sur de Nagios.
COMMUNAUT Histoire de FAN
Initi par Cdric Temple dbut 2008 pour rpondre des besoins quotidiens dadministration, le projet FAN, Fully Automated Nagios, est une distribution GNU/Linux ddie la supervision base sur Nagios et son formidable cosystme. Les auteurs ont cout les demandes de nombreux utilisateurs pour btir une solution complte qui comprend les principaux plug-ins de Nagios, linterface de configuration Centreon pour la configuration, NagVis pour la visualisation agrge des problmes, ou bien encore NaReTo pour le reporting arborescent. Son objectif principal est de fournir tout cela en moins de 20 minutes avec la mme simplicit dinstallation que pour nimporte quelle autre distribution.
Lors de cette installation, nous allons mettre en place tous les outils voqus jusqu maintenant. Lordre de mise en place est important : Centreon a besoin de NDO pour fonctionner ; ce dernier a besoin dun Nagios fonctionnel. Les grands principes dinstallation de logiciels ayant t traits, il est temps de se concentrer sur le cas de notre solution de supervision.
360
Les sources se prsentent sous la forme dun fichier tar.gz de 2.5 Mo. Il est ncessaire de transfrer le fichier sur le serveur choisi par ladministrateur. Pour cela, on peut utiliser le logiciel winscp, disponible librement. Une fois le fichier transfr, ladministrateur doit dcompresser les sources.
Dcompression des sources de Nagios
tar xvfz nagios-3.1.0.tar.gz
Pr-requis de Nagios
La compilation de Nagios demande un compilateur. Le plus adapt cette situation est le compilateur roi du monde Open Source : gcc. Le programme make est galement ncessaire.
Installation des outils de dveloppement
yum install make gcc
La premire phase permet ladministrateur de slectionner les composants intgrer loutil, mais aussi les chemins de fichiers. Le script configure gnre les options de compilation pour la suite des oprations. La seconde tape lance la compilation proprement parler. Cette phase peut tre relativement longue suivant le programme.
361
La dernire phase dploie le programme compil ainsi que tous ses fichiers dans les rpertoires choisis par ladministrateur. Phase de configuration Le programme configure possde de nombreuses options. Ladministrateur peut en dresser la liste avec loption -help. Voici les options principales de ce script pour la compilation de Nagios : --prefix : chemin principal de linstallation. Par dfaut, /usr/local/nagios. --libexecdir : chemin des sondes. Par dfaut, $prefix/libexec. --sysconfdir : chemin des fichiers de configuration de Nagios. Par dfaut, $prefix/etc. --localstatedir : chemin pour les fichiers temporaires de Nagios. Par dfaut, $prefix/var. --enable-nanosleep : active la fonction nanosleep au sein de Nagios. Celle-ci permet lordonnanceur dtre plus prcis. --enable-event-broker : active les fonctions devent broker. --enable-cygwin : permet des administrateurs tmraires de mettre en place un systme Nagios sous Windows. --with-nagios-user : utilisateur de lapplication, habituellement nagios. --with-nagios-group : groupe de lutilisateur de lapplication, habituellement nagios. --with-checkresult-dir : chemin des fichiers rsultats des commandes de vrification, habituellement $prefix/var/spool/checkresults. --enable-embedded-perl : active linterprteur Perl interne. --with-perlcache : active le cache Perl vitant de compiler les scripts chaque lecture. CFLAGS : permet de spcifier des options de compilations au programme GCC. Dans linstallation que nous allons mettre en place, nous allons utiliser les chemins par dfaut de Nagios. Le programme sera install dans /usr/local/nagios. La configuration sera dans /usr/local/nagios/etc, les sondes dans /usr/local/nagios/ libexec, le binaire nagios sera dans /usr/local/nagios/bin et enfin les fichiers temporaires de Nagios seront dans /usr/local/nagios/var. La fonction nanosleep permet Nagios dtre plus prcis dans lordonnancement des vrifications. Sans elle, il est contraint dutiliser la fonction sleep qui permet seulement dattendre un nombre entier de secondes, contrairement nanosleep qui permet des attentes de lordre de la milliseconde.
362
Dans notre installation, le module NDO aura une importance prpondrante. Il utilise les fonctionnalits obligatoires devent broker de Nagios. Le cache Perl est dune importance primordiale si ladministrateur souhaite utiliser linterprteur intgr. Sans le cache, le gain de linterprteur est nul, voire ngatif. Grce au cache, Nagios nest pas oblig de compiler les scripts Perl chacun de leurs lancements. Sils sont appels souvent, le gain est trs important. Les options par dfaut de GCC activent les options de dbogage et une optimisation modre des programmes. Si ladministrateur na aucune ide du rle du programme gdb, les options de dbogage ne sont pas ncessaires. Quant aux options de compilation, il est conseill dopter pour des valeurs maximales. Les options de GCC deviennent alors -O3 (optimisation niveau 3). Lutilisateur nagios devant faire fonctionner lapplication nexiste pas encore. Pour lajouter, il faut lancer la commande :
Ajout de lutilisateur nagios
adduser nagios passwd nagios
Si aucun message derreur nest affich, la configuration de la compilation est prte. Phase de compilation Pour lancer la compilation, il faut faire appel au programme make. Ce dernier utilise le fichier Makefile gnr par la commande configure et prend en argument les objets compiler. Le plus simple est dutiliser largument all permettant de compiler tous les objets. La commande make prend galement en argument -j le nombre de processus parallles de compilation. Si le serveur possde plusieurs processeurs, ladministrateur a tout intrt utiliser cette fonctionnalit. Placer une valeur lgrement suprieure au nombre de processeurs est optimal. Pour lancer la compilation de Nagios sur une machine bi-processeur, il suffit de lancer :
363
Aprs lexcution dune longue srie de commandes sotriques, la commande rend la main. Elle annonce firement par un *** Compile finished *** que la compilation est russie. Phase dinstallation On doit ensuite lancer les commandes suivantes : make install : cre le rpertoire /usr/local/nagios et y installe le binaire nagios ; make install-init : installe le script nagios dans /etc/init.d pour le lancer en tant que service ; make install-commandmode : cre le rpertoire contenant le fichier de commandes externes de Nagios ; make install-config : installe des exemples de fichiers de configuration dans /usr/local/nagios/etc ; make install-webconf : ce lancement optionnel installe les fichiers de configuration pour Apache dans /etc/httpd/conf.d. Une fois toutes ces commandes excutes, Nagios est install. Tous les fichiers indispensables au fonctionnement de Nagios sont situs dans le rpertoire /usr/local/nagios. Dplacer un Nagios simple sur un nouveau serveur consiste simplement copier ce rpertoire.
Compilation de NDOUtils
NDOUtils est indispensable la communication des informations au sein de la solution : cest son tour dtre install.
364
Les options de configure sont les suivantes : --prefix : mme sens que pour Nagios ; --enable-mysql : utiliser les bases MySQL pour ndo2db ; --enable-pgsql : utiliser la place les bases PostgreSQL ; --with-ndo2db-user : utilisateur faisant fonctionner ndo2db ; --with-ndo2db-group : groupe de lutilisateur ci-dessus. Dans notre situation, nous allons privilgier une base sous MySQL. Cest la seule gre par Centreon que nous installerons plus tard. La compilation de NDO demande les bibliothques de dveloppement de MySQL. Pour cela, il faut installer le paquetage mysql-devel :
Installation des bibliothques de dveloppement pour MySQL
yum install mysql-devel
Une fois la compilation effectue, il faut crer la base de donnes dans laquelle ndo2db va envoyer ses informations. Nous allons nommer cette base nagios. Le programme ndo2db a besoin dun compte pour y accder la base : le compte cr est nagios.
365
La base est cre mais ne possde aucune table utilise par NDO. Les sources de NDOutils comportent toutefois un rpertoire db. Le script installdb quil contient permet de crer automatiquement les tables :
Installation de la base nagios
installdb -u nagios -p superpass -h localhost -d nagios
Le script ne trouvant pas les tables de NDO dans la base, il procde leur cration :
Rsultat de linstallation
DBD::mysql::db do failed: Table 'nagios.nagios_dbversion' doesn't exist at ./installdb line 51. ** Creating tables for version 1.4b7 Using mysql.sql for installation... ** Updating table nagios_dbversion Done!
366
La premire ligne est une erreur normale. Elle rsulte de labsence de la table nagios_dbversion.
Installation de NDO
Une fois la base prte, il est temps de passer aux binaires, qui sont situs dans le rpertoire src. Le module ndomod est constitu du fichier ndomod-3x.o. Ndo2db, quant lui, correspond au fichier ndo2db-3x. La dnomination -3x sert diffrencier les versions 2 et 3 de Nagios. Elle nest pas utile dans notre mise en place actuelle. Linstallation des fichiers est simple :
Mise en place de NdoMod et Ndo2db
cp ndomod-3x.o /usr/local/nagios/bin/ndomod.o cp ndo2db-3x /usr/local/nagios/bin/ndo2db
Les seuls fichiers manquants sont les fichiers de configuration des deux binaires. Ils sont situs dans le rpertoire config. Il suffit de les copier dans le rpertoire /usr/ local/nagios/etc.
Mise en place des fichiers de configuration
cp ndomod.cfg /usr/local/nagios/etc/ cp ndo2db.cfg /usr/local/nagios/etc/ chown nagios:nagios /usr/local/nagios/etc/*cfg
Le script configure possde beaucoup doptions. Les principales sont : --prefix : chemin de linstallation de Nagios ; --with-ipv6 : utiliser les capacits IPv6 des sondes ; --with-ping-command : commande pour ping.
367
Si des WARNING figurent dans la sortie de la commande, certains pr-requis ncessaires des sondes ne sont pas prsents. Par exemple, nous pouvons avoir :
Erreur dans configure sur snmpget
checking for snmpget... no configure: WARNING: Get snmpget from http://net-snmp.sourceforge.net to make check_hpjd and check_snmp plugins
Cela signifie que la commande snmpget nest pas disponible sur le systme. Pour linstaller, ainsi que tous les utilitaires SNMP, il faut lancer :
Installation des outils SNMP
yum install net-snmp-utils perl-Net-SNMP
Il faut alors relancer le script configure. La ligne WARNING disparat et les sondes utilisant SNMP sont prises en compte. La commande make
Compilation des sondes
make all -j3 all
La commande
make install
/usr/local/
nagios/libexec.
Toutes les sondes disponibles ne sont pas installes. Certaines sont entreposes dans le rpertoire contrib : elles sont en phase dacceptation dans la branche principale. La plupart sont des scripts Perl. Les sources C doivent tre compiles avant dtre utilises. Pour cela, ladministrateur doit utiliser make. Par exemple, pour compiler le fichier check_cluster2.c :
368
/usr/local/nagios/libexec
Installation de Centreon
Les briques de base tant en place, ladministrateur peut se concentrer sur les outils visant parfaire la solution. Centreon est le premier tre install.
Pr-requis linstallation
Une fois installs Nagios, les modules ndomod et ndo2db, il est temps de mettre en place Centreon. Il faut bien lavouer, cette mise en place nest pas des plus courtes. Elle nest pas complexe, mais repose sur de nombreux pr-requis. Les plus importants sont : Nagios ; les sondes ; Apache ; MySQL ; PHP 5 ; GD ; sudo ; RRDTool 1.2 ; la bibliothque net-snmp. Pour cela, il faut lancer la commande :
Installation des prrequis Centreon
yum install php gd gd-devel rrdtool net-snmp sudo httpd
369
Toute linstallation se fait travers le script install.sh. Ce dernier pose des questions ladministrateur. Sil valide loption sans saisir de valeur, la valeur par dfaut, situe entre crochets [], est utilise. Nous dressons ci-dessous la liste des questions pour lesquelles ladministrateur ne doit pas laisser les valeurs par dfaut :
Lancement de linstallation de Centreon
./install.sh -i Do you accept GPL license ? [y/n], default to [n]: y Do you want to install : Centreon Web Front [y/n], default to [n]: y Do you want to install : Centreon CentCore [y/n], default to [n]: y Do you want to install : Centreon Nagios Plugins [y/n], default to [n]: y Do you want to install : Centreon Snmp Traps process [y/n], default to [n]: y Do you want me to create this directory ? [/usr/local/centreon] [y/n], default to [n]: y
370
Do you want me to create this directory ? [/usr/local/centreon/log] [y/n], default to [n]: y Do you want me to create this directory ? [/etc/centreon] [y/n], default to [n]: y Where is the RRD perl module installed [RRDs.pm] default to [/usr/lib/ perl5/RRDs.pm] /usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/RRDs.pm
Suite de linstallation
Do you want me to create this directory ? [/usr/local/centreon/bin] [y/n], default to [n]: y Where is your NDO ndomod binary ? default to [/usr/sbin/ndomod.o] : /usr/local/nagios/bin/ndomod.o Do you want me to configure your sudo ? (WARNING) [y/n], default to [n]: y
371
Il faut ouvrir une nouvelle session shell et diter le fichier /etc/sudoers pour y commenter la ligne suivante :
Ligne qui doit tre commente dans /etc/sudoers
# Defaults requiretty
Elle permet un utilisateur nayant pas de vrai shell de faire appel sudo. Centreon tant une application web, cest le service Apache qui fait appel sudo. Apache fonctionne sans shell. Une fois ceci fait, la suite de linstallation de Centreon peut reprendre.
Do you want to add Centreon Apache sub configuration file ? [y/n], default to [n]: y Do you want to reload your Apache ? [y/n], default to [n]: y
La phase suivante du script met jour les modules de PHP ncessaires Centreon. On utilise pour cela le module PEAR de PHP. Avec une connexion directe, aucun problme ne survient ; dans le cas contraire, il faut rajouter les informations de proxy. Dans un nouveau shell :
Configuration dun proxy pour PEAR
pear config-set http_proxy "http://monuser:monpass@serveur-proxy:3128"
372
Configuration de Centreon
La suite de linstallation passe par les pages web de Centreon, auxquelles on accde par lURL http://192.168.0.5/centreon/ Une fois la licence GPL v2 accepte, les pages de configuration commencent. Pour la page 3, les options entrer sont : Nagios user : nagios ; Nagios group : nagios ; Apache User : apache ; Apache Group : apache ; Nagios Version : 3.x ; Nagios configuration directory : /usr/local/nagios/etc/ ; Nagios plugins : /usr/local/nagios/libexec/ ; RRDTool binary : /usr/bin/rrdtool ; Les pages 4 et 5 vrifient que toutes les options de PHP sont correctement installes. Avec les paquetages que nous avons indiqus jusqu maintenant, il ne devrait y avoir aucun problme sur cette page. La page 6 sert configurer laccs la base de donnes. Deux nouvelles bases de donnes sont ncessaires pour Centreon : centreon : sert stocker les lments configurs par les administrateurs ; centstorage : sert stocker les donnes de performances avant leur intgration en base RRD.
373
Les options configurer sont les suivantes : Root password : mot de passe root pour MySQL, vide sil na pas de mot de passe ; Centreon Database : nom de la base Centreon, indiquer centreon ; Centstorage Database : nom de la base Centstorage, mettre centstorage ; Database Password : un mot de passe pour laccs la base ; Database location : adresse du serveur MySQL, localhost pour la plupart des installations ; Centreon Web Interface location : adresse du serveur Centreon, habituellement localhost ; MySQL Client version : version de MySQL, ici >= 4.1. La page 7 vrifie la connectivit avec la base MySQL. La page 8 permet de configurer le compte administrateur de Centreon : Administrator login : nom du compte administrateur de Centreon, indiquer admin ; Centreon Administrator password : mot de passe de ladministrateur ; Firstname Administrator : prnom de ladministrateur ; Lastname Administrator : nom de ladministrateur ; Email : adresse e-mail de ladministrateur. La page 9 set configurer laccs une base Ldap pour Centreon. Nous ne lutiliserons pas ici. La page 10 permet de vrifier que Centreon a accs en criture /etc/centreon/. Il y gnre ses fichiers de configuration : pour Centreon :/etc/centreon/centreon.conf.php ; pour Centstorage :/etc/centreon/conf.pm. La page 11 sert installer les tables dans les bases centreon et centstorage. Une fois linstallation finie, on peut dmarrer les programmes
censtorage. centcore
et
374
Installation de NagVis
La mise en place de NagVis est plus simple que celle de Centreon. La version que nous mettons en place est la version stable actuelle, la 1.3.2. On rcupre lapplication sur le site du projet, http://www.nagvis.org. Une fois larchive dpose sur le serveur, on la dcompresse :
Dcompression des sources de NagVis
tar xvfz nagvis-1.3.2.tar.gz mv nagvis-1.3.2 nagvis
NagVis utilise lapplication graphviz pour gnrer ses graphiques ainsi que la bibliothque mbstring de PHP.
Installation des pr-requis de NagVis
yum install graphviz graphviz-php php-mbstring
Linstallation de NagVis est simple : il suffit de dplacer son rpertoire dans la partie web de Nagios.
Installation de NagVis
mv nagvis /usr/local/nagios/share/
Configuration de NagVis
Le fichier de configuration de NagVis est nagvis.ini.php.
Mise en place de la configuration
cd /usr/local/nagios/share/nagvis cp etc/nagvis.ini.php-sample etc/nagvis.ini.php /usr/local/nagios/share/nagvis/etc/
Il faut lditer pour modifier laccs la base de donnes nagios par NagVis. La partie qui nous intresse pour linstant est le bloc backend_ndomy_1.
375
Comme nous navons pour linstant pas dclar linterface de Nagios dans Apache, nous allons le faire. Cela demande simplement de copier le fichier sample-config/ httpd.conf dans le rpertoire conf.d dApache.
376
NagVis
Installation de MediaWiki
Linstallation de MediaWiki ressemble celle de toutes les applications web classiques. Le paquetage dinstallation se tlcharge sur le site du projet. Une fois larchive dpose sur le serveur, il suffit de la dcompresser dans /var/www/html.
377
Dcompression de MediaWiki
cp mediawiki-1.14.0.tar.gz /var/www/html cd /var/www/html tar xvfz mediawiki-1.14.0.tar.gz mv mediawiki-1.14.0 wiki chown -R apache:apache wiki
La suite de linstallation se passe par linterface web sur lURL http://192.168.0.5/ wiki. La page propose permet de gnrer la configuration du programme. Les champs intressants sont : Wiki name : nom donn au site, typiquement le nom de la socit ; Admin username : nom du compte administrateur du wiki, habituellement WikiAdmin ; Password : mot de passe du compte administrateur ; Database host : adresse du serveur de base de donnes ; Database : nom de la base de donnes ; DB username : nom de lutilisateur qui accde aux donnes ; DB password : mot de passe du compte daccs aux donnes ; Superuser name : compte administrateur de la base de donnes ; Superuser password : mot de passe de ladministrateur de la base ; Database table prefix : prfixe placer devant le nom des tables ; Storage Engine : moteur de MySQL utiliser pour la base de donnes, typiquement InnoDB. Une fois le formulaire rempli, le fichier config/ LocalSettings.php est cr : il contient toute la configuration de loutil. Il suffit de le placer la racine du site pour que lapplication soit disponible.
Finalisation de linstallation
mv config/LocalSettings.php .
378
Si nous parlons dun Nagios pur, il ny a aucun problme pour le sauvegarder chaud avec un simple tar. Cest aussi le cas pour lapplication NagVis. Le point qui mrite un peu plus dattention concerne les bases Centreon et Nagios (NDO). Ces bases MySQL peuvent tre sauvegardes chaud, grce lapplication mysqldump. Elle ncessite un compte sur la base de donnes. Cette sauvegarde est cohrente si aucun utilisateur ne fait de modification dans la configuration sans lavoir valide.
PRATIQUE Sauvegardes nocturnes
Si la sauvegarde est lance 3h du matin, le risque quun administrateur soit en train deffectuer des modifications est plus faible...
Les fichiers sauvegards sont placs dans /backup/files, les fichiers journaux dans /backup/log. Ce premier script sauvegarde le rpertoire de Nagios et la base NDO.
/backup/bin/save_nagios.sh
#!/bin/sh LOG_NAGIOS=/backup/log/nagios_`date +%d%m%Y`.log SAVE_NAGIOS=/backup/files/nagios_$INSTANCE_NAME_`date+%d%m%Y`.tar.bz2 NAGIOS_DIR=/usr/local/nagios/ echo "Debut de la sauvegarde de nagios a"`date` | tee -a $LOG_NAGIOS cd $NAGIOS_DIR tar cvfj $SAVE_NAGIOS .| tee -a $LOG_NAGIOS echo "Backup de la base Nagios (ndo)" DATE=`date +'%Y%m%d'` cd /backup/files/ mysqldump -u nagios -psuperpass nagios | bzip2 -c > nagiosdb_${DATE}.dump.bz2 | tee -a $LOG_NAGIOS echo "Supprime les sauvegardes datant de plus de deux semaines" | tee a $LOG_NAGIOS
379
Ces scripts peuvent tre amliors pour contrler le rsultat des commandes tar et mysqldump. Ils pourraient prvenir Nagios, de manire passive, du bon droulement ou non de la sauvegarde.
380
En un mot
Ladministrateur a mis en place ses outils. Avant de procder la configuration effective des lments superviser, il est important de se pencher sur les principaux indicateurs disponibles sur les systmes. Ladministrateur ayant dj les informations sur ce quil est possible de superviser ou non, il sera plus mme daider les autres dans leurs demandes de supervision en vue de la mise en place finale de la solution. Cest lobjet du chapitre suivant.
14
Aide linterprtation des indicateurs classiques
Les possibilits de supervision offertes par Nagios sont trs importantes. Voyons quels sont les indicateurs les plus utiles et comment les administrateurs doivent les interprter.
382
Ces fichiers nexistent sur aucun disque physique. Ils sont uniquement situs en mmoire. Il suffit de les lire pour obtenir les informations, que le systme gnre la vole. Il est possible dcrire dans certains fichiers, mais cette possibilit nest pas utilise dans le cadre de la supervision.
Informations globales
Les informations globales concernant ltat du systme sont varies. Par exemple, le fichier /proc/meminfo est une vritable mine dinformations sur ltat de la mmoire. En voici un court extrait :
/proc/meminfo
MemTotal: MemFree: Buffers: Cached: 2073936 156012 71108 906720 kB kB kB kB
Ce fichier est accessible tous les utilisateurs du systme. Dautres sont rservs lutilisateur root. Par exemple, le fichier /proc/kcore est un accs direct la mmoire du noyau. Ce type de fichier nest, en rgle gnrale, pas utile dans la supervision.
383
Un simple appel ps dresse la liste des processus dun utilisateur avec les informations choisies. Par exemple, imaginons que nous souhaitions obtenir les informations suivantes sur lensemble des processus du systme : PID : numro de processus ; ARGS : commande lance avec les arguments ; RSS : taille de la mmoire rsidente du processus ; %CPU : pourcentage de CPU utilis. Il suffit de lancer la commande suivante :
ps -eo pid,args,rss,%cpu
Nous remarquons que les processus httpd sont consommateurs despace mmoire et de ressources CPU. Cette information peut tre utile dans la supervision. En ce qui concerne les informations rseau, la commande netstat permet davoir un suivi prcis de ltat des connexions. Elle permet dobtenir, travers lutilisation du fichier /proc/net/netstat, la consommation des ressources rseau et, par /proc/ net/tcp et /proc/net/udp, la liste des connexions actuellement en cours.
384
Tout comme les fichiers associs aux processus, ils sont difficilement comprhensibles. La commande netstat est chaudement recommande. Il peut tre utile de suivre le nombre de connexions ouvertes ou le nombre de paquets envoys et reus sur le rseau. Nous allons prsenter les informations importantes superviser sur les systmes Linux dans ce chapitre. Si les fichiers /proc originaux seront voqus, les sondes utilisent principalement les commandes comme ps ou netstat.
385
Ce sont les ressources dune machine surcharge qui nous intressent tout particulirement ici. Dans cette machine, de nombreux lments peuvent tre sur-sollicits. Les plus importants sont les suivants : CPU ; RAM ; disques durs ; interfaces rseau. Traitons tout de suite le cas de la RAM. Lorsquune machine nen a pas assez, elle utilise les espaces dchanges. Ceux-ci sont situs sur les disques durs. Dans ce cas, la ressource bloquante est le disque. On ne donne donc pour la RAM que deux tats : il y en a assez, ou non. Elle nest pas prise en compte dans lindicateur global car elle est contenue dans les disques durs lorsquelle ne suffit pas. Lorsquune machine narrive pas traiter les informations assez rapidement, les files dattente des traitements augmentent. Les traitements sont les processus. Lindicateur qui nous intresse est la file dattente des processus. Les Unixiens pensent immdiatement au load average. Ci-aprs, un rapide rappel sur cet indicateur de charge moyenne pour ceux qui nont pas pris lunixien en premire langue.
Compos de trois chiffres, le load average est disponible par les commandes uptime ou top, ainsi que dans le fichier /proc/loadavg. Les trois chiffres du load average reprsentent le nombre moyen (au sens dune moyenne pondre sur le temps) de processus en tat dexcution ou en attente dune ressource au cours des dernires 1, 5 et 15 minutes. Cette dfinition ntant pas particulirement triviale, tudions-la morceau par morceau.
386
Le noyau obtient le nombre de processus compter travers la fonction nr_active disponible dans le fichier kernel/sched.c du noyau Linux. Voici un extrait de cette fonction :
Fonction du noyaux Linux qui compte le nombre de processus pour la charge
unsigned long nr_active(void) { unsigned long i, running = 0, uninterruptible = 0; for_each_online_cpu(i) { running += cpu_rq(i)->nr_running; uninterruptible += cpu_rq(i)->nr_uninterruptible; } [...] return running + uninterruptible; }
Les processus qui sexcutent (cpu_rq(i)->nr_running) et ceux qui attendent une ressource (cpu_rq(i)->nr_uninterruptible) sont pris en compte. Nous avons ainsi dfini la liste des processus pris en compte. Voyons maintenant le calcul des moyennes proprement parler.
387
Moyennes exponentielles
REMARQUE Pertinence de ltude
Cette partie nest pas indispensable aux administrateurs pour interprter le load average. Elle permet cependant de mieux comprendre son volution au cours du temps. Les administrateurs allergiques aux mathmatiques peuvent sauter cette partie. Cest cependant dommage car elle montre quel point elles pourraient les aider dans la vie de tous les jours.
Nous avons voqu que les moyennes sont pondres sur le temps. Les valeurs prises en compte lors des derniers relevs doivent avoir un poids plus fort dans la moyenne que les anciennes valeurs. La dcroissance des poids est une exponentielle dcroissante. Ce calcul se trouve dans le fichier kernel/timer.c de Linux. La fonction en question est calc_load.
Calcul du load average
void calc_load(unsigned long ticks) { unsigned long active_tasks; static int count = LOAD_FREQ; count -= ticks; if (unlikely(count < 0)) { active_tasks = count_active_tasks(); do { CALC_LOAD(avenrun[0], EXP_1, active_tasks); CALC_LOAD(avenrun[1], EXP_5, active_tasks); CALC_LOAD(avenrun[2], EXP_15, active_tasks); count += LOAD_FREQ; } while (count < 0); } } }
La valeur count permet de savoir quand faire le calcul. Elle est infrieure ou gale zro toutes les 5 secondes. Aprs le calcul, elle est rinitialise. La mise jour des valeurs de charge a lieu dans la macro CALC_LOAD. Voici les macros impliques dans ce calcul. Elles sont dfinies dans kernel/timer.h.
Macros utilises dans le calcul
#define #define #define #define FSHIFT 11 /* nr of bits of precision */ FIXED_1 (1<<FSHIFT) /* 1.0 as fixed-point */ LOAD_FREQ (5*HZ+1) /* 5 sec intervals */ EXP_1 1884 /* 1/exp(5sec/1min) as fixed-point */
388
La valeur FSHIFT permet de dfinir la prcision des calculs. LOAD_FREQ sert positionner lintervalle de 5 secondes. Les valeurs EXP_* sont, pour linstant, un peu mystrieuses. La macro CALC_LOAD calcule la charge linstant t, dans le cas de la charge sur une minute, par :
Cest en fait la dfinition mathmatique dune moyenne mobile exponentielle. Pour la comprendre, transformons-la un peu. FIXED_1 est le chiffre 1.0 reprsent en notation virgule fixe. Cette notation permet dexprimer un nombre qui possde un nombre fixe de chiffres aprs la virgule, ici 11. Le dcalage binaire vers la droite >> de 11 chiffres quivaut une division par 211, soit FIXED_1. Une fois la formule transforme, nous obtenons :
Pour rappel, la valeur n est le nombre de processus travaillant lors de la mesure. La charge est gale ce nombre de processus, auquel nous ajoutons une valeur. Si la valeur n est plus grande que lancienne charge, alors load(t-1)-n est ngatif et la charge calcule pour linstant t est gale au nombre de processus qui travaillent, moins une valeur. Si le nombre de processus qui travaillent est infrieur lancienne charge, alors load(t-1)-n est positif et la charge calcule est gale au nombre de processus auquel on ajoute une valeur. La figure 14-1 montre un exemple dvolution de la courbe pour chacun des cas :
Figure 141
389
Cette valeur que nous ajoutons ou soustrayons est un multiple de EXP_1/FIXED_1. FIXED_1 est gal 2^11=2048. EXP_1 vaut, daprs le code, 1884. Cest la reprsentation en virgule fixe de 1/exp(5/60). Cette valeur provient de la dfinition de la moyenne mobile exponentielle. Elle prend en compte la priode des mesures. Dans le cas de la minute, elle est gale 5/60. Que ce soit pour 1, 5 ou 15 minutes, la valeur est toujours infrieure reprsentation en virgule fixe de EXP_K est calcule comme suit:
FIXED_1.
La
sans jamais latteindre. Le facteur EXP_1/FIXED_1 est toujours infrieur 1. Voici ce quil vaut pour 1,5 et 15 minutes : EXP_1/FIXED_1 = 0,919 ; EXP_5/FIXED_1 = 0,983 ; EXP_15/FIXED_1 = 0,994. Ce facteur reprsente le poids du pass pour le calcul de la charge. Plus nous nous basons sur de longues priodes, plus il est important. Cela signifie que la valeur la minute a une volatilit plus importante que celle 15 minutes par exemple. Si nous calculons les valeurs de charge sur plusieurs priodes, les facteurs se multiplient sur les valeurs les plus anciennes. Cela donne son allure dexponentielle la courbe. Pour trois relevs conscutifs, si nous posons
Les valeurs du pass ont un coefficient Q une puissance gale leur ge. Ce coefficient tant infrieur 1, cela donne une allure exponentielle la courbe. Si n est stable sur une longue priode, la valeur de load(t-1)-n diminue de plus en plus au fil des calculs. La charge tend vers n.
390
Exemples de courbes
Prenons un cas simple pour notre exemple. La machine considre possde deux curs. Seuls les processus consommant de la ressource CPU sont considrs. Deux de ces processus sont lancs t=0s. t=900s, ils sont arrts. La courbe de la figure 14-2 reprsente lvolution des trois composantes du load average.
Figure 142
Nous retrouvons bien les courbes exponentielles voques ci-dessus. Les courbes tendent, chacune leur rythme, vers la valeur 2 lors de la phase de consommation de ressources. La valeur la minute est bien plus rapide arriver cette limite que celle 15 minutes. Le mme phnomne est prsent dans la phase descendante, lorsque les valeurs tendent vers 0. Si nous savons dsormais tout ce quil y a savoir sur le calcul du load average, cela ne nous claire pas encore sur la manire de linterprter.
391
Celui-ci est dun type un peu particulier. Il possde autant de tuyaux de sortie que de ressources. Les processus y entrant sont obligs de faire la queue devant la sortie quils souhaitent utiliser. Ils peuvent tre en tat dattente ou en cours de consommation de la ressource. Les processus sont reprsents comme un nombre moyen de processus cette position. Dans le cas dune machine avec un processeur deux curs, un disque, une interface rseau et ayant en moyenne trois processus consommant un cur, le systme peut tre reprsent comme en figure 14-3.
Figure 143
Le load average est simplement la moyenne pondre sur le temps du nombre de processus prsents dans le diagramme. tudions quelques cas reprsentatifs afin dobserver la charge des machines dans diverses situations.
Systmes typiques
Systme sous-dimensionn
Dans lexemple de la figure 14-3, le load average tend vers trois. Deux processus sont en moyenne en train de consommer les ressources CPU et un est en attente de pouvoir le faire. Nous nous retrouvons face une situation de contention au niveau des processeurs. Le systme mriterait davoir un cur dexcution en plus. Le load average est de trois, pour quatre ressources au total, ou deux si lon considre uniquement les processeurs. Une interprtation possible du load average concernant les processus consommant uniquement des processeurs est quil doit tre infrieur au nombre de ressources disponibles. Dans le cas contraire, il y a des contentions. Cest en gnral le cas. Il existe cependant une situation o cette affirmation est errone. Par exemple, imaginons que le processus qui attend possde une priorit
392
plus basse que les deux autres. Ladministrateur a jug que le temps de calcul de ce processus ntait pas important. Sil ne cause pas de souci aux autres, est-ce rellement grave davoir une contention ce niveau ? Cela dpend des attentes de ladministrateur concernant ce processus.
Il ny a, a priori, pas de contention. Le load average est de 1. Nous pourrions considrer que cette machine est bien dimensionne et que ses ressources CPU sont utilises hauteur de 50%. Cest oublier un peu vite que le load average est une moyenne temporelle. Les processus illustrs ici sont une moyenne. Deux cas font surface : un processus unique a consomm toute une ressource CPU sur la dure tudie ; une myriade de processus ont travaill de temps en temps et consomm en moyenne le CPU compltement. Dans le premier cas, le processus gagnerait srement disposer dun processeur plus puissant. Dans le second, aucun processus na consomm toute une ressource. Le CPU est utilis 50%. Le fait de savoir si cela est suffisant sera discut un peu plus loin dans ce chapitre. Le load average est le mme dans ces deux situations mais son interprtation est compltement diffrente. Les applications fonctionnant sur le systme semblent avoir leur importance. Continuons notre analyse afin de comprendre cela.
393
Systme sur-dimensionn ?
Notre prochain systme a en moyenne un quart de cur de consomm ainsi quun quart dune ressource disque. Cela est illustr sur la figure 14-5.
Figure 145
Le load average est de +=0,5. Aucun processus ne peut avoir consomm la totalit dune ressource. Cette situation semble idyllique. Elle a un got de systme surdimensionn : les utilisateurs de cette machine doivent tre ravis. Le load average infrieur 1 semble synonyme de charge tout fait acceptable. Ce nest malheureusement pas forcment le cas.
Analyse contradictoire
Reprenons deux analyses prcdentes depuis notre nouveau point de vue : load average 1 o un processus consomme un cur continuellement ; load average 0.5 o une partie des processeurs et des I/O disque sont consommes. Du point de vue de ladministrateur, la premire situation est un cas de processeur surcharg, la seconde un cas o tout va bien. Suivant les applications, les utilisateurs peuvent ne pas avoir le mme avis. Dans le premier cas, prenons lexemple dune application qui consomme toute une ressource CPU, quelle que soit la puissance dont elle dispose. Un jeu appartient ce type de programmes. Sil nest pas limit en nombre dimages par seconde gnrer,
394
il consomme toute une ressource CPU. Suivant la vitesse du processeur, le jeu peut tourner plus ou moins de 60 images par seconde. Au-dessus de ce seuil, les joueurs ne ressentent pas la diffrence. En-dessous, le jeu nest pas fluide. La charge machine est toujours de 1 dans les deux cas. Du point de vue des utilisateurs, les ressentis de charge ne sont pas les mmes. Une relation charge/application semble se profiler. Regardons sur le second cas si cest bien le cas dans une situation quun administrateur qualifie de non charge. Considrons quun processus est responsable de la charge de 0.5. Ceci signifie quil a travaill approximativement la moiti du temps. Cela est une moyenne. Il a trs bien pu travailler 30 secondes daffile. Un utilisateur a trs bien pu aussi demander 60 pages web, chacune demandant 0,5 seconde de travail pour safficher. Dans le premier cas, lutilisateur peut ntre pas totalement satisfait. Il a presque le temps daller prendre un expresso pendant le traitement. Dans le second, aucune page nayant mis plus dune demi-seconde arriver, il est pleinement satisfait.
REMARQUE Une fcheuse manie
Si lutilisateur nest pas friand de cafine, il peut remplacer le caf par un coup de tlphone pour se plaindre auprs des administrateurs. Ce genre de situation est viter tout prix.
La relation charge/application est relle. Une mme charge nest pas interprte de la mme manire suivant les applications fonctionnant sur la machine.
395
396
La ligne procs_running indique le nombre de processus en tat running ou en attente de processeur. La seconde indique le nombre de processus en attente dentre/sortie. Ce sont les deux composantes du load average. Il est intressant de remarquer que la premire ligne ne peut pas tre zro. Le processus qui effectue la lecture consommant du temps processeur, il faut retirer 1 cette valeur afin davoir le nombre rel de processus qui travaillent. Calcul des moyennes exponentielles Si le noyau fournit la moyenne exponentielle de la charge totale dans /proc/loadavg, il neffectue pas ce calcul pour ces deux composantes. Nous devons faire appel un dmon qui calcule cette moyenne et exporte cette valeur pour lutilisateur. Votre serviteur a crit un tel dmon sous licence GPL v2. Il se nomme advanced load average et se prsente sous la forme dun script Python. Il permet dagrger dautres donnes que celle des composantes du load average. Nous en reparlerons par la suite.
REMARQUE Un outil qui tombe pic
Comme peut se douter le lecteur, cet outil est le rsultat de lanalyse du fonctionnement du load average.
Il exporte par dfaut ses fichiers de rsultats dans /dev/shm. Celui qui nous intresse pour linstant est /dev/shm/advLoadAvg_component.dat.
/dev/shm/advLoadAvg_component.dat
0.28 0.58 0.74 0.54 0.47 0.44
Les trois premires valeurs sont la charge CPU 1, 5 et 15 minutes. Les trois dernires sont la charge I/O 1, 5 et 15 minutes. Le load average tait :
Load average
0.84, 1.03, 1.17
397
Nous retrouvons : 0.84 ~ 0.28 + 0.54 1.03 ~ 0.58 + 0.47 1.17 ~ 0.74 + 0.44 Les sont dues aux calculs de moyennes. La sonde check_load_component permet denvoyer ces donnes Nagios et de vrifier que le dmon fonctionne toujours bien.
check_load_component.py -c /usr/local/nagios/etc/advLoadAvgd.cfg OK daemon is UP | LoadCpu1=0,28 LoadCpu5=0.58 LoadCpu15=0.74 LoadIo1=0.54 LoadIo5=0.47 LoadIo15=0.44
approximations
Exemples de mesures Si nous traons les courbes de charge 15 minutes de nos deux nouveaux indicateurs, nous obtenons un graphique similaire celui de la figure 14-6.
Figure 146
La courbe du load average pour la mme priode est reprsente en figure 14-7.
Figure 147
398
La courbe du load average est bien la somme des deux premires courbes, LoadCpu15 et LoadIo15. Avec le premier trac, ladministrateur sait quel gain il peut retirer de lamlioration des processeurs ou des entres/sorties. Dans le cas prsent, les amliorations des accs disques sont privilgier pour avoir les meilleurs gains. La machine ayant dj 8 processeurs physiques et une charge CPU 2, en ajouter ne servirait rien Ladministrateur pourrait aussi obtenir une courbe comme celle de la figure 14-8.
Figure 148
Dans ce cas, lamlioration des disques ne servirait rien. Suivant le nombre de processeurs que possde la machine, il peut tre intressant den ajouter. Ici, la machine en possde 4, il ny a aucun intrt en ajouter. tant des moyennes, ces valeurs subissent les mmes inconvnients que le load average. Elles ncessitent dautres indicateurs et lexprience des administrateurs pour pouvoir en tirer toutes les informations ncessaires.
Un indicateur important
Les processeurs sont, dans lesprit de tout un chacun, la premire ressource des machines. Si, dans de nombreuses situations, les disques sont bien plus limitatifs, il est important de garder un contrle sur leur utilisation. Celle-ci nest pas constante. Un processeur na que deux tats : il travaille ou il ne travaille pas. Lorsque nous parlons de pourcentage dutilisation, il est question dune moyenne des tats sur une certaine dure.
399
Les courbes de consommation de CPU sont, par dfinition, trs variables. Un processeur inactif linstant t peut tre surcharg t+1. Si la charge est ponctuelle, cela ne porte pas consquence, cest une variation normale pour cet indicateur. Si la charge est constante sur une dure plus longue, nous avons probablement affaire une contention. Cet aspect de volatilit de lindicateur a un impact sur le paramtrage des services le surveillant. Le relev de lindicateur se fait un instant t. Lindicateur dutilisation du CPU nest pas une moyenne temporelle comme le load average. Il est important de dfinir plusieurs vrifications de charge avant davertir les administrateurs. Si la charge est passagre, il ny a pas de problme. Si, aprs plusieurs tests, elle est toujours leve, un envoi dalerte est ncessaire. Cela se configure par le biais des paramtres max_check_attempts et retry_interval. Une dure de charge de 15 minutes est acceptable avant de lancer une notification.
REMARQUE Seuil variable
Cette dure est variable suivant les environnements et surtout les utilisateurs concerns.
400
Le dmon advanced load average exporte les moyennes de ces composantes dans le fichier /dev/advLoadAvg_cpu.dat qui est lu par la sonde check_load_cpu.py. Ces mesures permettent de lisser les courbes pour une meilleure analyse de mtrologie.
Sous Windows
Interrogation WMI directe Sous Windows, linformation de lutilisation des processeurs est disponible dans la table WMI Win32_Processor. Chaque processeur a un identifiant. Il existe un indicateur supplmentaire qui fait une moyenne de la charge des autres. Le pourcentage dutilisation est contenu dans le champ LoadPercentage. Voici un exemple dinterrogation qui rcupre le pourcentage dutilisation des processeurs :
Rcupration de la charge processeur en WMI
SELECT LoadPercentage FROM Win32_Processor
Voici un exemple de rsultat sur une machine deux curs qui en a un dutilis pleinement :
DeviceID=CPU0:LoadPercentage=0 DeviceID=CPU1:LoadPercentage=100
Utilisation de NSClient++ Si ladministrateur a la bonne ide dutiliser lagent NSClient++, celui-ci propose une valeur moyenne de lutilisation des CPU sur une certaine dure. Par exemple, si lutilisation moyenne sur cinq minutes intresse ladministrateur, il peut utiliser la commande suivante :
401
Il est alert si la valeur dpasse 70 ou 90% suivant le niveau de criticit choisie. Cela permet de ne pas avoir positionner de paramtres retry_interval cause de la volatilit de lutilisation CPU. Une valeur de 5 minutes est trop courte pour justifier une leve dalerte. Il est conseill dutiliser une moyenne de lordre du quart dheure la place. Les diffrents temps CPU Le cas trait pour linstant est celui de la charge globale des processeurs. Il nest pas fait mention de la rpartition du temps consomm. Le systme Windows propose des indicateurs assez prcis sur la source de la charge. Ces informations sont disponibles dans la table Win32_PerfFormattedData_PerfOS_Processor. Les champs utiliss sont : PercentDPCTime : temps pass sur lactivit rseau. Une valeur suprieure 50% montre un problme ; PercentPrivilegedTime : temps pass sur lactivit des disques. Une valeur suprieure 20% montre un problme. Il peut tre utile dalerter les administrateurs si ces seuils sont franchis. Il est important davoir une documentation claire sur ces indicateurs. Leur nom est en effet assez peu parlant et un administrateur recevant une alerte pourrait ne pas prendre la peine den rechercher la signification.
Superviser la mmoire
La mmoire est lune des ressources qui revient le moins cher sur les environnements actuels. Il est tout de mme important de la surveiller.
402
le systme commence manquer despace RAM, il dplace des pages mmoire en zone dchanges, sur disque dur. Les performances lors de laccs ces pages sont catastrophiques, les disques tant bien plus lents que des barrettes de mmoire. Si un ralentissement est perceptible, il est caractris par une utilisation de la ressource I/O disque. Il ny a pas de contention sur laccs la mmoire proprement parler. Nous pouvons considrer que deux tats sont observables : le systme a assez de mmoire ; le systme en manque, il utilise la mmoire dchanges. Cela est un peu rducteur car toutes les situations ne se rsument pas ces deux tats. tudions comment observer des manques de mmoire et cherchons les cas o la supervision est complexe.
403
Les systmes exploitent lespace mmoire non utilis par les applications comme espace de cache disque. Sur un systme Linux, on peut lobserver dans la commande free.
Commande free
free -mt total Mem: 2023 -/+ buffers/cache: Swap: 509 Total: 2533 used 1944 1192 8 1952 free 79 831 501 580 shared 0 buffers 87 cached 664
Un espace disponible
Il est intressant dobserver que la valeur de used comporte lespace de cache. Lespace mmoire free dun systme Linux est systmatiquement trs rduit. Les programmes demandant de la mmoire ne se la voient pas pour autant refuser. Cet espace est simplement dduit de celui du cache. Lorsque nous supervisons lespace mmoire disponible dun systme, il est important de prendre en compte lespace free, mais galement lespace de cache disque. Dans le cas contraire, les systmes semblent systmatiquement dpourvus de mmoire disponible alors que ce nest pas le cas.
REMARQUE Un indicateur pige pour ladmin Linux dbutant
Beaucoup dadministrateurs Linux dbutants saffolent en voyant leur mmoire disponible ridiculement faible. Ils ajoutent alors des barrettes de mmoire avant de sapercevoir que cela ne sert rien. Ils commencent alors enfin en chercher le sens.
Sous Unix
La commande ddie cette vrification sur les UNIX est check_mem.pl. Elle utilise la commande free. Elle prend en compte correctement les caches disque. Voici un exemple dexcution du script :
Vrification de lespace mmoire sous Unix
check_mem.pl -w 90 -c 95 OK: 43% Used Memory | MemUsed=43%;90;95
Lespace dchanges est observ par la commande permet de surveiller lutilisation de cet espace.
swapon.
La sonde
check_swap
404
Les seuils de check_swap sont exprims en pourcentage despace libre. Avec cette configuration, si le swap est utilis plus de 20%, un WARNING est lev. Sil est suprieur 50%, cest un CRITICAL.
Ce rsultat reprsente 55% de mmoire utilise, ce qui est acceptable. Lespace dchanges (swap) utilis est, quant lui, indiqu dans la table Win32_PageFileUsage par les champs AllocatedBaseSize et CurrentUsage. Voici un exemple de lancement de la requte :
Rcupration de la consommation de lespace dchanges (swap) en WMI
SELECT AllocatedBaseSize,CurrentUsage FROM Win32_PageFileUsage
405
Linconvnient majeur de cette mthode est de fournir des seuils sur lutilisation de la mmoire virtuelle. Celle-ci est dfinie comme la mmoire physique plus lespace dchanges. Il est dconseill de placer un seuil sur cette valeur. Lorsque lespace dchanges est utilis, il est dj trop tard. De plus, le ratio entre espace mmoire et espace dchanges est rarement identique sur tous les serveurs. Le placement du seuil devrait se faire au cas par cas.
406
pas perdues, mais ne prennent plus despace mmoire inutilement. La RAM libre peut tre raffecte au cache. La plupart des systmes fonctionnent de cette manire. Sous Linux, il est possible de spcifier au systme sil doit utiliser ce mcanisme souvent ou non. Ce paramtre est la swappiness. Il est accessible dans le fichier /proc/sys/vm/swappiness.
REMARQUE Windows, un cas part
Windows Server, avant sa version 2008, ne propose pas encore de fonctionnement quivalent. Il place une borne suprieure au cache. Une partie de la mmoire est systmatiquement perdue.
Ce fonctionnement pose problme dans la supervision. La mmoire dchanges peut tre en partie occupe alors que la mmoire centrale nest pas pleine. Il ne peut tre lui seul un indicateur de contention au niveau de la mmoire.
Relation de dpendance
Puisquaucun des deux indicateurs ne peut apporter dinformation prcise sur la contention mmoire, il peut tre utile de les utiliser conjointement. Une contention se produit quand la mmoire physique est pleine et que lespace dchanges commence se remplir. Si nous dfinissons un service pour la mmoire et un pour lespace dchanges, nous pouvons dfinir une relation de dpendance (voir figure 14-9).
Figure 149
La mise en place des dpendances tant un peu longue, il peut tre galement intressant de tout simplement crire un script qui effectue les deux vrifications. Ce dernier ne renvoie une erreur que dans la situation suivante : la mmoire est utilise plus de 95% et la mmoire dchanges plus de 10%. Ces seuils permettent de grer les cas cits ci-dessus.
407
408
409
Systmes dexploitation
Sous Unix
La commande netstat permet davoir les statistiques des interfaces rseau. La sonde check_network lutilise. Elle est uniquement utilise dans la mtrologie. Corrle une alerte CPU de %sys lev, elle peut permettre didentifier une contention.
Sous Windows
Tout comme les disques, nous pouvons observer les files dattente en sortie des cartes rseau. Si la valeur dpasse rgulirement 2, cest que la machine doit faire face une une contention au niveau des interfaces rseau. La requte WMI associe est :
Rcupration des files dattente rseau en WMI
SELECT Name,OutputQueueLength FROM Win32_PerfFormattedData_Tcpip_NetworkInterface
Attention, il faut exclure des rsultats MS TCP Loopback interface car cette interface est virtuelle.
lments rseau
Sil arrive que les serveurs soient sujets des problmes de dbit rseau, bien souvent, cela provient du cur du rseau. Ce dernier doit tre capable de grer lensemble des flux. Les commutateurs et routeurs proposent, sur leur interface dadministration, des informations relatives au dbit pass pour chaque interface. Cette valeur augmente au fil du temps. Les informations de dbit sont bien plus utiles aux administrateurs rseau. Il est ncessaire de faire une diffrence entre une valeur releve et une valeur ancienne. Pour cela, des fichiers temporaires sont utiliss. La sonde check_centreon_snmp_traffic est ddie cette tche. Lors du premier lancement, elle stocke la valeur dans le fichier /tmp/centreon_trafic_ifINTERFACE_IP. Dans ce fichier se trouvent la valeur releve et sa date. Lors du premier lancement, le plug-in retourne un tat suivante :
Premier lancement de check_centreon_snmp_traffic
First Execution : Buffer in creation ... UNKNOWN
avec la sortie
410
Cette sonde permet galement de vrifier que les interfaces mesures sont dans un tat UP. Dans le cas contraire, une erreur est leve :
Interface non disponible
Error : interface is not ready, status down
Le paramtrage de ce plug-in est un peu complexe lors des premiers essais. Le point important est de dterminer le nom des interfaces surveiller. Il utilise des expressions rationnelles pour les spcifier. Les diffrents systmes dun mme constructeur ne nomment pas ncessairement les interfaces de la mme manire. Pour cela, le paramtre -s permet de dresser la liste des noms et des tats des interfaces. Lorsque le nom des interfaces est dtermin, la sonde peut tre utilise pour interroger ltat des liens. Voici un exemple de lancement sur un commutateur :
Rcupration du trafic dun port
check_cetreon_snmp_traffic -H 192.168.0.1 -i "Port 47" -n -r Traffic In : 228.22 kb/s (0.0 %), Out : 2.93 Mb/s (0.3 %) - Total RX Bits In : 19.79 GB, Out : 14.24 Gb|traffic_in=228224,0Bits/s traffic_out=2929806,9Bits/s
Ici, linterface est utilise 0.3% en mission. Si la valeur devient trop importante, par dfaut suprieure 80% et 95% dutilisation pour respectivement un avertissement et un tat critique, une erreur est leve. Ces seuils sont paramtrables avec les arguments -w et -c.
PRATIQUE Rester raisonnable
Il est dconseill de suivre ltat de tous les liens. Les administrateurs rseau nont besoin de suivre que quelques liens particuliers. Un lien arrivant sur un poste client dclencherait une alerte chaque fois que lutilisateur allume son PC, ce qui nest probablement pas le comportement souhait...
411
Espace disque
Une ressource importante
Les disques ont une fcheuse tendance se remplir. Plus il y a de place disponible, plus les utilisateurs inventent de nouveaux moyens de les remplir. Cette guerre sans fin a besoin dtre supervise. Des disques pleins peuvent non seulement ennuyer des utilisateurs, mais galement causer des problmes svres. Lexemple dun traitement de sauvegarde qui choue pour cause de disque plein a t voqu dans le premier chapitre. Ses impacts peuvent tre trs importants.
Seuils dalerte
Lorsquil est question de placer les seuils pour les sondes qui supervisent les espaces disques, deux coles sont possibles : seuils en terme de pourcentage despace libre ou utilis ; seuils en terme de volume fixe sur lespace libre. Dans le premier cas, que nous plaons un seuil davertissement 80 % despace utilis ou 20 % despace libre, nous arrivons au mme rsultat. Dans le second, parler en terme de volume utilis, comme par exemple 200 Go, na pas de sens, sauf si on connat lespace disponible et que lon souhaite modifier ce seuil pour chaque volume. Les seuils en volume sont fortement dconseills. Lutilisation des pourcentages est bien plus pertinent. Prenons un exemple simple. Un administrateur possde deux disques, un de 300 Go et un de 10 Go. Il peut sagir dun espace de donnes et dun espace pour le systme. Il peut dcider de placer un seuil qui lve une alerte moins d1 Go despace disque disponible. Cette valeur nest jamais idale. Suivant le volume considr, la situation est tre bien diffrente. Sur le disque de 300 Go, 1 Go ne reprsente pas grand chose. Si une application ou des utilisateurs ont russi remplir 299 Go, le dernier Go ne durera pas bien longtemps. Un seuil de 30 Go despace disque disponible aurait t plus pertinent. Sur le disque de 10 Go, ce mme 1 Go reprsente un espace consquent. Une application ayant rempli seulement 9 Go ne remplit pas forcment aussi rapidement 1 Go que dans le cas prcdent. Le seuil est acceptable dans cette situation. Bien sr, il est possible de positionner des seuils en volume espace par espace. Mais ladministrateur va finalement revenir la mthode du pourcentage pour les calculer. Dans ces conditions, autant placer les seuils en pourcentage directement et viter une configuration fastidieuse.
412
Sondes de supervision
Sur les systmes Unix, la commande utilisation est trs simple :
Rcupration despace disque sous Unix
check_disk -w 80 -c 90 Disk OK free space: / 1425MB (19% inode=91%); /boot 159MB (88% inode 99%); /data 52900MB (45% inode=99%) check_disk
La commande vrifie galement que le nombre dinodes des espaces nest pas trop important. Ce sont des liens vers les fichiers. Leur nombre est limit par systme de fichiers. Les cas de remplissage ne sont pas courants, mais particulirement tratres. Si certains espaces ne doivent pas tre surveills, ladministrateur peut utiliser largument -x. Sur les systmes Windows, la table Win32_LogicalDisk exporte ces informations. Seuls les disques doivent tre surveills. Les espaces comme les lecteurs CD-Rom ne sont pas importants. Pour cela, nous utilisons un filtre sur le champ DriveType 3.
Rcupration de lespace disque en WMI
SELECT Name,FreeSpace,Size FROM Win32_LogicalDiskwhere drivetype=3
Nous obtenons :
Name=C: Freespace=1639153669 Size=9345678543 NSClient++
413
Montages NFS
Les partages NFS sont trs rpandus dans le monde Unix. Ils peuvent, de temps en temps, tomber suite des problmes de connexion. Les administrateurs doivent en tre avertis le plus rapidement possible. La sonde check_nfs_client est ddie cette tche. Elle procde en lisant le fichier /etc/fstab dans lequel doivent tre rfrencs les montages NFS. Elle procde alors par un simple changement de rpertoire dans les points de montage. Si la commande ne rend pas la main rapidement, le montage est dclar comme tomb.
Agrgats rseau
Sous Linux, les interfaces rseau peuvent tre montes en bonding. Ce type dinterfaces est un agrgat dinterfaces physiques. Ils permettent de pallier la perte dun lien. Cette perte nest pas critique car le second prend le relais. Cette information doit tre remonte aux administrateurs. La sonde est ddie cette tche. Elle vrifie dans les fichiers /proc/net/bonding/bond* les informations des connexions. Linformation Link Failure Count permet de dterminer le nombre dinterfaces tombes.
check_bonding.pl
414
Un moyen de supervision plus simple consiste se placer sur le serveur dimpression. Ce dernier a toute la visibilit ncessaire pour cette vrification.
Sous Unix
Le gestionnaire dimpression sous Unix est Cups. Nous pouvons interroger ltat des imprimantes avec la commande lpstat.
Vrification des imprimantes par lpstat
lpstat -h serveur -a IMPRIMANTE accepting requests since Sat Jan 17 18:16:56 CET 2009
La sonde check_lpstat permet de vrifier quil ny a pas trop dimpressions en attente sur les imprimantes.
Sonde qui automatise la vrification des imprimantes
check_lpstat -H serveur OK: IMPRIMANTE: 1 job
Sous Windows
Sur un serveur dimpression Windows, les donnes dtat des imprimantes sont disponibles dans la table Win32_Printer. Le champ PrinterStatus est celui qui nous intresse tout particulirement. Un tat normal dimprimante quivaut une valeur de PrinterStatus 3. La requte permettant dobtenir une liste des imprimantes en dfaut est :
Rcupration de ltat des imprimantes en WMI
SELECT Name,PrinterStatus Win32_Printer Name,PrinterStatus WHERE PrinterStatus!=3
Voici un rsultat de cette requte dans le cas o une imprimante est en erreur :
Name=IMPRIMANTE PrinterStatus=1
La sonde check_printer permet dobtenir des informations plus simples comprendre pour les administrateurs sur ltat des imprimantes. Voici un exemple de sortie de cette sonde :
tat des imprimantes avec check_printer
CRITICAL: IMPRIMANTE: The printer is out of toner (0 jobs)
415
Il est important de noter que le service sysmonlog est, dans une situation normale, arrt alors quil est indiqu comme lanc au dmarrage. Ce service mis part, si la requte retourne un rsultat, cest que le service en question est arrt alors quil ne devrait pas.
PRATIQUE Services comme sysmonlog dont larrt est normal
Les services marqus comme dmarrant automatiquement mais dont larrt est normal ne sont pas courants. Certaines applications en installent. Il est ncessaire de modifier le test lorsque de tels services sont mis en place.
416
Sous Windows, il suffit de lire cette information dans la table champ porte le mme nom.
PRATIQUE Nom du service
SystemUpTime.
Le
Les administrateurs risquent davoir du mal de bon matin faire la corrlation entre un uptime faible et un redmarrage. Nommer le service Uptime nest pas appropri. Un nom comme Reboot est beaucoup plus parlant.
Indicateurs physiques
Derniers indicateurs tre traits mais non des moindres : les indicateurs physiques.
Alertes prioritaires
Les indicateurs physiques regroupent, par exemple, les informations sur la temprature ou lhumidit. Elles ne sont pas en rapport direct avec les systmes dinformation. Elles reprsentent cependant une couche indispensable son fonctionnement. Les erreurs devant lever des messages hautement critiques, envoys le plus souvent par SMS, ne sont pas nombreuses. Les indicateurs physiques en font partie. Si une panne lectrique fait surface au beau milieu de la nuit, il est important de la traiter au plus tt. Dans cette partie, les mesures dpendent fortement du matriel mis en place. Il arrive que certains lments ne puissent pas tre superviss. Lorsquils seront changer, ce critre devra entrer en ligne de compte. Pour la majorit dentre eux, heureusement, le SNMP est disponible. Les lments peuvent tre configurs pour envoyer des alertes SNMP (traps) lorsque des problmes surviennent. Les polls SNMP sont, quant eux, utiliss principalement pour la mtrologie. Il est possible, au fil du temps, de suivre des indicateurs importants comme la temprature ou lnergie totale consomme par la salle machine.
Temprature et humidit
Des sondes existent pour mesurer la temprature et lhumidit. Peu chres, elles sont indispensables sur les sites distants. Leur cot tant faible, il est conseill de les mettre en place partout.
417
On peut ventuellement associer cette alarme une action dextinction de serveurs non critiques. Cest une bonne ide, mais attention bien vrifier que lalarme soit correctement place sous peine de gnrer plus de dgts quautre chose.
Consommation lectrique
Peu de machines arrivent fonctionner sans lectricit. Si cet lment est indispensable, il est tonnant de voir que peu dinstallations sont supervises. La plupart des onduleurs ont pourtant une console dadministration. Diffrentes alertes peuvent intresser les administrateurs. Les onduleurs ont gnralement plusieurs sources dalimentation. Si lune dentre elles nest plus disponible,
418
les autres sont capables de supporter la charge. Une alerte doit tre leve afin de rtablir le systme de secours le plus rapidement possible. Une coupure du lien restant serait plus que critique. Ltat des batteries est important. Si celles-ci sont trop vieilles, elles ne se chargent plus. Les administrateurs pensent avoir un systme de secours alors que ce nest pas le cas. Un simple suivi de ltat de charge des batteries suffit viter une catastrophe. Les onduleurs ont une forte sensibilit aux variations de tension. Si les valeurs deviennent trop faibles, ils peuvent arrter de fonctionner. L encore, la plupart permettent dalerter les administrateurs en cas de problme.
PRATIQUE Destinataires des alertes
Les informations sur ltat de la salle intressent fortement les responsables de la salle. Bien souvent, ils ne font pas partie du service informatique. Leur coopration est indispensable pour obtenir les informations. Il est de bon got de leur envoyer les alertes en cas de problme. Sils sont avertis rapidement, la rsolution nen est que plus rapide.
Enfin, la consommation gnrale de la salle est intressante plus dun titre. Les administrateurs ont souvent pour objectif de faire baisser les charges. Dans celles-ci, les frais concernant la consommation lectrique des serveurs et de la climatisation psent sur les rsultats. La virtualisation et la consolidation des systmes permettent un gain fort apprciable. La mesure londuleur de la consommation globale permet de fournir des chiffres clairs la direction sur les conomies ralises.
En un mot
Les lments superviser sur les systmes sont nombreux. Les indicateurs sont nombreux galement. Le plus clbre dentre eux dans le monde Unix est le load average. Sil nest pas parfait, il est trs reprsentatif de la charge dun serveur. Les autres lments dun systme ne sont pas si simples superviser quil y parat. Quil sagisse des ressources processeur, mmoire ou disque, chacune a des cas particuliers quil faut penser grer. Dautres lments comme la temprature et lhumidit sont importants pour le systme dinformation. La mise en place de la solution doit les prendre en considration.
15
Configuration applique un systme imaginaire
Les applications tant en place, ladministrateur ayant pris connaissance des diffrents indicateurs quil peut rcuprer sur son systme, il est temps de finir la configuration de la solution. Avant cela, il faut faire la liste des indicateurs surveiller et organiser toute la supervision. Nous allons dtailler une configuration adapte un environnement classique, compos de systmes htrognes (Windows et GNU/Linux), dapplications qui le sont tout autant (serveurs web et bases de donnes), le tout fonctionnant sur un rseau administr par une quipe ddie.
420
faire comprendre un point : on qualifie de critique ce qui porte atteinte au fonctionnement mme du systme dinformation. Si les utilisateurs nont pas conscience du problme lorsquil survient, il ne ncessite en aucun cas une alerte critique, mais un simple avertissement. La priode de supervision des lments est galement importante. Certaines applications ne sont pas disponibles la nuit. Il est inutile de les surveiller et dalerter la moiti des administrateurs pour rien. Les personnes doivent aussi choisir un ou plusieurs biais de notifications. Les e-mails sont un choix classique, mais il faut leur prsenter galement les alertes par flux RSS et toutes les autres solutions du chapitre 6. Certains aiment recevoir un message en cas de rsolution du problme alors que dautres ne souhaitent pas les recevoir : ce choix doit tre fait par le contact. Recueillir toutes ces informations peut prendre du temps. Il y a peu de chances dy parvenir en une seule journe. Cette phase est pourtant primordiale. Elle doit tre accompagne dexplications pour les contacts afin quils comprennent que la supervision peut leur faciliter la vie de tous les jours. Si des rticences font surface ce moment l, par peur de perdre le contrle, il faut expliquer aux interlocuteurs quils sont encore matres de la diffusion des alertes. Il ne devrait plus y avoir de problmes une fois ce point mis au clair.
PRATIQUE Le ncessaire soutien de la hirarchie
Certains soucis dordre organisationnel peuvent survenir lors de ce recensement. Certains pans du systme dinformation sont de vritables zones dombre. Personne ne sait qui sen occupe et personne ne veut reprendre le flambeau. Il faut pourtant dsigner quelquun pour recevoir les alertes correspondantes mises depuis Nagios. Ladministrateur Nagios ne peut dcider seul de cela : il a besoin de lappui de sa hirarchie davantage encore que pour le reste de la mise en place de la solution.
421
Il est conseill de dcouper les lments suivant plusieurs plans : systmes ; rseaux ; applicatifs ; autres. Ce dcoupage permet de sparer les lments des diffrents administrateurs. Ceci nous facilitera grandement la vie lors de la configuration. Une fois le dcoupage effectu, nous pouvons regrouper les lments par familles de systmes dexploitations ou par types dapplications. On peut, par exemple, crer un groupe avec les systmes Linux et un autre pour les systmes Windows. Chaque ensemble sera redcoup suivant la criticit des lments : production ; qualification et moins.
MTHODE Le niveau dveloppement
Il est tentant de dfinir un troisime niveau : dveloppement. Les services sur ce niveau ne renverraient jamais un tat autre que OK. Seule la mtrologie serait utilise. Mais cest une fausse bonne ide. Ces serveurs doivent avoir un minimum de supervision, mme sils nenvoient pas dalertes. Celles-ci ne seront visibles que sur les consoles de supervision au niveau de simples avertissements. Ladministrateur peut ainsi faire un tour, le matin, des alertes en cours. Tout comme pour la qualification, une alerte peut annoncer un dysfonctionnement qui aura des consquences sur la production.
Concernant les applications, cest la manire dont elles peuvent tre surveilles qui nous intresse. Les bases de donnes et les sites web sont dans des groupes distincts. Il y a peu de chances que les mmes mthodes de supervision soient utilises dans ces deux cas. Parmi les lments superviser sur les htes, il est important de reprer ce qui doit tre remont aux contacts des nuds, de ce qui doit tre envoy des contacts particuliers. Par exemple, les informations sur lespace disque intressent naturellement les administrateurs responsables du serveur. Savoir si lantivirus est bien lanc concerne surtout les administrateurs scurit. Lors de la configuration des services, cette information sera trs importante pour la dfinition des contacts.
422
Le choix des premiers environnements surveills ne doit pas tre fait au hasard. Ils doivent reprsenter le parc. Les administrateurs impliqus dans ces premiers essais doivent tre ceux qui se sont rvls les plus enthousiastes lors des phases danalyse. Lors des premiers essais, ils risquent de recevoir de nombreuses alertes avant que le responsable de la solution arrive grer correctement les niveaux de criticit des alertes ou bien les relations de dpendances entre les lments. Des administrateurs peu enclins au changement y verraient une raison supplmentaire de mettre des btons dans les roues de ladministrateur en charge de cette mise en place. Si les personnes sont un peu plus curieuses, elles vont sintresser loutil et aider sa mise en place. Aussi vaut-il mieux attendre que tout soit bien rgl pour intgrer dautres administrateurs au projet. Lors de cette deuxime phase, il faut bien donner toutes les informations sur ce que les administrateurs risquent de recevoir. En outre il est important de leur donner accs une base de connaissance pour expliciter le sens des alertes, sils nont pas particip activement leur dfinition. Ce lien peut tre fourni directement dans le-mail dalerte afin de faciliter cette recherche.
PRATIQUE Mise en place itrative
Bien sr deux phases ne sont pas suffisantes pour une mise en place complte. Les nouvelles vrifications soulvent de nouvelles questions de la part des administrateurs. Ils peuvent, suivant le rsultat, demander des ajustements sur les tests effectus. Leur soutien dans la mise en place est primordial.
Une monte en charge progressive peut galement tre utile pour sassurer que le serveur choisi suffit pour la supervision. Dans le cas contraire, il faut appliquer les recommandations du chapitre 9 avant dajouter de nouveaux lments. Rater des problmes cause dune latence trop leve est bien plus grave que de ne pas surveiller de nouveaux lments. Les administrateurs se pensent labri, alors que ce nest pas le cas. La confiance quils ont dans loutil pourrait disparatre tout jamais.
ATTENTION Attendre pour mettre en place les crans de supervision !
La mise en place des crans de supervision ne doit se faire quaprs avoir obtenu des alertes fiables. Ces crans sont l pour rassurer et alerter en cas de problme toutes les personnes du service. Si les informations sont fausses, les effets peuvent tre dramatiques.
423
administrateurs Windows ; administrateurs rseau ; administrateurs Active Directory ; responsables des salles.
Chaque groupe peut comporter un ou plusieurs contacts. Tous reoivent les alertes par e-mail. Certains souhaitent lire les alertes au fur et mesure dans un flux RSS. Leur priode de notification est de 24/7. Des contacts sont dfinis dans chaque groupe comme personnes dastreinte. Ces contacts ne sont pas nomms, car les personnes effectuent des rotations. La priode de notification de ces contacts est no-workhours, soit de 18h 8h du matin et toutes les journes de samedi et dimanche. Leur unique commande de notification est constitue de send-by-sms. Les SMS ne doivent tre envoys que sur les priodes dastreinte. Il nest pas possible de choisir une priode de notification pour chaque commande, cette priode est relie au contact. Un nouveau contact est donc ncessaire. tant dans le groupe dadministrateurs, il suffira de rajouter ce dernier pour que la personne dastreinte soit alerte et ce, uniquement la nuit et le week-end.
424
Ces deux lments en place, les administrateurs ne seront pas pollus par des messages provenant denvironnements non critiques. Ils pourront regarder le matin la console de supervision pour vrifier sil y a des alertes sur les environnements de qualification. Si une de ces machines tombe, ils seront tout de mme avertis.
425
Un ou plusieurs Nagios
Centreon permet de configurer un ou plusieurs Nagios. Notre exemple nen comporte quun seul, la configuration simple. Il nest pas conseill de tenter doptimiser le fonctionnement de Nagios ds les premires mises en place. Si le nombre dlments est raisonnable (moins de 300 machines), il ny a aucune raison de tenter damliorer la situation : install sur un serveur de milieu de gamme, Nagios a suffisamment de ressources pour remplir son office.
Pour avoir une ide du nombre de vrifications quest capable de supporter un tel serveur, se rfrer au chapitre 9.
La configuration se droule dans longlet Configuration->Nagios->nagios.cfg. Dans cet cran figure la liste des principaux fichiers de configuration des Nagios dfinis par ladministrateur. Ici, nous diterons le seul prsent, Nagios CFG 1. Il est accroch lunique poller Nagios dfini, Poller Principal.
426
Options de vrification
Dependencies
La seconde page prsente les options de vrification. Loption Soft Service est un choix que doit faire ladministrateur. Si loption est positionne Yes, des dpendances pourraient prendre en compte des tats non srs. Il est gnralement conseill de laisser ce paramtre sur No. Nagios sera moins ractif sur les problmes et leurs dpendances, les administrateurs risquent de recevoir un peu plus de notifications, mais ce surplus devrait tre limit. Le paramtre de flapping est, par dfaut, plac sur No. Il est pourtant dun grand secours lorsque les environnements commencent avoir le hoquet . Il est conseill de le positionner Yes. Les autres taux proposs par dfaut sont acceptables et filtrent relativement bien. Il est bon de rappeler que les htes et les services peuvent redfinir ce paramtre. Le paramtre Obsess Over Services plac sur vouloir mettre en place un Nagios miroir.
No
Les paramtres de Cached Host Check et Cached Service Check sont, par dfaut, vides dans Centreon. Cette configuration quivaut, au sens de Nagios, une plage de temps de 15 secondes. Si ces paramtres sont apprciables en termes de gains de performances, ils impliquent une approximation dans les relations de parent. Dans notre situation, les performances ne sont pas encore un problme et nous positionnerons donc pour linstant ces paramtres 0. Ils seront un levier intressant pour amliorer les performances si le besoin se prsente dans le futur. Le reste des options de configuration de la page na pas besoin dtre modifi pour une installation standard.
Options de timeout
La page suivante prsente les options sur ce qui entre dans les fichiers journaux et les diffrents timeout de Nagios. Une option intressante mettre No est Initial
427
Le paramtre Broker Module Options doit, quant lui, tre gal -1 dans un premier temps. Lorsque la situation sera stabilise, ce paramtre pourra tre remplac par 67108663 dans le cas de lutilisation de Centreon et NagVis.
Ce paramtre a t prsent au chapitre 10.
Les options de mtrologie nont pas besoin dtre modifies. Elles sont paramtres correctement pour que CentStorage puisse rcuprer les donnes et les traiter.
Options de performances
La page de tuning na pas tre modifie pour linstant. Cette page sera en premire ligne dans la bataille contre une latence leve, si ladministrateur doit livrer ce combat.
Pages de dbogage
Les pages Admin et Debug regroupent quelques dtails sur le fonctionnement de Nagios. Il est intressant de regarder les paramtres disponibles pour savoir o en fixer les valeurs, si besoin. Une fois ces lments sauvegards, ladministrateur peut passer au reste de la configuration.
et
ndo2db.
Elle est
428
NDOMOD
Les fichiers de configuration de NDOMOD sont uniques pour chaque Nagios. Ici nous nen mettons quun en place. Chaque ndomod est reli un poller. Dans le cas du poller principal, lunique valeur modifier est Buffer File. Il est conseill de placer ce fichier dans le rpertoire var de Nagios. Par exemple : /usr/local/nagios/var/ buffer.dat. Dans le cas du Nagios principal, la taille du tampon importe peu. Le processus nayant pas tre redmarr souvent, il y a peu de chance que NDOMOD se retrouve face un port 5668 non disponible. Ils sont sur la mme machine.
ndo2db
429
Le nom de linstance est par dfaut Central. Dans NagVis, nous avons utilis le nom standard de Nagios, default. Pour que NagVis puisse retrouver ses informations, il faut utiliser le mme nom dinstance.
430
surveillent la charge des machines, observent les processus qui y sont lancs ou bien obtiennent les informations sur le trafic rseau. Ces commandes sont malheureusement limites lorsque la supervision se complexifie. Dans ce cas, la mise en place dun agent est indispensable. Nous lavons dj voqu prcdemment, les deux agents systme les plus rpandus sont NRPE pour les Unix et NSClient++ sur Windows. Nous allons voir par la suite comment configurer les commandes pour les interroger. Dautres sondes sont paramtres dans Centreon. Les tests rseau simples sont particulirement reprsents. La commande check_dhcp est prte lutilisation ainsi que les commandes check_dns, check_ftp et check_http. Les commandes dinterrogation du serveur de supervision sont dj prsentes. Elles comportent dans leur nom le terme local.
431
Centreon, il doit tre certain que son lancement avec un utilisateur autre que nagios ne causera pas de problmes. Si le test nest pas concluant, cest peut-tre parce que ladministrateur na pas su utiliser la sonde correctement. Il peut afficher laide des plug-ins depuis Centreon. ct du menu droulant donnant la liste des fichiers prsents dans le rpertoire libexec, une petite icne permet dappeler lexcutable avec largument -h. Ce dernier sert dans la quasi-totalit des cas fournir la syntaxe et les possibilits des plug-ins. Une fois la documentation relue, ladministrateur peut corriger sa configuration et refaire un test.
REMARQUE La base de connaissances la rescousse
L encore, la base de connaissances a tout son intrt. Si elle est bien renseigne, ladministrateur doit y trouver un exemple dutilisation des sondes. Son travail nen est que facilit.
Une fois le test concluant, il peut sauvegarder la commande, comme commande de vrification ou bien de notification. Cette distinction, non prsente dans Nagios, permet de filtrer un peu les commandes prsentes aux administrateurs dans le reste de la configuration de Centreon.
432
la configuration du service appelant cette commande, ladministrateur naura plus qu placer correctement la valeur de $ARG1$. La commande check_nt ne peut pas renvoyer un tat UNKNOWN en cas de problme de connexion. Ses arguments sont un peu plus limits que check_nrpe. Elle peut, contrairement cette dernire, vrifier les valeurs reues. Cest le but des paramtres -w et -c. Pour spcifier la valeur demander, il faut utiliser le paramtre -l. Enfin le paramtre -s permet de fournir un mot de passe de connexion lagent. Il est conseill, dans le cas de check_nt, de crer plusieurs commandes dans Centreon : une pour chaque valeur quil est possible de demander. Ladministrateur naura plus qu placer les seuils dalertes en arguments. Par exemple, pour la commande de vrification de la consommation CPU sur les deux dernires minutes :
Appel check_nt sur la charge CPU
$USER1$/check_nt -H $HOSTADDRESS$ -v CPULOAD -s "superpass" -l 2,$ARG1$,$ARG2$
433
434
Les premiers sont peu nombreux. Ils servent dfinir la mthode gnrale de supervision. La mthode active est gnralement utilise dans la supervision des htes, mais une supervision totalement passive est possible : ce seront nos deux modles dordre gnral. Le premier,
generic-host, Check Interval
existe dj dans Centreon. Les notifications et mis part, les valeurs proposes sont correctes.
Normal
Le paramtre Notification Interval est positionn 0 : cela signifie quune seule notification sera leve. Il est plutt conseill denvoyer le message une fois par jour. De cette manire, un message pass inaperu a encore des chances dtre lu le lendemain. Le paramtre devient donc 1440 (60 minutes 24 heures). Le paramtre Notification placer sur Yes.
Enabled
No,
il est conseill de le
Le paramtre Check Interval na pas de valeur par dfaut et il est conseill den mettre une. Dans le cas contraire, les htes ne sont pas surveills activement, ce qui nest pas le but recherch. Pour crer le second modle, il est possible de partir du premier. Pour cela, il faut le slectionner et utiliser loption duplicate dans le menu droulant. Apparat alors un generic-host_1, quil faut renommer en generic-passive-host. Les champs modifier sont : Check Command : check_dummy Normal Check Interval : 0 Max Check Attempts : 1 Active Checks Enabled : yes->no Passive Checks Enabled : no->yes Les modles de systmes hritent des deux modles prcdents. Ils dfinissent simplement une nouvelle commande de vrification. Ceci ne sapplique, bien entendu, quaux vrifications actives. La commande de prdilection dans ce cas est check_tcp avec les ports dadministration des machines. Il est conseill dutiliser un timeout faible. Cette vrification doit tre rapide : si un lment ne rpond pas en moins de 3 secondes, il peut tre considr comme inaccessible. Des temps plus levs empchent tout change efficace.
435
Ces groupes supplmentaires sont ncessaires pour certains services trs particuliers. Les htes doivent faire partie dau moins un groupe de base. Les packs de services sont appliqus ces groupes, ce qui garantit alors une supervision minimale des lments constituant le systme dinformation.
436
Au moins deux
Le premier sert aux services actifs, le second aux vrifications passives. Le premier est dj dfini au sein de Centreon. Sa configuration standard est dj satisfaisante, hormis un point : les notifications, comme pour les htes. Les mmes changements de paramtres Notification Interval et Notification Enabled sont ncessaires. Il est conseill de supprimer tous les contacts dfinis dans ces modles. De cette manire, les services nont pas de contacts sils nen dfinissent pas. Les notifications sont alors envoyes aux administrateurs des machines, comme spcifi dans la configuration des nuds. Cest lhritage implicite qui sapplique. Pour crer le second modle, il faut procder comme pour les htes, par une duplication du premier. Les champs modifier sont alors : Is volatile : no-> yes Check Command : check_dummy Normal Check Interval : 0 Max Check Attempts : 1 Retry Check Interval : 0 Active Checks Enabled : yes->no Passive Checks Enabled : no->yes Sur le modle, nous ne dfinissons pas de vrification de la fracheur. Tous les traitements tant diffrents sur ce point, le modle ne servira rien. Ces deux modles configurs, ils peuvent servir de base pour dautres modles plus fins comme ceux nenvoyant pas de notifications ou bien seulement sur certaines priodes de notification.
437
par le fichier specifique.cfg sur chaque hte, on peut dfinir des exceptions facilement si Nagios nest pas capable de le faire. Ce point a t tudi au chapitre 4. Lorsque cest possible, la configuration doit tre gre au sein de Nagios directement. Pour cela, il ne faut pas oublier dappliquer les techniques dhritage, et notamment celle base sur les macros variables. Ces techniques sont tout particulirement adaptes dans le cas des services rseau SNMP, mais tout argument propre une machine peut tre utilis par ce biais.
438
lagrgat est tombe. Si les informations sur lagrgat ne sont pas disponibles, la sonde check_bonding.pl renvoie un avertissement. Ce cas nest pas particulirement utile. Si lagrgat nest pas disponible, les services qui y sont hbergs et qui sont tout de mme surveills renvoient une erreur. Si cest le lien principal, le serveur est tout simplement dclar DOWN. Une modification intressante consiste changer ce comportement. Il suffit dadapter le code suivant (ligne 109) :
Check_bonding.pl avant
if (not $message) { $message = "No bond information found"; $err = 1; }
en :
Check_bonding.pl aprs
if (not $message) { $message = "No bond information found"; $err = 0; }
Lorsque la sonde est lance sur un serveur nayant pas dagrgat, elle ne renvoie pas derreur. Cette vrification peut tre dploye sur lensemble des serveurs au lieu dune sous-partie dentre eux. Plutt que de dfinir un nouveau groupe nomm ServeursBonding, on peut rajouter le service dans le pack commun tous les Linux.
439
Parfois, les applications sont disperses sur plusieurs machines. Dans ce cas, le fait daccrocher le service un serveur plutt quun autre nest pas vident. Si une adresse virtuelle est disponible, elle doit tre surveille. Pour cela, il faut dfinir un nouvel hte et le service pourra lui tre affect. Dans certains cas, lapplication est vraiment disperse. Elle ne possde pas dadresse virtuelle. Pourtant, un ensemble de services est possible. Dans cette situation, il ne faut pas hsiter dfinir un hte virtuel. Ce dernier est tout simplement une coquille vide qui a pour nom lapplication surveille. Il ne sert qu accrocher des services pour Nagios. Un bon modle pour ces nuds est lhte passif. Si personne nenvoie dinformation son sujet, il nest jamais en erreur.
440
Loption Generate Configuration Files demande Centreon de crer les fichiers de Nagios partir des informations contenues dans sa base de donnes. Cette gnration se fait dans le rpertoire /usr/local/centreon/filesGeneration/nagiosCFG. Chaque Nagios possde un rpertoire, dans lequel se trouve lensemble des fichiers qui le concernent comme nagios.cfg ou ndomod.cfg. Dans le premier rpertoire, celui du serveur Nagios principal, se trouve galement le fichier ndo2db.cfg. Ce dmon ntant prsent que sur ce serveur, il est gnr seulement dans ce rpertoire. Centreon, avec loption Run Nagios Debug (-v) permet de lancer Nagios en mode vrification de configuration, avec loption -v. On peut utiliser cette vrification pour la configuration du Nagios local, ou sur nimporte quelle configuration des Nagios distants. En une seule demande, il est possible de vrifier lensemble des configurations Nagios du systme. Pour cela, deux fichiers nagios.cfg sont crs dans le rpertoire temporaire. Le second se nomme nagiosCFG.DEBUG. Son unique diffrence avec le premier porte sur le chemin dinclusion des appels cfg_file. Le fichier principal de Nagios a pour rle dappeler les fichiers hosts.cfg, services.cfg, etc. Si lappel de vrification se fait sur le fichier normal, les chemins pointent sur /usr/local/nagios/etc. Ce chemin est celui de la version actuelle de Nagios, pas de la nouvelle configuration gnre. Cest pour cela que le fichier .DEBUG possde le chemin temporaire. Une vrification lance sur ce fichier permet de vrifier la nouvelle configuration. Si cette tape de vrification sest bien droule, ladministrateur peut demander, avec loption Move Export Files, de dplacer ces fichiers de configuration temporaires vers leur destination relle /usr/local/nagios/etc. Ladministrateur a le choix entre trois mthodes de redmarrage : redmarrage du service ; rechargement du service ; rechargement par commande externe. Les deux dernires mthodes aboutissent au mme rsultat. Nagios doit tre dj dmarr. Pour notre premier lancement, nous devons faire appel la premire mthode. Par la suite, le rechargement vite de repasser par une phase potentiellement longue de rechargement du module ndo. La commande lance, le rsultat est fourni pour chaque Nagios. Une rapide lecture permet de voir si des problmes sont survenus. Nagios est lanc, ladministrateur peut consulter le rsultat sur longlet Monitoring. Malheureusement, il ny a aucune information. Aucune machine nest prsente.
441
Si nous regardons le fichier journal de Nagios, nous remarquons la ligne suivante que son dmarrage a gnr :
Erreur en provenance de Ndomod
ndomod: Could not open data sink! I'll keep trying, but some output may get lost...
narrive pas envoyer ses donnes et pour cause : ndo2db nest pas lanc. Pour corriger cela, il faut le dmarrer avec le compte nagios :
Ndomod
Lancement de Ndo2db
/usr/local/nagios/bin/ndo2db -c /usr/local/nagios/etc/ndo2db.cfg
ndomod
[1234290317] ndomod: Successfully connected to data sink. 3433 queued items to flush. [1234290318] ndomod: Successfully flushed 3433 queued items to data sink.
Sur la page de supervision de Centreon, nous commenons voir arriver les entres. Notez que Centreon vrifie les entres dans la base nagios remplie par ndomod. Il faut un certain temps pour quelles soient ajoutes dans la base. Ce dlai est de Maximum Service Check Spread minutes. Au bout de ce dlai qui, par dfaut, est gal 5 minutes, toutes les entres devraient tre prsentes. Dans la partie supervision, les diffrentes vues permettent aux administrateurs de sy retrouver simplement parmi tous les indicateurs. Les filtres sur les tats Acknowledged sont pratiques. Si les administrateurs renseignent effectivement leur prise en compte des erreurs, la vue de Centreon peut sen trouver fortement allge. Seules les nouvelles erreurs dont personne ne soccupe sont prsentes. Ces informations ne seront pas perdues comme nous le verrons par la suite.
442
443
Il est important dajouter dans les cartes un indicateur sur ltat global du service. Ces indicateurs permettront de faire la corrlation entre une erreur sur un serveur et larrt du service aux utilisateurs. Les tats des htes peuvent agrger ou non ceux des services qui sont accrochs dessus, ce que lon dfinit avec recognize_services. Il est dconseill dopter pour lagrgation. Les htes peuvent accueillir des services non critiques. Les administrateurs souhaitent avoir les informations sur un nombre restreint dindicateurs, les plus importants. Les informations des autres services des nuds peuvent les induire en erreur.
La dfinition des rotations est simple. Chaque rotation a un nom, une liste de cartes et, enfin, un intervalle de rotation. Par exemple, pour dfinir la rotation nomme system et ayant comme cartes carte1 et carte2 :
Une rotation, system
[rotation_system] ; maps to rotate in this pool maps="carte1,carte2" ; rotation interval (seconds) interval=15
Laccs aux rotations se fait sur la page principale de NagVis. Chaque groupe dadministrateurs doit avoir sa propre rotation.
444
En un mot
Une fois quil en a termin avec les vues agrges, ladministrateur peut souffler un moment : il a entre les mains une solution complte de supervision et mtrologie. Il en a une totale matrise et, ayant russi runir tous les administrateurs dans ce projet, a su viter les plus grands cueils dun projet de supervision. Au fils du temps, les alertes vont se prciser et la disponibilit du systme dinformation va faire un vritable bond en avant.
16
Conclusion et perspectives
Nous voici arrivs la fin dune aventure, et au dbut de nombreuses autres. Regardons un peu le chemin que nous venons de parcourir, et voyons ce que Nagios et son cosystme nous rservent pour la suite.
446
Nagios 3
Une fois la vrification rode, il ne faut pas hsiter la partager avec le reste de la communaut, notamment sur le site Nagios Exchange. Personne ne va se jeter sur un dveloppeur en criant au scandale car une sonde nest pas assez documente. Si cest vraiment le cas, libre chacun de sen occuper et pallier le manque en documentant lui-mme. Les autres membres de la communaut pourront amliorer la vrification. Ladministrateur aura pleinement particip amliorer les solutions bases sur Nagios et la communaut len remerciera.
A
Les principales sondes
Nous avons vu au fil de louvrage un certain nombre de sondes. Faisons un rapide tour dhorizon des sondes les plus utilises dans Nagios.
MTHODE Laide sur les sondes : loption -h
Noubliez pas le prcieux argument -h qui permet dafficher la documentation dune sonde...
448
Nagios 3
check_swap
Permet de vrifier sur les Unix ltat du remplissage du fichier dchange.
Vrification du swap
check_swap -w 50% -c 10%
check_mem
Vrifie ltat des espaces mmoire sur les Unix.
Vrification de la mmoire
check_mem.pl -w 75 -c 95
check_disk
Vrifie les espaces disques disponibles sur les Unix.
Vrification des espaces disques
check_disk -w 10% -c 5%
check_file_age
Permet de vrifier quun fichier a t mis jour rapidement et quil a une taille minimale.
Vrification de la mise jour et de la taille dun fichier
check_file_age -w 60 -c 120 -W 300 -C 500 -f monfichier.log
check_ntp_peer
Permet de vrifier le temps du systme par rapport un serveur NTP.
Vrification de lheure
check_ntp_peer -H ntp.univ-lyon1.fr -w 0.5 -c 1 -W 4 -C 6 -j -1:100 -k 1:200
449
check_sensors
Les systmes Unix exportent des informations sur ltat de la machine. La commande sensors permet de vrifier ces informations. La sonde check_sensors permet dintgrer ce test Nagios.
Vrification de ltat de la machine
check_sensors
check_mailq
Cette commande permet de vrifier de lancer la commande mails en attente denvoi par sendmail ou qmail.
mailq
450
Nagios 3
check_log2
Permet de vrifier les nouvelles entres dans un fichier de log entre deux tests.
Pour plus dinformations sur cette sonde, se rfrer au chapitre 7.
check_udp
Identique la sonde prcdente mais pour les ports UDP.
Vrification de louverture dun port UDP
check_udp -H serveur -p 161 -s Question -e Rponse
check_dhcp
Permet de vrifier quun serveur DHCP rpond bien aux demandes dadresse IP.
451
check_dig check_dns
Ces sondes permettent dinterroger un serveur DNS et de vrifier des enregistrements.
Vrification des enregistrements DNS
check_dig -l www.google.fr -H 212.27.40.240
check_flexlm
Cette sonde permet de vrifier le bon tat dun serveur de licence de type flexlm.
Vrification de ltat dun serveur de licence
check_flexlm -F license.dat
check_smtp
Cette sonde permet de vrifier le bon fonctionnement dun serveur SMTP.
Vrification dun service SNMTP
check_smtp -H smtp.free.fr -U user -P pass
check_http
Cette sonde permet de faire une vrification simple daccs une page web.
Vrification dune page Web
check_http -H serveur -u /path
check_oracle
Ce plugin permet de vrifier diverses informations sur ltat dune base de donnes Oracle : connexion au listener, tat des caches, remplissage des tablespaces... Cette sonde a besoin dun client Oracle pour fonctionner.
452
Nagios 3
check_mysql et check_pgsql
Ces sondes permettent de tester des connexions des bases MySQL et PostgreSQL.
Vrification dune base MySQL
check_mysql -u user -p pass -d base
check_hpjd
Les imprimantes rseau de marque HP possdent pour la plupart une interface JetDirect. Cette dernire permet de superviser limprimante distance par SNMP. La sonde check_hpjd permet deffectuer cette vrification.
Vrification de ltat de limprimante
check_hpjd -H imprimante -C public
453
check_centreon_snmp_traffic
Les liens des lments rseau peuvent tre surchargs ou tout simplement indisponibles. La sonde check_centreon_snmp_traffic permet de suivre le trafic dun lien et de vrifier quil est en bon tat.
Vrification de ltat dun lien rseau
check_centreon_snmp_traffic -H switch -C lecread -i NomDuPort -n -r
check_snmp
Les informations publies par SNMP sont nombreuses. La sonde check_snmp est gnrique. Elle permet de faire une interrogation dune ou plusieurs OID. Une fois le rsultat obtenu, il est possible de le comparer avec des seuils dfinis par ladministrateur.
Vrification dune information SNMP
check_snmp -H serveur -o HOST-RESOURCES-MIB::hrSystemUptime.0
check_disk_smb
Les partages de fichiers Windows sont nombreux. Leur supervision peut tre faite avec la sonde check_disk_smb. En plus de vrifier ltat du partage, elle permet galement de vrifier que lespace nest pas plein.
Vrification de ltat dun partage
check_disk_smb -H 192.168.0.14 -S Jean -w 80% -c 90%
check_ups
Llectricit tant une ncessit premire pour tout systme dinformation, il est courant de recourir des onduleurs de type UPS. Leur supervision est importante. La sonde check_ups est ddie cette tche.
Vrification de ltat dun onduleur
check_ups -H IpUps -u UPS
454
Nagios 3
check_snmp_win
Les services sous Windows sont pratiques pour superviser les applications qui sy trouvent. Ces informations sont disponibles par SNMP. La sonde check_snmp_win permet de superviser ltat dun ou de plusieurs services.
Vrification de ltat dun service par SNMP
check_snmp_win.pl -H serveur -C public -n Service
455
check_dummy
Dans le cadre de la supervision passive, Nagios est amen lancer une sonde pour vrifier ltat dun lment. Cette commande va devoir renvoyer ce que demande ladministrateur. La sonde check_dummy est faite pour cela : elle renvoie ltat et le texte pass en argument.
Pour plus dinformation sur ce fonctionnement, se rfrer au chapitre 7.
Fausse vrification
check_dummy 2 ''Traitement en retard''
check_cluster
La commande check_cluster permet de faire une agrgation dtats au sein de Nagios. Les administrateurs peuvent tre avertis lorsquun certain nombre de services dun cluster sont tombs.
Vrification de plusieurs tats en un seul test
check_cluster -s -d 0,0,0
B
Options de configuration de nagios.cfg
Nous navons vu quune partie des options de configuration prsentes dans le fichier nagios.cfg. Cette annexe dresse la liste des paramtres et prsente leur rle.
cfg_file
Chemin vers un fichier de configuration inclure.
cfg_file=/usr/local/nagios/etc/objects/commands.cfg
458
Nagios 3
cfg_dir
Chemin vers un rpertoire. Tous les fichiers comme fichiers de configuration.
cfg_dir=/usr/local/nagios/etc/servers .cfg
object_cache_file
Fichier o Nagios exporte sa configuration pour que les outils tiers la parcourent. Il est gnr chaque lancement de Nagios.
object_cache_file=/usr/local/nagios/var/objects.cache
precached_object_file
Fichier o Nagios exporte sa configuration lorsquil la vrifie. Il peut tre lu lors du lancement afin de ne pas avoir revrifier la configuration. Cette dernire opration peut prendre du temps.
precached_object_file=/usr/local/nagios/var/objects.precache
resource_file
Fichier de configuration o ladministrateur dfinit les valeurs $USERN$, N allant de 1 32. Ces valeurs ntant pas accessibles aux interfaces graphiques, cest un bon emplacement pour les mots de passe.
resource_file=/usr/local/nagios/etc/resource.cfg
status_file
Fichier mis jour rgulirement o sont placs les tats des lments superviss. Les applications tierces peuvent y lire les informations dont elles ont besoin.
status_file=/usr/local/nagios/var/status.dat
459
status_update_interval
Intervalle de temps, en secondes, auquel le fichier dtats est gnr.
status_update_interval=10
Configuration de la supervision
nagios_user
Compte systme avec lequel le dmon fonctionne. Ce compte ne peut pas tre root.
nagios_user=nagios
nagios_group
Groupe de lutilisateur prcdent.
nagios_group=nagios
check_external_commands
Boolen permettant de savoir si Nagios doit ou non lire le fichier de commandes externes.
check_external_commands=1
command_check_interval
Intervalle de temps entre deux lectures du fichier de commandes externes. Si cette valeur est entire, lintervalle est un multiple de interval_length (en gnral 60 secondes). Pour lexprimer en secondes, il suffit de le faire suivre dun s (exemple : 15s). Si la valeur est gale -1, le fichier est lu aussi souvent que possible.
command_check_interval=-1
460
Nagios 3
command_file
Fichier de commande externe. Cest un tube nomm cr au lancement du dmon. Lutilisateur excutant ce dernier doit avoir les droits adquats sur le rpertoire.
command_file=/usr/local/nagios/var/rw/nagios.cmd
external_command_buffer_slots
Nombre demplacements dans le tampon des commandes externes qui nont pas encore t traites. La commande nagiostats permet dvaluer son remplissage.
external_command_buffer_slots=4096
lock_file
Fichier o le dmon place son pid afin dviter de se lancer plusieurs fois.
lock_file=/usr/local/nagios/var/nagios.lock
temp_file
Fichier temporaire cr par Nagios, renomm comme fichier dtats une fois rempli. De cette manire, ce dernier est toujours cohrent.
temp_file=/usr/local/nagios/var/nagios.tmp
temp_path
Chemin utilis par Nagios pour y placer ses fichiers temporaires.
temp_path=/tmp
461
event_broker_options
Option permettant de choisir les options exportes par levent broker. Pour plus dinformations sur cette option, voir le chapitre 10.
event_broker_options=-1
Options de journalisation
log_rotation_method
Mthode utilise pour la rotation des journaux de Nagios. n : ne pas faire de rotation des journaux ; h : faire une rotation au dbut de chaque heure ; d : faire une rotation par jour, minuit ; w : faire une rotation par semaine, le dimanche minuit ; m : faire une rotation par mois, minuit le dernier jour du mois.
log_rotation_method=d
log_archive_path
Chemin utilis pour y placer les fichiers de journalisation de Nagios aprs leur rotation.
log_archive_path=/usr/local/nagios/var/archives
462
Nagios 3
use_syslog
Utiliser, ou non, syslog pour y placer les donnes de journalisation de Nagios.
use_syslog=1
log_notifications
Enregistrer dans le journal les envois de notifications.
log_notifications=1
log_service_retries
Enregistrer dans le journal les tentatives de revrification de services.
log_service_retries=1
log_host_retries
Enregistrer dans le journal les tentatives de revrification dhtes.
log_host_retries=1
log_event_handlers
Enregistrer dans le journal les lancements de commandes dactions correctives.
log_event_handlers=1
log_initial_states
Enregistrer dans le journal les tats des lments lors du lancement de Nagios.
log_initial_states=0
log_external_commands
Enregistrer dans le journal les commandes externes reues.
log_external_commands=1
463
log_passive_checks
Enregistrer dans le journal les vrifications passives reues.
log_passive_checks=1
Configuration de lordonnancement
global_*_event_handler
Commande par dfaut sil faut utiliser une commande de correction, mais que celleci na pas t dfinie.
global_host_event_handler=somecommand global_service_event_handler=somecommand
*_inter_check_delay_method
Mthode pour espacer les vrifications lances par Nagios.
Pour plus dinformations ce propos, se rfrer au chapitre 3.
service_inter_check_delay_method=s
max_*_check_spread
Temps, en minutes, sur lequel Nagios espace ses premires vrifications.
max_service_check_spread=30
service_interleave_factor
Mthode dtalement des vrifications de la file. Permet de diminuer la probabilit de lancer plusieurs commandes sur un mme hte en mme temps.
Pour plus dinformations, se rfrer au chapitre 3.
service_interleave_factor=s
464
Nagios 3
max_concurrent_checks
Nombre maximum de vrifications pouvant tre lances en parallle. Une valeur nulle signifie quil ny a pas de limite.
max_concurrent_checks=0
check_result_reaper_frequency
Intervalle de temps, en secondes, entre deux intgrations des rsultats des vrifications dans var/spool/check-results.
check_result_reaper_frequency=10
max_check_result_reaper_time
Temps maximum, en secondes, durant lequel lintgration des rsultats est autorise fonctionner.
max_check_result_reaper_time=30
check_result_path
Rpertoire dans lequel Nagios place les rsultats des vrifications pour quils soient analyss par la suite.
check_result_path=/usr/local/nagios/var/spool/checkresults
max_check_result_file_age
ge maximum, en secondes, des fichiers de rsultats. Sils sont trop vieux, ils ne sont pas analyss.
max_check_result_file_age=3600
465
cached_*_check_horizon
Temps, en secondes, pendant lequel les informations dtat des vrifications peuvent tre utilises, dans le cadre des dpendances, sans lancer de vrification supplmentaire.
cached_service_check_horizon=15 cached_host_check_horizon=15
enable_predictive_*_dependency_checks
Permet Nagios, dans le cas dune dpendance, de lancer, en mme temps quune vrification, les vrifications quil aurait d lancer peu de temps aprs en cas de retour anormal du premier test.
enable_predictive_service_dependency_checks=1 enable_predictive_host_dependency_checks=1
soft_state_dependencies
Permet de prendre en considration les tats SOFT pour les dpendances.
soft_state_dependencies=0
time_change_threshold
Diffrence de temps entre Nagios et le systme, qui provoque un changement dheure de rfrence de Nagios.
time_change_threshold=900
auto_reschedule_checks
Permet Nagios de rorganiser ses vrifications en cours dexcution afin de relisser les vrifications. Cest une fonctionnalit non finalise lheure actuelle.
auto_reschedule_checks=0
466
Nagios 3
auto_rescheduling_interval
Intervalle de temps entre deux rorganisations de la file de vrifications.
auto_rescheduling_interval=30
auto_rescheduling_window
Priode de temps, en secondes, pendant laquelle Nagios tente de rorganiser ses vrifications.
auto_rescheduling_window=180
sleep_time
Temps, en secondes, pendant lequel Nagios attend lorsquil a fini ses vrifications.
sleep_time=0.25
*_timeout
Divers dlais, en secondes, dexpiration des actions.
service_check_timeout=60 host_check_timeout=30 event_handler_timeout=30 notification_timeout=30 ocsp_timeout=5 perfdata_timeout=5
retain_state_information
Permet Nagios de sauvegarder ltat des lments entre deux redmarrages.
retain_state_information=1
state_retention_file
Fichier de rtention des tats.
state_retention_file=/usr/local/nagios/var/retention.dat
467
retention_update_interval
Intervalle de temps entre deux gnrations du fichier de rtention.
retention_update_interval=60
use_retained_program_state
Permet Nagios de sauvegarder toutes ses informations entre deux redmarrages. Si ce paramtre a la valeur 1, les valeurs courantes des options enable_notifications, enable_flap_detection, enable_event_handlers, execute_service_checks, et accept_passive_service_checks sont conserves au redmarrage.
use_retained_program_state=1
use_retained_scheduling_info
Permet Nagios de sauvegarder lordonnancement des vrifications entre deux redmarrages.
use_retained_scheduling_info=1
retained_*_attribute_mask
Masque binaire sur les informations ne pas sauvegarder. Le tableau B-1 recense les valeurs possibles.
retained_host_attribute_mask=0 retained_service_attribute_mask=0 retained_process_host_attribute_mask=0 retained_process_service_attribute_mask=0 retained_contact_host_attribute_mask=0 retained_contact_service_attribute_mask=0 Tableau B1 Donnes du masque de sauvegarde
Valeur 0 1 2 4 8
468
Nagios 3
interval_length
Temps, en secondes, de lintervalle par dfaut. Il est dconseill de modifier cette valeur.
interval_length=60
check_for_updates et bare_update_check
Permettre Nagios de vrifier quune nouvelle version est disponible.
check_for_updates=1 bare_update_check=0
use_aggressive_host_checking
Utiliser, ou non, la vrification agressive des htes. Il est dconseill dactiver cette option.
use_aggressive_host_checking=0
execute_*_checks
Permettre Nagios de lancer des vrifications actives.
execute_service_checks=1 execute_host_checks=1
469
accept_passive_*_checks
Autorise les vrifications passives dans Nagios.
accept_passive_service_checks=1 accept_passive_host_checks=1
enable_notifications
Autorise Nagios envoyer des notifications.
enable_notifications=1
enable_event_handlers
Permet Nagios de lancer des commandes de rparation.
enable_event_handlers=1
process_performance_data
Permet Nagios de traiter les donnes de performances.
process_performance_data=1
*_perfdata_command
Commandes pour gnrer les donnes de performances.
host_perfdata_command=process-host-perfdata service_perfdata_command=process-service-perfdata
*_perfdata_file
Fichiers de donnes des performances.
host_perfdata_file=/usr/local/nagios/var/host-perfdata service_perfdata_file=/usr/local/nagios/var/service-perfdata
470
Nagios 3
*_perfdata_file_template
Format pour lexport des donnes de performances.
host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTE XECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$ service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t $SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT $\t$SERVICEPERFDATA$
*_perfdata_file_mode
Mode douverture du fichier de performances : a : ajoute les informations ; w : crase les informations ; p : le fichier est un tube nomm.
host_perfdata_file_mode=a service_perfdata_file_mode=a
*_perfdata_file_processing_command
Commandes pour grer les donnes de performances.
host_perfdata_file_processing_command=process-host-perfdata-file service_perfdata_file_processing_command=process-service-perfdata-file
*_perfdata_file_processing_interval
Intervalle de temps entre deux lancements de la commande
service_perfdata_file_processing_command. host_perfdata_file_processing_interval=0 service_perfdata_file_processing_interval=0
471
obsess_over_*
Activer ou non les commandes lances aprs chaque vrification.
obsess_over_services=0 obsess_over_hosts=0
ocsp_command
Commande lance aprs chaque vrification de service.
ocsp_command=somecommand
ochp_command
Commande lance aprs chaque vrification dhte.
ochp_command=somecommand
translate_passive_host_checks
Dans le cadre dune supervision active/passive, le second nud peut ne pas voir les lments sous le mme angle que le premier. Les relations de parent ne sont pas obligatoirement les mmes. Cette option permet au second Nagios de changer les tats reus pour quils correspondent son point de vue.
translate_passive_host_checks=0
passive_host_checks_are_soft
Permet de considrer les vrifications passives dhtes comme SOFT.
passive_host_checks_are_soft=0
check_for_orphaned_*
Permet Nagios de rordonnancer les vrifications sil na pas le retour dune commande lance.
check_for_orphaned_services=1 check_for_orphaned_hosts=1
472
Nagios 3
check_*_freshness
Active dans Nagios la gestion de la fracheur des lments.
check_service_freshness=1 check_host_freshness=0
service_freshness_check_interval
Valeur, en secondes, entre deux vrifications de la fracheur des lments.
service_freshness_check_interval=60 host_freshness_check_interval=60
additional_freshness_latency
Nombre de secondes ajoutes par Nagios aux intervalles de fracheur quil calcule luimme. Cela permet de laisser un peu de temps aux informations pour arriver par rapport leur rythme normal.
additional_freshness_latency=15
enable_flap_detection
Active la dtection de leffet yoyo .
enable_flap_detection=1
*_flap_threshold
Valeur utilises pour la gestion de leffet yoyo .
Pour plus dinformations, se rfrer au chapitre 6.
low_service_flap_threshold=5.0 high_service_flap_threshold=20.0 low_host_flap_threshold=5.0 high_host_flap_threshold=20.0
473
Options de localisation
date_format
Format des dates de Nagios : us : MM-DD-YYYY HH:MM:SS euro : DD-MM-YYYY HH:MM:SS iso8601 : YYYY-MM-DD HH:MM:SS strict-iso8601 : YYYY-MM-DDTHH:MM:SS
date_format=us
use_timezone
Dcalage horaire que doit utiliser Nagios.
use_timezone=Europe/Paris
enable_embedded_perl
Activer linterprteur Perl intgr.
enable_embedded_perl=1
p1_file
Chemin vers le fichier p1.pl ncessaire linterprteur Perl intgr.
p1_file=/usr/local/nagios/bin/p1.pl
use_embedded_perl_implicitly
Utiliser par dfaut linterprteur Perl intgr.
use_embedded_perl_implicitly=1
474
Nagios 3
illegal_object_name_chars
Caractres interdits dans le nom des objets.
illegal_object_name_chars=`~!$%^&*|'"<>?,()=
illegal_macro_output_chars
Caractres interdits dans les macros.
illegal_macro_output_chars=`~$&|'"<>
use_regexp_matching
Utiliser les fonctionnalits dexpressions rationnelles dans la dfinition des objets.
use_regexp_matching=0
use_true_regexp_matching
Utiliser les expressions rationnelles pour toutes les proprits des objets.
use_true_regexp_matching=0
admin_*
Informations de contact de ladministrateur de Nagios.
admin_email=nagios@localhost admin_pager=pagenagios@localhost
475
use_large_installation_tweaks
Utiliser les options de performances avances.
Pour plus dinformations sur cette option et les trois suivantes, se rfrer au chapitre 9.
use_large_installation_tweaks=0
enable_environment_macros
Activer ou non les variables denvironnement lors de lappel aux commandes.
enable_environment_macros=1
free_child_process_memory
Nettoyer lespace mmoire des fils de Nagios.
free_child_process_memory=1
child_processes_fork_twice
Lancer les commandes de vrification avec un fils de Nagios au lieu dun petit-fils.
child_processes_fork_twice=1
debug_level
Niveau de dbogage de Nagios.
debug_level=0
debug_verbosity
Niveau de verbosit des textes de dbogage.
debug_verbosity=1
476
Nagios 3
debug_file
Fichier de sortie des informations de dbogage.
debug_file=/usr/local/nagios/var/nagios.debug
max_debug_file_size
Taille maximale en octets du fichier de dbogage.
max_debug_file_size=1000000
Index
Symboles
/proc/ 381 loadavg 385 meminfo 382 net/netstat 383 net/tcp 383 net/udp 383 PID/stat 382 PID/statm 382 PID/status 382 stat 395
C
cache 261 cache de vrification 261 cached_host_check_horizon 262 cached_service_check_horizon 262 carte 442 cartographie 337 centcore 333 Centreon 312, 325, 326, 425 ACL 439 CentStorage 328 communaut 313 contact 433 fonctionnement 316 gestion des accs 326 hritage 429 installation 368 NDO 427 reporting 354 traps SNMP 328 CentStorage 316, 328 centweb 317 charge 447 globale 384 machine 251 check_external_commands 276 check_file_age 448 check_freshness 189 check_interval 64 check_load 447 check_mem 448 check_nrpe 432 check_nt 432 check_swap 448 check_tcp 434 child_processes_fork_twice 266
A
ACL 326, 439 active_checks_enabled 190 advanced load average 396 alerte criticit 143 dpendances 147 niveau 143 notification 155 rdiger 142 RSS 166 SMS 168 yoyo 176 apache 134 applications 449 sondes 449 architecture 420
B
base de connaissance 376, 425 bin/ nagiostats 242 broker_module 287 bronx 446
478
Nagios 3
cluster 455 code retour 52 command 40 command_line 41 command_name 41 commande de vrification 40, 366 check_bonding 413 check_centreon_snmp_traffic 409 check_cluster 203 check_cpu 400 check_dhcp 89 check_disk 412 check_dns 87 check_dummy 190 check_email_delivery 92 check_http 80 check_ldap 88 check_lpstat 414 check_mem 403 check_nagios 275 check_ndo 293 check_nfs_client 413 check_nt 401 check_swap 403 check_tcp 77 check_uptime 415 commande externe 71 ACKNOWLEDGE_SVC_PROBLEM 72 DISABLE_NOTIFICATIONS 275 ENABLE_NOTIFICATIONS 274 PROCESS_HOST_CHECK_RESULT 188 PROCESS_SERVICE_CHECK_RESULT 72, 187 SCHEDULE_HOST_DOWNTIME 179 START_EXECUTING_HOST_CHECKS 281 START_EXECUTING_SVC_CHECKS 281 STOP_EXECUTING_HOST_CHECKS 281 STOP_EXECUTING_SVC_CHECKS 281 commandes de notifications 42 compilation 359 configuration outils daide 311 performances 261 contact 48, 433
contact_name 48 email 49 host_notification_commands 49 host_notification_options 49 host_notification_period 49 host_notifications_enabled 48 service_notification_commands 49 service_notification_options 49 service_notification_period 49 service_notifications_enabled 49 contactgroup 51 alias 51 contactgroup_members 51 contactgroup_name 51 members 51
D
data_processing_options 287 dpendances rseau 147 dhcp 450 disque 411, 449 distribu Centreon 333 polleres 333 pollers 333 dns 451 DNX 294 dnxclients 295 dnxserver 295 duplication 266
E
effet yoyo 176 e-mails 432 enable_embedded_perl 257 enable_environment_macros 264 enable_event_handlers 174 enable_notifications 276 ePN 255 escalade de notification 69 espace disque 411, 448 tat dun nud 44 DOWN 44 UNREACHABLE 44
Index
479
UP 44 tat dun service 46 CRITICAL 46 OK 46 UNKNOWN 46 WARNING 46 tat physique 449 etc/ dnxClient.cfg 297 dnxServer.cfg 297 htpasswd.users 134 ndo2db.cfg 289 ndomod.cfg 286 nrpe.cfg 129 nsca.cfg 196 send_nsca.cfg 197 event handlers 173 event_broker_options 287 external_command_buffer_slots 250
F
factorisation de configuration 210 par modle 213 fan 358 fichiers journaux 426 flap_detection_enabled 177 flap_detection_options 176 flapping 176, 426 fracheur dun tat 189 free_child_process_memory 265 freshness_threshold 189
high_service_flap_threshold 177 host 44 address 44 alias 44 check_command 44 check_period 44 contact_groups 44 contacts 44 host_name 44 max_check_attempts 44 notification_interval 44 notification_options 45 notification_period 44 host_freshness_check_interval 190 hostgroup 224 hostgroup_name 224 hte 44 hpjd 452 http 451 HttpFox 86 humidit 416
I
icmp 452 imprimante 413, 452 indicateurs charge rseau 408 I/O 407 load average 384 mmoire 401 processeur 398 inherits_parent 154 intervalle de notification 434 is_volatile 185
G
global_host_event_handler 174 global_service_event_handler 174 groupe dadministrateurs 422 groupe de machines 223, 423
L
large installation tweaks 263 latence 242 Linux indicateurs 381 load average 384, 385 logAnalyser 325 logs 426 low_host_flap_threshold 177
H
heartbeat 304 hritage additif 233 implicite 228 multiple 218 high_host_flap_threshold 177
480
Nagios 3
low_service_flap_threshold 177
M
machines sondes 449 macro 59 $HOSTADDRESS$ 41 $SERVICEOUTPUT$ 54 $USERn$ 60 macro variable 232 maintenance 178 max_check_attempts 63 max_concurrent_checks 252 MediaWiki 376 members 224 mmoire 448 MIB conversion 331 traps SNMP 192 modle 213 montages NFS 413 mysql 452 mysqldump 378
rotation des vues 351 name 213 nareto 359 NDO 285 ndo 363, 427 ndo2db 289, 348, 428 ndo2fs 349 NDOMOD 428 ndomod 286 ndomy 348 NDOUtils installation 363 negate 164, 202 Netsaint V new_mini_epn 257 NFS 413 niveaux dalerte 143 nud 44 NRPE 94 nrpe.cfg allowed_hosts 129 NSCA 195 NSClient++ 102, 400, 455
N
Nagios 359, 426 configuration 426 distribu 333 RAM 271 sondes 366 nagios.cfg 111, 457 check_external_commands 111 command_file 111 enable_notifications 111 log_file 111 max_concurrent_checks 111 nagios_user 111 process_performance_data 111 service_inter_check_delay_method 111 status_file 111 status_update_interval 111 nagiostats 242, 249 NagVis 345, 374 droits 375
O
obsess_over_hosts 279 obsess_over_services 279 OCHP 279 ochp_command 279 OCSP 279 ocsp_command 279 Octopussy 200 onduleur 417, 453 options de vrification 426 oracle 451 ordonnancement 251 Oreon 313
P
parents 149 partage 453 passive_checks_enabled 187 performances 239 configuration 261, 263
Index
481
interprteur Perl 255 NRPE vs SSH 259 test 245 virtualisation 260 pgsql 452 ping 452 poller 333, 334 port 450 Postfix 113 processus 449
R
RAM 401 redmarrage 415 register 214 rpartition de charge 285 reporting Centreon 354 ressource 44 ressources systme 447 sondes 447 retry_interval 64 Rotation 351 RSS 166
S
Samba 453 satellite 333 SEC 199 send_nsca 196 service 46 check_command 46 check_interval 46 check_period 46 contact_groups 47 contacts 47 host_name 46 max_check_attempts 46 notification_interval 46 notification_options 47 notification_period 47 retry_interval 46 service_description 46 service_freshness_check_interval 190
service_inter_check_delay_method 62 service_interleave_factor 62 servicedependency 151 serviceescalation 69 smb 453 SMS 168 smtp 451 SNMP 100 alerte 191 gestion des traps 328 MIB 191 snmp 453 trap 191 SNMPTRAPD 192 SNMPTT 332 Soft Service Dependencies 426 soft_state_dependencies 152 sondes installation 366 SSH 455 stalking_options 186 status_update_interval 70 swap 448 systme supervision des ressources 447 systme dinformation disponibilit 338
T
tcp 450 temp_file 269 temprature 416 temps systme 448 timeout 426 timeperiod 41 alias 41 monday 41 sunday 41 timeperiod_name 41 topologie 148 traps SNMP gestion dans Centreon 328 type dtat HARD 63
482
Nagios 3
SOFT 63 SOFT-RECOVERY 65
U
udp 450 ups 453 use_embedded_perl_implicitly 258 use_large_installation_tweaks 267
W
Webinject 84 Windows indicateurs 381 WMI 104 wmi Win32_LogicalDisk 412 Win32_OperatingSystem 404 Win32_PageFileUsage 404 Win32_PerfFormattedData_PerfOS_Process or 401 Win32_Printer 414 Win32_Processor 400 Win32_Service 415
V
var/ nagios.log 70, 124 rw/nagios.cmd 71 status.dat 70, 124 status.sav 71 var/spool/ checkresults 270 volatilit 185 vues agrges 337
Y
yoyo 176
Nagios 3
pour la supervision et la mtrologie
Aprs plus de dix ans de dveloppement, le logiciel libre Nagios 3 simpose comme la rfrence en matire de supervision open source. Il permet de veiller efcacement au bon fonctionnement dun parc htrogne de plusieurs dizaines ou milliers dquipements et services rseau (serveurs matriels et logiciels, routeurs, applications web), en association avec des outils de conguration et de visualisation tels Centreon et NagVis, ou au sein de distributions spcialises telles que FAN.
Nagios pour ladministrateur serein : une rfrence mthodique pour la conguration et le dploiement
Au-del des aspects techniques, cet ouvrage donne les cls pour russir la mise en place dun projet de supervision et viter les cueils classiques : choix des mauvais indicateurs, tri insufsant des alertes, mauvaise valuation de la charge Il droule une mthodologie solide de mise en uvre, rappelle comment faire accepter loutil, les problmes soulevs par laugmentation du nombre dlments surveills, et dcrit les principes respecter concernant la pertinence des alertes et linterprtation des indicateurs classiques. Les mthodes de supervision des systmes et rseaux sont dtailles, avec agent comme sans agent, et une dmarche doptimisation des performances est propose. Sont enn dcortiques des mthodes de gestion des grandes congurations et la mise en place darchitectures de supervision haute disponibilit et rpartition de charge.
Jean Gabs
Jean Gabs contribue activement aux projets communautaires Nagios et Centreon. Il administre un parc chez Lectra, socit spcialise dans lintgration de solutions dans la rgion de Bordeaux et qui possde un systme informatique distribu sur les cinq continents.
Au sommaire
Supervision et mtrologie : Principes fondamentaux Alertes en temps rel et proactivit conomiser en taillant au plus juste le SI Le projet de supervision Revoir ses processus Mise en place progressive Susciter ladhsion Automatiser les rponses aux problmes Une seule console de supervision Choix de Nagios Licence open
source Modularit et performances De nombreux plug-ins de supervision Une large communaut trs active Fonctionnement de Nagios Les plug-ins Supervision active et passive Sondes de vrications Commandes de notications Dnition des htes, services et contacts Informations de mtrologie Ordonnancement des vrications Types dtats Escalades de notications Donner un ordre Nagios Tests de supervision Tests simples: TCP, HTTP(S), SMTP, LDAP, DNS, WMI Vrication des bases de donnes Validit des certicats SSL Agents NRPE, SNMP, NSClient++ Grer les alertes Concision et pertinence Dpendances : une seule alerte par problme La production avant tout Alertes par mail, ux RSS et SMS Moyens dalerte originaux Les services particuliers Gestion des logs Alertes SNMP (traps) et supervision passive (NSCA) Supervision des clusters Gestion de la conguration Puissance des techniques dhritage (simple, multiple, additif et implicite) Modles et groupes Performances Mthode dobservation de la latence Consommation CPU et RAM de Nagios Des amliorations simples et efcaces Haute disponibilit et rpartition de charge Plusieurs Nagios en parallle grce NDOUtils DNX : dlguer le lancement des sondes pour lisser la charge Outils daide la conguration Centreon Gestion des droits (ACL) Environnements distribus (CentCore) Gestion de la mtrologie (CentStorage) et des alertes SNMP Cartographie et reporting Intrt de lagrgation des vues NagVis Choix des indicateurs de reporting Installation et administration Nagios, Centreon, NagVis. Mise en place avec FAN Indicateurs classiques systme et rseau Charge machine (load average) CPU, mmoire, disques, rseau Unix/Linux, Windows Climatisation et lectricit Exemple de conguration complte Environnements htrognes Mthode de conguration.
Conception : Nord Compo