Objectifs: Théoriquement : Supervision d'un serveur Windows 2008 R2 par un superviseur Shinken à l'aide d'une sonde WMI Pratiquement : Configuration du module wmi sur Windows2008 Installation et test de la sonde wmi sur le superviseur Shinken Lancement de la supervision 2008 Matériel nécessaire une machine virtuelle avec Linux Debian 64 bits graphique installé et Shinken installé et configuré une machine virtuelle Windows 2008 une machine Windows Seven Organisation Vous travaillerez par binôme avec 2 machines, une machine superviseur avec Shinken installé et une machine Windows Server 2008 à superviser Résultat attendu Un compte rendu des différentes étapes comportant notamment les fichiers de configuration commentés et les tests effectués (copies d'écran commentées à l'appui) Sources : http://wwwshinken-monitoringorg/wiki/packs/windows et de nombreuses autres sources http://wwwreseaucertaorg CERTA - février 2014 v10 Page 1
Comment superviser un serveur sous Windows? Le modèle Windows prévu dans Shinken permet de superviser les éléments suivants sur Windows entre autres : Memory usage CPU load Disk usage Service states Running processes Event logs (Application or system) etc Il y a 2 façons de superviser Windows proposées par Shinken (et Nagios) : avec un agent installé sur Windows comme NSClient++ sans agent en utilisant des requêtes WMI distantes Nous utiliserons dans cette activité la 2ème méthode On pourra étudier la première méthode à travers cette page: http://wwwshinken-monitoringorg/wiki/windows_monitoring_with_nsclient Organisation du travail On va travailler par binôme Chaque binôme gérera un serveur 2008R2 et un serveur Shinken Il faut vérifier que les 2 serveurs communiquent (il faut "pinguer" à partir de Windows à cause du firewall installé sur celui-ci qui par défaut bloque icmp) Vous vous mettrez sur un plan d'adressage spécifique à vos 2 machines virtuelles On utilisera les adresses 17216x53 pour le serveur Windows et 17216x77 pour le serveur Shinken X prendra une valeur différente comprise entre 1 et 12 en fonction des binômes Remarque : il sera nécessaire parfois que les machines virtuelles accèdent à Internet, dans ce cas on peut momentanément les configurer en DHCP, le temps de l'accès http://wwwreseaucertaorg CERTA - février 2014 v10 Page 2
Partie 1 : configurer WMI sur un serveur Windows 2008 R2 Qu'est ce que WMI? Voyons ce que dit Wikipedia : Windows Management Instrumentation (WMI) est l implémentation de Microsoft du Web-Based Enterprise Management (WBEM), le standard du Distributed Management Task Force (DMTF) Il prend en charge le modèle de données CIM (Common Information Model) qui décrit les objets d'un environnement de gestion WMI est un système de gestion interne de Windows qui prend en charge la surveillance et le contrôle de ressources système via un ensemble d interfaces Il fournit un modèle cohérent et organisé logiquement des états de Windows Il permet à des scripts WSH (par exemple VBScript) de gérer Windows localement ou à distance C'est grâce à WMI que le composant "Propriétés système" de Windows peut afficher les propriétés du système sur un ordinateur distant ou local WMI est pré-installé sur Windows Me, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Windows Server 2003, Windows Server 2008, Windows Server 2012 WMIC (Windows Management Instrumentation Command-line) fournit une interface de ligne de commande dans l'infrastructure de gestion Windows (WMI) qui permet de tirer parti de WMI pour gérer les ordinateurs Windows PowerShell permet aussi d'utiliser simplement WMI depuis la ligne de commande On va tout d'abord vérifier que le service WMI tourne sur notre machine virtuelle Il s'agit du service "infrastructure de gestion Windows" (en version anglaise : Windows Management Instrument) On va créer un utilisateur Windows qui sera utilisé par la sonde Shinken pour accéder au service WMI à distance http://wwwreseaucertaorg CERTA - février 2014 v10 Page 3
On va maintenant lui donner des droits Dans la textbox "démarrer" saisir DCOMCnfgexe, puis faire un clic droit sur "poste de travail" et choisir "propriétés" Cliquer sur "modifier les limites" dans la partie "Autorisations d'exécution et d'activation" Et rajouter l'utilisateur "wmiagent" en lui donnant des droits distants (remote) Il faut lancer maintenant la console de gestion wmi avec WMImgmtmsc, faire un clic droit sur "Contrôle WMI (local)" puis "propriétés" http://wwwreseaucertaorg CERTA - février 2014 v10 Page 4
Cliquer sur l'onglet "Sécurité" : Sélectionnez "CIMV2" et cliquez sur le bouton "Sécurité" Ajoutez l'agent "wmiagent" et donnez-lui les droits suivants : http://wwwreseaucertaorg CERTA - février 2014 v10 Page 5
Il faut maintenant vérifier les règles du firewall (elles sont bien configurées sur 2008 mais pas sur 2003) Saisissez "Pare feu" dans la textbox "Démarrer" Ici fonctions avancées : Vérifiez aussi les programmes autorisés en tapant «parefeu» simplement Si on veut autorise la sonde check_ping il faut vérifier ces éléments dans le pare-feu Dans l'onglet "Règles de trafic entrant" "Partage de fichiers et d'imprimante (Demande d'écho - Trafic entrant ICMPv4)" Dans l'onglet "Règles de trafic sortant" "Partage de fichiers et d'imprimante (Demande d'écho - Trafic sortant ICMPv4)" http://wwwreseaucertaorg CERTA - février 2014 v10 Page 6
Du côté Windows c'est terminé http://wwwreseaucertaorg CERTA - février 2014 v10 Page 7
Partie 2 : Configuration de Shinken Utilisation d'un pack Le pack que nous allons utiliser doit être installé avec l utilisateur shinken shinken install windows Il se trouvera en suite dans /etc/shinken/packs/windows/ Ce pack utilise notamment la sonde check_wmi_pluspl, qui est un programme perl nécessitant d installer quelques compléments (remarque : root@debianwheezy:~# apt-get install libconfiginifilesperl Lecture des listes de paquets Fait Construction de l'arbre des dépendances Lecture des informations d'état Fait Note : sélection de libconfig-inifiles-perl pour l'expression rationnelle «libconfiginifilesperl» Les paquets supplémentaires suivants seront installés : liblist-moreutils-perl Les NOUVEAUX paquets suivants seront installés : libconfig-inifiles-perl liblist-moreutils-perl 0 mis à jour, 2 nouvellement installés, 0 à enlever et 57 non mis à jour Il est nécessaire de prendre 107 ko dans les archives Après cette opération, 271 ko d'espace disque supplémentaires seront utilisés Souhaitez-vous continuer [O/n]? o Réception de : 1 http://ftpfrdebianorg/debian/ wheezy/main liblist-moreutils-perl amd64 033-1+b1 [52,5 kb] Réception de : 2 http://ftpfrdebianorg/debian/ wheezy/main libconfig-inifiles-perl all 275-1 [54,8 kb] 107 ko réceptionnés en 0s (290 ko/s) Sélection du paquet liblist-moreutils-perl précédemment désélectionné (Lecture de la base de données 126530 fichiers et répertoires déjà installés) Dépaquetage de liblist-moreutils-perl (à partir de /liblist-moreutils-perl_033-1+b1_amd64deb) Sélection du paquet libconfig-inifiles-perl précédemment désélectionné Dépaquetage de libconfig-inifiles-perl (à partir de /libconfig-inifiles-perl_275-1_alldeb) Traitement des actions différées («triggers») pour «man-db» Paramétrage de liblist-moreutils-perl (033-1+b1) Paramétrage de libconfig-inifiles-perl (275-1) Il faut completer l installation en ajoutant des formats de données nécessaires à la sonde Pour cela on utilise un gestionnaire d archive PERL : CPAN (Comprehensive Perl Archive Network) Configuration CPAN root@debianwheezy:~# perl -MCPAN -e shell CPANpm requires configuration, but most of it can be done automatically If you answer 'no' below, you will enter an interactive dialog for each configuration option instead Would you like to configure as much as possible automatically? [yes] Autoconfigured everything but 'urllist' Now you need to choose your CPAN mirror sites You can let me pick mirrors for you, you can select them from a list or you can enter them by hand Would you like me to automatically choose some CPAN mirror sites for you? (This means connecting to the Internet) [yes] Trying to fetch a mirror list from the Internet Fetching with LWP: http://wwwperlorg/cpan/mirroredby http://wwwreseaucertaorg CERTA - février 2014 v10 Page 8
Looking for CPAN mirrors near you (please be patient) done! New urllist http://mirroriscoza/pub/cpan/ http://ftpwacoza/pub/cpan/ http://mirrorucuacug/cpan/ Autoconfiguration complete commit: wrote '/root/cpan/cpan/myconfigpm' You can re-run configuration any time with 'o conf init' in the CPAN shell cpan shell -- CPAN exploration and modules installation (v1960001) Enter 'h' for help Installation des formats perl manquants cpan[1]> install Number::Format Fetching with LWP: http://mirroriscoza/pub/cpan/authors/01mailrctxtgz Going to read '/root/cpan/sources/authors/01mailrctxtgz' etc cpan[2]> install DateTime::Infinite Running install for module 'DateTime::Infinite' Running make for D/DR/DROLSKY/DateTime-118targz Fetching with LWP: http://mirroriscoza/puetc Si on regarde le contenu de commandscfg dans ce "pack" on trouve entre autre ceci : define command { command_name check_windows_disks command_line $PLUGINSDIR$/check_wmi_pluspl -H $HOSTADDRESS$ -u "$_HOSTDOMAINUSER$" -p "$_HOSTDOMAINPASSWORD$" -m checkdrivesize -a '' -w 90 -c 95 -o 0-3 0 # Will look for the $ARG1$ (check_windows_eventlogs!application for example) log for at least Severity Level "Warning", were # recorded in the last 1 hours define command { command_namecheck_windows_eventlogs command_line $PLUGINSDIR$/check_wmi_pluspl -H $HOSTADDRESS$ -u "$_HOSTDOMAINUSER$" -p "$_HOSTDOMAINPASSWORD$" -m checkeventlog -a $ARG1$ -o 2-3 1 -w 1 -c 2 # Look for a recent reboot define command { command_namecheck_windows_reboot command_line $PLUGINSDIR$/check_wmi_pluspl -H $HOSTADDRESS$ -u "$_HOSTDOMAINUSER$" -p "$_HOSTDOMAINPASSWORD$" -m checkuptime -w '5min:' -c '15min:' # Look for the physical memory define command { command_namecheck_windows_physical_memory command_line $PLUGINSDIR$/check_wmi_pluspl -H $HOSTADDRESS$ -u "$_HOSTDOMAINUSER$" -p "$_HOSTDOMAINPASSWORD$" -m checkmem -w 80 -c 90 # And look for swap define command { command_namecheck_windows_swap http://wwwreseaucertaorg CERTA - février 2014 v10 Page 9
command_line $PLUGINSDIR$/check_wmi_pluspl -H $HOSTADDRESS$ -u "$_HOSTDOMAINUSER$" -p "$_HOSTDOMAINPASSWORD$" -m checkpage -a auto # Look for overall CPU define command { command_namecheck_windows_overall_cpu command_line $PLUGINSDIR$/check_wmi_pluspl -H $HOSTADDRESS$ -u "$_HOSTDOMAINUSER$" -p "$_HOSTDOMAINPASSWORD$" -m checkcpu -w 80 -c 90 On constate un appel presque systématique à la commande check_wmi_pluspl Il nous faut donc bien sûr installer cette commande (elle est normalement installée si vous avez fait l installation avec l utilisateur Shinken) On teste à nouveau : shinken@debianwheezy:~$:/var/lib/shinken/libexec# /check_wmi_pluspl -H 192168125 -u "domainelocal\wmiagent" -p "wmiagent" -m checkeventlog OK - 0 event(s) of at least Severity Level "Error", were recorded in the last 1 hours from the System Event Log 'Event Count'=0; shinken@debianwheezy:/var/lib/shinken/libexec# /check_wmi_pluspl -H 192168125 -u "domainelocal\wmiagent" -p "wmiagent" -m checkcpu -w 80 -c 90 OK (Sample Period 21 sec) - Average CPU Utilisation Need at least 2 WMI samples% Ça doit fonctionner normalement Configuration des fichiers de supervision Paramétrer les paramètres ;-) On va modifier les paramètres dans le fichier /etc/shinken/resource d/active-directorycfg # Active Directory and LDAP $DOMAIN$=sisr5 $DOMAINUSERSHORT$=wmiagent $DOMAINUSER$=$DOMAIN$\\$DOMAINUSERSHORT$ $DOMAINPASSWORD$=wmiagent $LDAPBASE$=dc=sisr5,dc=org Écrivez un fichier host pour notre machine Windows (qui ici a pour adresse 1721610010 pour moi, à adapter pour vous) shinken@debianwheezy:/etc/shinken//hosts# w2008r2cfg shinken@debianwheezy:/etc/shinken//hosts# gedit w2008r2cfg On saisit dans ce fichier la définition suivante (remarque : on utilise ici une adresse IP car on n'a pas de serveur DNS sur le réseau, ce qui n'est pas bien, mais on est dans un environnement minimal de test) define host{ use windows,generic-host contact_groups admins host_name w2008r2 http://wwwreseaucertaorg CERTA - février 2014 v10 Page 10
address 1721610010 contacts roger Comme on peut le constater, on utilise le modèle "windows" duquel notre machine hérite Un petit contrôle du fichier de configuration, ça ne fait pas de mal! shinken@debianwheezy:/etc/shinken//hosts# service shinken check Doing config check Ça semble fonctionner : on relance shinken@debianwheezy:/etc/shinken//hosts# service shinken restart Restarting scheduler Restarting poller Restarting reactionner Restarting broker Restarting receiver Restarting arbiter Doing config check Et on regarde le résultat sur webui Ça ne se présente pas trop mal http://wwwreseaucertaorg CERTA - février 2014 v10 Page 11
Partie 3 : mise au point Coté Windows 2008 R2 On peut regarder l authentification sur le gestionnaire d événements Coté Shinken : Il faut tester chaque commande du pack windows, sur un terminal avec l utilisateur shinken pour les mettre au point On peut s aider avec le site suivant qui nous donne des exemples d utilisation avec la ligne de commandes http://wwwreseaucertaorg CERTA - février 2014 v10 Page 12
Certaines commandes difficiles à mettre au point peuvent être supprimées des services de l hôte windows pour éviter les erreurs http://wwwreseaucertaorg CERTA - février 2014 v10 Page 13