Ce livre sur (en version 2.4 au moment de l écriture) s adresse à des administrateurs d infrastructures ainsi qu à des utilisateurs avertis et initiés à la supervision. Il a pour objectif, d une part de démontrer l utilité de la surveillance accrue d une infrastructure et d autre part de guider le lecteur dans le déploiement de cette solution de supervision et l adaptation de son paramétrage au plus près des besoins de l entreprise tout en évitant certains écueils. Dans un premier temps, l auteur détaille le concept même de la supervision et sélectionne une architecture type pour installer la solution (sur un serveur Red Hat 6.x dans le livre) et décrire les bonnes pratiques à mettre en œuvre pour concevoir une plateforme de supervision pérenne. Les chapitres suivants présentent des fonctionnalités de qui permettent une supervision avancée de l infrastructure (bases de données, serveurs web, réseau SAN ) mais aussi la mise en place de la sécurisation de la solution. Un chapitre est dédié au développement de la solution via la programmation ou l utilisation d outils tiers pour étendre les capacités de. Tout au long du livre, l auteur propose une démarche didactique mettant en œuvre une plateforme complète de supervision sécurisée. Il illustre ses propos par un exemple concret de gestion de parc informatique avec déploiement d un centre de support au travers d outils complémentaires comme GLPI et FusionInventory. Des éléments complémentaires sont en téléchargement sur le site www.editions-eni.fr. Les chapitres du livre Avant-propos Conception et architecture Préparation et installation Conception d architecture de supervision Gestion de la configuration Supervision avancée Sécurisation et redondance Développement et programmation Applications et cas pratiques Conclusion ISSN : 1960-3444 ISBN : 978-2-409-00042-3 54 Pour plus d informations : Philippe PIERRE a exercé de nombreuses années en tant qu Administrateur de bases de données puis Administrateur système et réseau et a enseigné au CNAM Paris. Aujourd hui, il exerce en tant qu Ingénieur d infrastructure au sein d un laboratoire pharmaceutique. Il connaît parfaitement les systèmes Linux et Unix dans le cadre d un environnement d entreprise à haute disponibilité. Cette expertise et sa grande connaissance des exigences des utilitéléchargement sateurs, lui.frpermet de proposer aux lecteurs un www.editions-eni.fr livre efficace sur la supervision avec. sur www.editions-eni.fr : b Exemples de codes, scripts et programmes décrits dans le livre. - Guide de la supervision Guide de la supervision (de l installation à l exploitation) Philippe PIERRE
Table des matières 1 Les éléments à télécharger sont disponibles à l'adresse suivante : http://www.editions-eni.fr Saisissez la référence de l'ouvrage EPSHIN dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement. Avant-propos 1. Objectifs................................................ 11 2. Public visé............................................... 12 3. Prérequis et connaissances nécessaires........................ 13 4. Structure de l'ouvrage...................................... 13 Chapitre 1 Conception et architecture 1. Supervision : concepts et rappels............................. 15 1.1 Définition........................................... 15 1.2 Fonctionnalités de la supervision........................ 16 1.2.1 La surveillance................................... 16 1.2.2 Les notifications................................. 16 1.2.3 Les sondes...................................... 17 1.2.4 Les patrons ou templates.......................... 17 1.2.5 Les dépendances................................. 17 1.2.6 Les escalades.................................... 18 1.3 Différentes catégories de supervision..................... 18 1.3.1 Supervision système.............................. 18 1.3.2 Supervision réseau............................... 18 1.3.3 Supervision sécurité.............................. 19 1.3.4 Supervision applicative........................... 19 1.3.5 Supervision métier............................... 19 1.4 Les protocoles utilisés.................................. 19 1.4.1 Protocole TCP/IP................................ 19 1.4.2 Protocole ICMP.................................. 21
2 1.4.3 Protocole SNMP................................. 22 2. Héritage de Nagios........................................ 23 2.1 Généralités sur Nagios................................. 23 2.2 Découpage des rôles................................... 24 2.3 Les flux de données.................................... 26 2.4 Les différents services.................................. 28 3. Découpage des rôles....................................... 29 3.1 Arbiter.............................................. 29 3.2 Scheduler............................................ 29 3.3 Poller............................................... 30 3.4 Broker.............................................. 30 3.5 Reactionner.......................................... 31 3.6 Receiver............................................. 31 4. Apports de....................................... 32 4.1 Garantie de la disponibilité des services................... 34 4.2 Alertes en cas d'incidents............................... 35 4.3 Proactivité et réaction en cas de panne.................... 36 4.4 Répartition de charge.................................. 37 4.4.1 Création de packs................................ 37 4.4.2 Agrégation de packs.............................. 39 4.4.3 Envoi de configurations........................... 39 5. L'infrastructure d'entreprise................................. 41 5.1 Hypothèses de travail.................................. 42 5.2 Recensement des équipements à superviser................ 45 5.3 Liste des sites et répartition............................. 46 5.4 Énumération des groupes de machines et services........... 49 5.5 Conception de la globalité de l'infrastructure............... 54
Table des matières 3 Chapitre 2 Préparation et installation 1. Prérequis et préparation.................................... 57 1.1 Installation des prérequis communs...................... 58 1.2 Installation du référentiel MongoDB..................... 59 1.3 Installation des options................................ 60 1.4 Création de l'environnement............................ 61 2. Installation par package Python............................. 62 3. Installation via l'installeur........................... 64 3.1 Cas particulier de l installeur 2.2.................. 66 3.2 Installation directe.................................... 67 3.3 Installation via un proxy............................... 69 4. Installation par rpm....................................... 71 4.1 Commande shinken................................... 71 4.2 Installation de modules................................ 73 4.3 Mise à jour des plugins................................. 73 5. Installation de modules.................................... 74 5.1 Le site shinken.io..................................... 74 5.2 Modules et addons pour l'interface graphique.............. 77 5.2.1 Interface WebUI................................. 77 5.2.2 Interface Livestatus.............................. 81 5.2.3 Interface Thruk.................................. 92 5.3 Paramétrage particulier : SELinux........................ 96 6. Répertoires essentiels...................................... 98 6.1 Répertoires de................................. 98 6.2 Répertoires des services............................... 112 6.3 Répertoires des modules............................... 112 6.4 Répertoires de traces.................................. 113 7. Configuration principale.................................. 114 7.1 Première prise de contact.............................. 114 7.2 Ajout de widgets..................................... 116
4 7.3 Ajout de packs...................................... 117 7.4 Ajout de services..................................... 121 7.5 Administration de base............................... 127 8. Procédure de mise à jour de......................... 129 Chapitre 3 Conception d architecture de supervision 1. Recensement d infrastructure.............................. 131 2. Déclaration des services et des équipements.................. 136 2.1 Déclaration de l hôte local............................. 136 2.2 Activation des serveurs Linux.......................... 142 2.3 Activation des serveurs Windows....................... 144 2.3.1 Gestion de la supervision passive.................. 145 2.3.2 Gestion de la supervision active................... 146 2.4 Supervision des switches.............................. 153 2.5 Supervision des châssis HP Blades....................... 156 2.6 Supervision des équipements de virtualisation............ 158 2.6.1 Supervision du cluster vmotion................... 162 2.6.2 Supervision de la machine physique................ 164 2.6.3 Supervision des machines virtuelles................ 166 2.6.4 Supervision du centre d'administration............. 168 2.7 Supervision des équipements utilisateurs................. 170 3. Supervision des serveurs d'infrastructure..................... 170 3.1 Serveur DHCP....................................... 171 3.2 Serveur de temps.................................... 173 3.3 Serveur DNS........................................ 174 4. Activation des dépendances et des notifications............... 176 4.1 Les notifications..................................... 176 4.2 Les contacts et leurs groupes........................... 180 4.3 Les dépendances..................................... 183 5. Architecture de DMZ..................................... 187
Table des matières 5 6. L interface WebUI........................................ 189 6.1 Le dashboard........................................ 190 6.1.1 Le menu latéral................................. 191 6.1.2 La barre de résumé.............................. 193 6.1.3 L'espace widget................................. 194 6.2 Les hôtes........................................... 194 6.3 Les services......................................... 195 6.4 Les incidents........................................ 196 Chapitre 4 Gestion de la configuration 1. De quoi s'agit-il?........................................ 199 1.1 Liste des éléments de la configuration................... 200 1.2 Gestion de la configuration............................ 200 1.3 Enregistrements des états............................. 201 1.4 Audit et catalogage................................... 201 2. Utilisation de modèles (ou templates)....................... 203 2.1 Principe de la factorisation............................. 203 2.2 Concentration de services............................. 205 2.3 Application des templates............................. 206 3. Automatisation de la découverte............................ 209 3.1 Mise en application pour les serveurs.................... 219 3.1.1 windows-srv................................... 220 3.1.2 windows-svc................................... 222 3.1.3 linux-srv...................................... 225 3.1.4 linux-svc...................................... 226 3.2 Mise en application pour les équipements réseau.......... 229 3.2.1 switch-srv..................................... 229 3.2.2 switch-svc..................................... 230 3.3 Mise en application pour les équipements de virtualisation.. 232 3.3.1 Blades-srv..................................... 232 3.3.2 Blades-svc..................................... 232
6 3.3.3 Vmware-srv.................................... 233 3.3.4 Vmware-svc................................... 235 3.3.5 Vm-srv........................................ 237 3.3.6 Vm-svc....................................... 238 4. Groupes et découpage..................................... 239 4.1 Groupes d'hôtes..................................... 239 4.2 Groupes de services................................... 240 5. Découverte avancée...................................... 241 5.1 L'autodécouverte avancée avec nmap.................... 241 5.1.1 Les règles de découverte avancées pour les hôtes...... 242 5.1.2 Les règles de découverte avancées pour les services.... 242 5.2 Module MySQL-Import............................... 244 5.3 Intégration et couplage Puppet......................... 250 5.3.1 De quoi s'agit-il?............................... 251 5.3.2 Installation et configuration...................... 252 5.3.3 Puppet et la sécurité............................. 255 5.3.4 Principe de fonctionnement....................... 256 5.3.5 Application.................................... 261 Chapitre 5 Supervision avancée 1. Introduction............................................ 269 2. Supervision des bases de données........................... 269 2.1 Bases de données Oracle............................... 271 2.2 Bases de données MySQL............................. 276 2.3 Bases de données SQL Server........................... 281 3. Supervision web......................................... 287 3.1 Pack HTTP......................................... 287 3.2 Supervision au travers de pare-feu....................... 290 3.3 Supervision nginx.................................... 292 3.4 Mise en place d'un proxy nginx......................... 295 3.5 Supervision d'application Tomcat....................... 296
Table des matières 7 4. Supervision SAN......................................... 299 4.1 Cas des baies IBM Storwize............................ 299 4.2 Supervision du virtualiseur SVC........................ 307 4.3 Cas des switches SAN................................ 312 5. Supervision de la messagerie............................... 314 5.1 Serveur SMTP....................................... 314 5.2 Serveur POP3....................................... 315 6. Corrélations et KPI....................................... 316 6.1 Corrélations simples.................................. 316 6.2 Business impact..................................... 320 6.3 Corrélations avancées................................. 322 6.4 Sophistication ultime : les KPI.......................... 329 7. Utilisation de la modularité et des tags....................... 332 7.1 Module de tag....................................... 332 7.2 Tag de qualification.................................. 334 7.3 Définition de la topologie réseau........................ 335 8. Changement dynamique.................................. 335 8.1 Changement des dépendances.......................... 335 8.2 Changement de l'importance d'un service................ 337 9. sur Android...................................... 338 Chapitre 6 Sécurisation et redondance 1. Redondance et haute disponibilité.......................... 343 1.1 Redondance des processus............................. 344 1.1.1 Configuration des processus...................... 344 1.1.2 Paramétrage supplémentaire...................... 348 1.1.3 Configuration des clients......................... 350 1.2 Notion de "spare".................................... 354 1.2.1 Mise en œuvre des processus de spare............... 354 1.2.2 Clonage du serveur principal...................... 357
8 1.2.3 Synchronisation depuis................... 360 2. Sécurisation............................................. 363 2.1 Les services volatiles.................................. 363 2.1.1 Quelles particularités pour ce type de services?...... 364 2.1.2 Exemple : détection de scan de ports TCP........... 364 2.2 Sécurisation de la connexion WebUI.................... 366 2.3 Sécurisation du shell SSH............................. 367 2.3.1 Modification du numéro de port SSH............... 368 2.3.2 Filtrage d'accès aux utilisateurs.................... 368 2.3.3 Interdiction du compte root...................... 369 2.4 Sécurisation des protocoles de messagerie................ 370 2.4.1 Protocole POP3S................................ 370 2.4.2 Protocole SMTPS............................... 371 3. Authentification......................................... 373 3.1 Authentification SSO................................. 373 3.2 Utilisation de certificats............................... 374 3.2.1 Configuration primaire.......................... 374 3.2.2 Service de surveillance des certificats............... 376 3.3 Contrôleur de domaine............................... 379 4. Classification par royaume................................ 380 5. Réplication de bases MySQL............................... 389 6. Un mot sur SNMP....................................... 393 Chapitre 7 Développement et programmation 1. et le code Python................................. 395 1.1 Les modules......................................... 396 1.2 Les fonctions........................................ 397 1.3 Les classes.......................................... 398 1.4 Code....................................... 400 1.5 Exemple de programme : le module WebUI............... 401
Table des matières 9 2. Développement de modules................................ 415 2.1 Rappels sur les modules de supervision................... 415 2.2 Module en shell...................................... 417 2.3 Module en Python................................... 419 2.4 Activation des nouveaux plugins....................... 421 3. Focus sur l'interface WebUI................................ 422 3.1 Ajout de module pour l'arbiter.......................... 423 3.2 Illustration : création d'un module arbiter................ 425 3.3 Définition du plugin dans...................... 428 4. Ajout de module pour le broker............................. 429 4.1 Initialisation du module............................... 430 4.2 Méthode d'initialisation............................... 431 4.3 Définition du nouveau module......................... 432 5. Modification de WebUI................................... 433 5.1 Création d'un plugin WebUI........................... 433 5.2 Modèle de page HTML................................ 435 5.3 Cas particulier d'un widget............................ 437 Chapitre 8 Applications et cas pratiques 1. Gestion de parc informatique avec GLPI...................... 441 1.1 Qu'est-ce que GLPI?.................................. 442 1.2 Intégration à l'outil de supervision...................... 444 1.3 Installation de GLPI.................................. 448 1.4 Ajout de modules GLPI............................... 457 1.4.1 Plugin Webservices.............................. 458 1.4.2 Plugin FusionInventory.......................... 461 1.4.3 Plugin Monitoring.............................. 462 2. Inventaire automatisé avec FusionInventory.................. 464 2.1 Configuration du module.............................. 464 2.2 Déploiement de l agent............................... 465
10 2.3 Automatisation du déploiement Puppet.................. 476 2.4 Mise à jour de GLPI.................................. 478 3. Reporting et évolutions................................... 480 3.1 À quoi sert ITIL?.................................... 481 3.2 Les processus ITIL................................... 483 3.3 Le centre de services.................................. 484 3.4 La gestion d'incidents................................. 485 3.5 Démarche de mise en place d'un SLA.................... 489 Conclusion 1. Synthèse des capacités de l'outil............................ 499 1.1 Les bases de la supervision............................. 499 1.2 La mise en œuvre de.......................... 500 1.3 L'utilisation avancée de........................ 502 1.4 La fiabilité et la sécurisation de.................. 503 1.5 Ouverture du champ des possibles...................... 504 1.6 Mise en pratique..................................... 505 2. Conclusions............................................. 506 Index.................................................. 509
Chapitre 5 Supervision avancée 1. Introduction Supervision avancée Après avoir vu comment réaliser une supervision de base des différents équipements ou infrastructures d'entreprise, on peut ensuite déployer la supervision applicative : bases de données, serveurs web, virtualisation de stockage 2. Supervision des bases de données La supervision des bases de données diffère selon que l'on souhaite surveiller des bases Oracle, SQL Server ou MySQL. Les auteurs de ont bien pensé aux administrateurs de bases de données en préparant des packs pour chacun des cas cités ci-dessus. Remarque Il existe également un pack pour les moteurs de bases PostgreSQL et les clusters PostgreSQL.
270 Seul le fichier de déclaration des hôtes est commun, quel que soit le type de base de données. On peut se servir des groupes pour spécifier tel ou tel moteur de base de données : define hostgroup{ hostgroup_name Oracle ; The name of the hostgroup alias Serveurs Oracle ; Long name of the group define hostgroup{ hostgroup_name MySQL ; The name of the hostgroup alias Serveurs MySQL ; Long name of the group define hostgroup{ hostgroup_name MS-SQL ; The name of the hostgroup alias Serveurs MS-SQL ; Long name of the group Ensuite, on peut également définir le fichier des serveurs dédiés aux bases de données, sachant que d'après le modèle de base défini lors des préambules, on dispose de trois bases de données. Exemple de définition du fichier host-bdd.cfg avec une base Oracle, une base MS-SQL et une base MySQL define host{ use host_name address hostgroup_name Oracle define host{ use host_name address hostgroup_name MS-SQL define host{ use host_name address hostgroup_name MySQL generic-host srvbdd01 srvbdd01 generic-host srvbdd02 srvbdd02 generic-host srvbdd03 srvbdd03 Editions ENI - All rights reserved
Supervision avancée Chapitre 5 271 2.1 Bases de données Oracle D'après le contenu des commandes utilisées par le pack oracle, il est nécessaire de récupérer le fichier.tar.gz du programme check_oracle_health sur le site https://labs.consol.de/nagios/check_oracle_health/ afin de le décompresser dans le répertoire temporaire /tmp et le configurer avec le compte root : #./configure --prefix=/var/lib/shinken/libexec --with-user-nagios=shinken --with-group-nagios=shinken # make all # cp plugins-scripts/check_oracle_health /var/lib/shinken/libexec Ensuite il faut récupérer, comme on l'aura fait préalablement avec les autres packs, les fichiers de configuration commands.cfg ainsi que l'ensemble des fichiers se trouvant dans le sous-répertoire services. On peut alors utiliser le modèle se trouvant dans le fichier templates.cfg afin de réaliser les paramétrages nécessaires à la supervision des hôtes et des services de bases de données. Rappel : un autre moyen plus direct d'installer ce plugin consiste à se connecter sur le compte et à exécuter l'instruction d'installation du module nécessaire : $ install -p check_oracle_health Lorsque cela est réalisé, il faut alors intervenir au niveau des bases de données à surveiller pour autoriser l'accès à leurs fonctions internes et permettre la collecte des informations nécessaires. Dans ce but, il faut fournir à un utilisateur dédié (shinken par exemple) des privilèges spécifiques : create user shinken identified by oradbmon; grant create session to shinken; grant select any dictionary to shinken; grant select on V_$SYSSTAT to shinken; grant select on V_$INSTANCE to shinken; grant select on V_$LOG to shinken; grant select on SYS.DBA_DATA_FILES to shinken; grant select on SYS.DBA_FREE_SPACE to shinken;
272 Au cas où certaines bases Oracle 8.1.7 existeraient encore aujourd'hui, voici les droits particuliers à appliquer pour autoriser le compte shinken à y accéder : grant select on sys.dba_tablespaces to shinken ; grant select on dba_temp_files to shinken; grant select on sys.v_$temp_extent_pool to shinken; grant select on sys.v_$temp_space_header to shinken; grant select on sys.v_$session to shinken; La commande check_oracle_health présente de nombreuses options permettant de fournir l'ensemble des paramètres d'authentification, de fonctionnalités et de seuils liés à une instance de base Oracle : Option --connect --user --password --tablespace --datafile --name --name2 (--mode=sql) --warning --critical --runas --environment Commentaire Fournit le nom de l'instance de base de données. Précise le nom du compte Oracle à utiliser. Fournit le mot de passe du compte pour l'authentification. Permet d'effectuer les vérifications uniquement sur le tablespace indiqué en paramètre. Permet d'effectuer les vérifications uniquement sur le fichier indiqué en paramètre. Permet de limiter les vérifications aux types d'objets en paramètres (latch, queues ). Permet en plus de la limitation aux types d'objets passés en paramètre de faire apparaître la requête SQL associée. Précise le seuil d'alerte WARNING. Précise le seuil d'alerte CRITICAL. Permet d'exécuter le script de vérification via une règle sudo (autre compte que celui du propriétaire). Permet de passer des variables d'environnement au script de vérification. Editions ENI - All rights reserved
Supervision avancée Chapitre 5 273 Option --method --units --dbthreshold --statefilsdir --mode Commentaire Permet de préciser la méthode de connexion à l'instance : dbi ou sqlplus. Permet de préciser l'unité du paramètre : %, KB, MB, GB. Permet de lire le seuil depuis la table interne check_oracle_health_threshold. Permet de dérouter les fichiers temporaires de /tmp pour les rediriger vers un répertoire personnel. Permet de préciser quels genres de vérifications on souhaite exécuter. Il existe de nombreuses valeurs. Consulter l'aide en ligne. Exemples de services pour Oracle : Objets invalides define service{ service_description use host_name check_command duplicate_foreach aggregation Tnsping define service{ service_description use host_name check_command duplicate_foreach Oracle-$KEY$-invalid-objects 1hour_short,oracle-service oracle check_oracle_invalid_objects!$key$ _databases /oracle/$key$ Oracle-$KEY$-tnsping 5min_short,oracle-service oracle check_oracle_tnsping!$key$ _databases
274 Il est possible de se passer de l'option --connect (et a fortiori des options --user et --password) à condition de préciser la chaîne de connexion à l'instance au travers de variables d'environnement : NAGIOS SERVICEORACLE_SID : pour préciser le SID de l'instance. NAGIOS SERVICEORACLE_USER : pour préciser le compte Oracle. NAGIOS SERVICEORACLE_PASS : pour préciser le password associé au compte. En termes de supervision des bases de données Oracle, on peut suggérer quelques commandes pratiques permettant non seulement d'assurer un service de qualité mais également d'être certain de la cohérence des données : # permet de s'assurer de la connectivité de l'instance define command { command_name check_oracle_tnsping command_line $PLUGINSDIR$/check_oracle_health --connect "$ARG1$" --user "$ORACLEUSER$" --password "$ORACLEPASSWORD$" --mode tnsping # permet de surveiller les sessions actives define command { command_name check_oracle_session_usage command_line $PLUGINSDIR$/check_oracle_health --connect "$ARG1$" --user "$ORACLEUSER$" --password "$ORACLEPASSWORD$" --dbthreshold --mode session-usage warning 80 --critical 100 # permet de vérifier l'utilisation mémoire des processus define command { command_name check_oracle_process_usage command_line $PLUGINSDIR$/check_oracle_health --connect "$ARG1$" --user "$ORACLEUSER$" --password "$ORACLEPASSWORD$" --dbthreshold --mode process-usage warning 80 --critical 100 # permet de vérifier le bon fonctionnement RMAN (backups) define command { command_name check_oracle_rman_backup_problems command_line $PLUGINSDIR$/check_oracle_health --connect "$ARG1$" --user "$ORACLEUSER$" --password "$ORACLEPASSWORD$" Editions ENI - All rights reserved