PI Services

Le blog des collaborateurs de PI Services

SCOM – Script Rapport Etat des instances d’une liste de classe (Sortie Html)

Ci-dessous la version Rapport Html du script de l’état des instances d’une liste de classe.

#SCOM - SCRIPT DE REQUETE D'ETAT DES OBJETS D'UNE LISTE DE CLASSE (AVEC GENERATION RAPPORT HTML) #Variables $MGroup = "MyGroup" $MS= "MyMS" $cred = Get-Credential "MyDomain" #Liste de classe a recuperer $ClassList = ('SQL DB Engine','SQL Database','SQL DB File','SQL Agent','SQL Reporting Services','SQL Analysis Services') $backcolor = "#E0ECF8" #Import du module SCOM try { Import-Module -Name OperationsManager -ErrorAction stop } catch { write-host -ForegroundColor red "Erreur lors de l'import du module SCOM" } #Connection au management group $MGroup New-SCOMManagementGroupConnection -ComputerName $MS -Credential $cred #Recuperation des classes $MonitoringClasses = $ClassList | foreach {Get-SCOMClass -DisplayName $_} if ($MonitoringClasses -eq $null) { write-host "ERROR - UNABLE TO RETRIEVE CLASSES" -ForegroundColor red } $report = "<style>BODY{background-color:$backcolor;}</style>" $report = $report + "<br/>" $report = $report + "############################################################################## <br/>" $report = $report + "SCOM Management Group: <b>$MGroup</b> <br/>" $report = $report + "############################################################################## <br/><br/>" #Recuperation des instances de la classe foreach ($class in $MonitoringClasses) { $MonitoringObjects = $class | Get-SCOMClassInstance -erroraction silentlycontinue | Sort-Object -Descending -Property HealthState $classdisplayname = $class.displayname $report = $report + "&emsp;&emsp;**************************************************************** <br/>" $report = $report + "&emsp;&emsp;*** OBJECTS OF CLASS <b>$classdisplayname</b> <br/>" $report = $report + "&emsp;&emsp;**************************************************************** <br/>" $report = $report + "&emsp;&emsp;--- $(get-date -Format F) --- <br/><br/>" $report = $report + "&emsp;&emsp;NUMBER OF OBJECT: $($MonitoringObjects | measure-object | select-object -property count -expandproperty count) <br/><br/>" $report = $report + "&emsp;&emsp;STATE ---------- OBJECT <br/><br/>" foreach ($object in $MonitoringObjects) { switch ($object.HealthState) { "Success" {$report = $report + $("&emsp;&emsp;"; "<font color=#00DF00>" ; $object.HealthState ; "</font>" ; "--------" ; $object.FullName ; "<br/>")} "Error" {$report = $report + $("&emsp;&emsp;";"<font color=#FF0000>" ; $object.HealthState ; "</font>" ; "--------" ; $object.FullName ; "<br/>")} "Warning" {$report = $report + $("&emsp;&emsp;";"<font color=#FFFF00>" ; $object.HealthState ; "</font>" ; "--------" ; $object.FullName ; "<br/>")} "Uninitialized" {$report = $report + $("&emsp;&emsp;";"<font color=#0000FF>" ; $object.HealthState ; "</font>" ; "--------" ; $object.FullName ; "<br/>")} } } $report = $report + "<br/><br/><br/>" } ConvertTo-Html -Body $report | Set-Content P:\InstanceList.htm #Fermeture de la connexion Get-SCOMManagementGroupConnection | Remove-SCOMManagementGroupConnection #Execution du html Invoke-Expression P:\InstanceList.htm

SCOM – Script Rapport Etat des instances d’une liste de classe (Sortie Cmdline)

Le script ci-dessous génère un rapport formaté dans la ligne de commande, de l’état des instances d’une liste de classe.

 

#SCOM - SCRIPT DE REQUETE D'ETAT DES OBJETS D'UNE LISTE DE CLASSE #Variables $MGroup = "MyGroup" $MS= "MyMS" $cred = Get-Credential "MyDomain\" #Liste de classe a recuperer $ClassList = ('SQL DB Engine','SQL Database','SQL DB File','SQL Agent','SQL Reporting Services','SQL Analysis Services') #Import du module SCOM try { Import-Module -Name OperationsManager -ErrorAction stop } catch { write-host -ForegroundColor red "Erreur lors de l'import du module SCOM" } #Connection au management group $MGroup New-SCOMManagementGroupConnection -ComputerName $MS -Credential $cred #Recuperation des classes $MonitoringClasses = $ClassList | foreach {Get-SCOMClass -DisplayName $_} if ($MonitoringClasses -eq $null) { write-host "ERROR - UNABLE TO RETRIEVE CLASSES" -ForegroundColor red } write-host "#################################################### `n" write-host "SCOM Management Group: $MGroup `n" write-host "#################################################### `n`n" #Recuperation des instances de chaque classe foreach ($class in $MonitoringClasses) { $MonitoringObjects = $class | Get-SCOMClassInstance -erroraction silentlycontinue | Sort-Object -Descending -Property HealthState write-host -BackgroundColor white -ForegroundColor blue " **************************************************************** `n" write-host -BackgroundColor white -ForegroundColor blue " *** OBJETS DE LA CLASSE "$class.displayname" `n" write-host -BackgroundColor white -ForegroundColor blue " **************************************************************** `n`n" write-host " --- $(get-date -Format F) --- `n`n" write-host " NUMBER OF OBJECT: $($MonitoringObjects | measure-object | select-object -property count -expandproperty count) `n`n" write-host " STATE ----------------- OBJECT`n`n" foreach ($object in $MonitoringObjects) { switch ($object.HealthState) { "Success" {write-host " " -NoNewline ; write-host -ForegroundColor green $object.HealthState -NoNewline ; write-host " -------- " -NoNewline ; write-host $object.FullName} "Error" {write-host " " -NoNewline ; write-host -ForegroundColor red $object.HealthState -NoNewline ; write-host " -------- " -NoNewline ;write-host $object.FullName} "Warning" {write-host " " -NoNewline ; write-host -ForegroundColor yellow $object.HealthState -NoNewline ; write-host " -------- " -NoNewline ;write-host $object.FullName} "Uninitialized" {write-host " " -NoNewline ; write-host -ForegroundColor blue $object.HealthState -NoNewline ; write-host " -------- " -NoNewline ;write-host $object.FullName} } } "`n" } #Fermeture de la connexion Get-SCOMManagementGroupConnection | Remove-SCOMManagementGroupConnection

OMS – Operations Management Suite – Connexion a SCOM et affichage des données

 

"Operations Management Suite" est un service cloud proposé par Microsoft pour afficher et corréler sous forme de dashboard divers les informations issus de diverses sources de données (La liste evolue) y compris issus d’autres éditeurs. Ces sources de données concerne la supervision, l’automation de processes, les sauvegardes et restaurations, L’analyse d’audit de sécurité, l’analyse du traffic réseau et d’autres sources encore.

SCOM n’est bien sur pas oublié. A la différence que OMS peux fonctionner avec des agent « Microsoft Monitoring Agent » sans SCOM.

Voyons tout de même comment configurer un SCOM existant pour le connecter a un compte OMS.

N.B : Facturé au volume de donnée uploadé, Microsoft propose un compte gratuit limité a 500 MB / jour et 7 jours de retentions de données mais non limité dans le temps. Ce compte est utilisé dans l’exemple ci-dessous.

Il peut être crée via le lien suivant :

https://www.microsoft.com/en-us/server-cloud/operations-management-suite/trial.aspx

 

Si dans la console SCOM, le nœud clip_image001 n’existe pas encore on commence par une mise à jour des managements pack Advisor (ancien nom du service OMS)

Importer les mises à jour des MP Advisor situé dans le dossier d'installation de SCOM a la suite de l'application du dernier RU:

C:\Program Files\Microsoft System Center 2012 R2\Operations Manager\Server\Management Packs for Update Rollups

clip_image002

Fermer et rouvrez la console SCOM

A la suite de cette mise ajour le noeud "Advisor" a disparu et le noeud "Operations Management Suite" est apparu.

clip_image003

Se positionner sur le nœud "Operations Management Suite"

clip_image005

Sélectionner Register to Operations Management Suite

clip_image007

Renseigner le compte de connexion au service OMS.

clip_image009

NB : Cette verification n’est faite qu’a titre de sécurité pour le compte utilisé.

Selectionner Envoyer le code.

clip_image010

Renseigner le code et Envoyer.

clip_image011

Sélectionner le nom du workspace associé au compte OMS précédemment crée.

Cliquer Next.

clip_image012

Cliquer Create

clip_image013

Cliquer Close

clip_image015

La datasource du groupe de management scom connecté apparait dans le portail du service.

https://<nom_du_workspace>.portal.mms.microsoft.com/?returnUrl=%2F#Workspace/overview/index

clip_image017

 

clip_image019

La zone solution Gallery permet d'ajouter des services.

clip_image021

Selectionner par ex Alert Management et cliquer Add

clip_image023

La zone Solutions affiche les solutions installées

clip_image025

Aller sur la console SCOM sur le noeud "Operations Manager Suite\Connection"

Cliquer sur "Add a Computer/Group" en haut à droite

clip_image027

Ajoutez des agents.

La zone "Managed Computers" du noeud "Operations Manager Suite\Connection" contiens les agents ajoutés

clip_image029

Apres quelques minutes la zone « Connected Source » de la console OMS affiche la présence des machines gérés et la fraicheur des données remontées.

clip_image031

La zone « OverView\Settings Dashboard\DATA » permet de configurer les éléments à remonter dans la console OMS (EventLog, Compteur de Performance …) independemment de SCOM.

clip_image033

 

clip_image035

La zone Search est un bon moyen de rechercher rapidement tout les types de données remontés.

clip_image037

Selectionner par ex « All computers with their most recent data »

clip_image039

Nous avons ici 4 serveurs gérés avec leur donnés (TYPE).

La sélection des éléments modifie de manière dynamique la barre de requête en haut de la page comme dans l’exemple ci-dessous permettant d’afficher les données de performance…

clip_image041

clip_image043

…Et plus précisément un compteur en particulier.

clip_image045

N.B : Un ebook gratuit a été mis à disposition pour une immersion assez complete dans OMS :

https://gallery.technet.microsoft.com/Inside-the-Operations-2928e342

Nagios – Exemple de supervision Hardware Dell avec check_openmanage

Ce plugin très complet est utilisé pour la supervision hardware des serveurs Dell sur la base des information fournis par le composant OMSA (Open Manage Server Administrator) sur les serveurs cibles.

Le fonctionnement du plugin est disponible:

-  via NRPE (Nagios Remote Plugin Executor) où les checks sont effectués en local par un .exe dedié (check_openmanage.exe pour les serveur windows) et renvoyé a Nagios

- via SNMP ou les checks sont effectués a distance

L’utilisation de SNMP a l’avantage de ne pas nécessiter d’exécutable sur la machine cible.

Prérequis: Installation fonctionnelle de Dell OMSA (version 5.3 et supérieure) et service SNMP configuré pour autoriser le serveur Nagios

1/ Récupération des sources avec wget:

cd /usr/src

wget http://folk.uio.no/trondham/software/files/check_openmanage-3.7.12.tar.gz

2/ Décompression de l’archive

tar –xvzf check_openmanage-3.7.12.tar.gz

3/ Copie de check_openmanage dans le repertoire des plugins de nagios et des pages de manuel

cp /usr/src/check_openmanage/check_openmanage /usr/local/nagios/libexec

cp /usr/src/check_openmanage/check_openmanage.8 /usr/share/man/man8

cp /usr/src/check_openmanage/check_openmanage.conf.5 /usr/share/man/man5

 

4/ changement des droits :

chown nagios /usr/local/nagios/libexec/check_openmanage

chgrp nagios /usr/local/nagios/libexec/check_openmanage

chmod 755 /usr/local/nagios/libexec/check_openmanage

 

5/ Test de récupération d’information (NB : ce test de debug (-d) affiche l’ensemble des information et ne doit pas être implémenté en tant que commande dans nagios car l’affichage resultant n’est pas exploitable:

. /check_openmanage –H <ip_adress> –C <snmp_community> –d

Capture_check_dell_om_debug_1

Capture_check_dell_om_debug_2

 

Si cette commande renvoi un tableau avec l’ensemble des informations et des état de la machine cible, le fonctionnement du plugin en snmp est OK, et les variantes d’utilisation de commandes peuvent être implémentées:

Ci-dessous quelques exemples des nombreux états qui peuvent être remontés.:

Capture_check_dell_om_display1

Capture_check_dell_om_display_warn

Capture_check_dell_om_display_temp

 

Se référer au lien suivant pour l’ensemble des options disponibles pour la création de commandes avec ce plugin :

http://folk.uio.no/trondham/software/check_openmanage.html

SCOM – Management Pack Nutanix

 

Comtrade Software, a l’origine du management pack pour Citrix, a mis en ligne le management pack pour les environnement Nutanix.

Nutanix propose une solution originale de gestion des infrastructures virtualisées VMware, HyperV et KVM,  basé sur la convergence du stockage et du calcul au sein d’appliance maison clusterisées.

Le management pack répond aux “bonnes pratiques” scom au travers des fonctionnalités suivantes:

- Supervision des clusters Nutanix, de la protection des données, du stockage et des machines virtuelles.

- Decouverte automatique des environnement Citrix XenApp/XenDesktop éxécutés sur les clusters Nutanix et des groupes de VMs liées.

 

http://www.comtradesoftware.com/nutanix-scom-mp/

Verification de l’expiration des certificats d’un serveur ADCS: Check_ADCS_Certificat_Expiration

 

Le script ci-dessous utilise le module powershell PSPKI pour determiner les certificats arrivant a expiration dans $offset jours. (60 par defaut) et alerte si il y a au moins un certificat concernés.

Le module PSPKI est disponible sur le lien https://pspki.codeplex.com/

#SCRIPT DE RAPPORT DES CERTIFICATS ARRIVANT A EXPIRATION # ! : La variable $computername doit contenir imperativement le FQDN du serveur ADCS #Parametres param( [string]$computername = "$env:computername.$env:userdnsdomain", $offset = 60, $WarnNbCert = 1 ) $Scriptname = "Check_ADCS_Certificat_Expiration" #Verification de l'existence d'une source ayant le nom du script dans l'eventlog Application pour loguer certains events Function NewEventSource { if(!(Test-Path "HKLM:\SYSTEM\CurrentControlSet\services\eventlog\Application\$Scriptname")) { New-EventLog -LogName "Application" -Source $Scriptname } } #Log du lancement du script NewEventSource Write-EventLog -LogName application -Source $Scriptname -EntryType Information -EventId 1002 -Message "Execution du script $Scriptname" #Write-Host Write-Host “Rapport des certificats délivrés par $computername arrivant a expiration dans $offset jours” -ForegroundColor “Yellow” #Import PSPKI PowerShell module if(Get-Module -Name PSPKI | Where-Object { $_.name -eq “PSPKI” }) { Write-Host “PSPKI PowerShell module already imported…” -ForegroundColor “Yellow” } else { Write-Host “Importing PSPKI PowerShell module…” -ForegroundColor “Yellow” try { Import-Module -Name PSPKI } catch { write-host "Erreur lors de l'import du module PSPKI - Verifier que le module est disponible" } } Write-Host Write-Host $caname = $computername.ToLower() $todaysdate = Get-Date $count = Get-CertificationAuthority $caname | Get-IssuedRequest -Filter “NotAfter -ge $todaysdate”, “NotAfter -le $((Get-Date).AddDays($offset))” | Measure-Object | Select-Object -Property Count -ExpandProperty count $countdisplay = "Nombre de certificats délivrés par $computername arrivant a expiration dans $offset jours: $count `n" write-host -BackgroundColor white -ForegroundColor Blue $countdisplay $display = $(Get-CertificationAuthority $caname | Get-IssuedRequest -Filter "NotAfter -ge $todaysdate", "NotAfter -le $((Get-Date).AddDays($offset))") write-host "DETAILS:" $display $result = $display | foreach {$_.CommonName ; ":" ; $_.NotAfter ; " **** "} # Ajout a l'eventlog if ($count -ge $WarnNbCert) { NewEventSource Write-EventLog -LogName application -Source $Scriptname -EntryType Warning -EventId 1001 -Message "$countdisplay (CommonName : NotAfter) `n $result" } Else { NewEventSource Write-EventLog -LogName application -Source $Scriptname -EntryType Information -EventId 1000 -Message "$countdisplay" }

Script – Certificats venant a expirer

 

Le script ci-dessous interroge le psdrive dédié au magasin de certificat local a la machine pour lister les certificats dont la date d’expiration approche (paramètre $expireInDays) et alerter si le nombre de certificats concernés depasse le seuil donné (Paramètre $NbThreshold).

Le parametre $blacklist permet d’exclure les certificats dont l'expiration est considéré OK (root & co, on Windows Server 2003, 2008 & 2012)

 

 

####################################################### # Script de supervision de la validité des certificats ####################################################### #Parametres: #$expireInDays - Nombre de jour avant expiration #$NbThreshold - Nombre de certificat au dela duquel alerter #N.B: Le script interroge le psdrive cert: local. param ( [int]$expireInDays=60, #Nombre de jour avant expiration [int]$NbThreshold = 0 #Nombre de certificat au dela duquel alerter ) $Scriptname = "check_ceritificate_expiration" #Verification de l'existence d'une source ayant le nom du script dans l'eventlog Application pour loguer certains events Function NewEventSource { if(!(Test-Path "HKLM:\SYSTEM\CurrentControlSet\services\eventlog\Application\$Scriptname")) { New-EventLog -LogName "Application" -Source $Scriptname } } # Exclusion des certificats tiers dont l'expiration est considéré OK (root & co, on Windows Server 2003, 2008 & 2012) $blacklist=@( "109F1CAED645BB78B3EA2B94C0697C740733031C", "12519AE9CD777A560184F1FBD54215222E95E71F", "127633A94F39CBF6EDF7C7BF64C4B535E9706E9A", "18F7C1FCC3090203FD5BAA2F861A754976C8DD25", "23EF3384E21F70F034C467D4CBA6EB61429F174E", "245C97DF7514E7CF2DF8BE72AE957B9E04741E85", "24A40A1F573643A67F0A4B0749F6A22BF28ABB6B", "24BA6D6C8A5B5837A48DB5FAE919EA675C94D217", "2B84BFBB34EE2EF949FE1CBE30AA026416EB2216", "3A850044D8A195CD401A680C012CB0A3B5F8DC08", "4463C531D7CCC1006794612BB656D3BF8257846F", "47AFB915CDA26D82467B97FA42914468726138DD", "4BA7B9DDD68788E12FF852E1A024204BF286A8F6", "4D8547B7F864132A7F62D9B75B068521F10B68E3", "4DF13947493CFF69CDE554881C5F114E97C3D03B", "4EF2E6670AC9B5091FE06BE0E5483EAAD6BA32D9", "4F65566336DB6598581D584A596C87934D5F2AB4", "51C3247D60F356C7CA3BAF4C3F429DAC93EE7B74", "53DECDF3BC1BDE7C9D1CEDAE718468CA20CC43E7", "587B59FB52D8A683CBE1CA00E6393D7BB923BC92", "5E997CA5945AAB75FFD14804A974BF2AE1DFE7E1", "637162CC59A3A1E25956FA5FA8F60D2E1C52EAC6", "6690C02B922CBD3FF0D0A5994DBD336592887E3F", "67EB337B684CEB0EC2B0760AB488278CDD9597DD", "687EC17E0602E3CD3F7DFBD7E28D57A0199A3F44", "688B6EB807E8EDA5C7B17C4393D0795F0FAE155F", "68ED18B309CD5291C0D3357C1D1141BF883866B1", "720FC15DDC27D456D098FABF3CDD78D31EF5A8DA", "7613BF0BA261006CAC3ED2DDBEF343425357F18B", "7A74410FB0CD5C972A364B71BF031D88A6510E9E", "7AC5FFF8DCBC5583176877073BF751735E9BD358", "7B02312BACC59EC388FEAE12FD277F6A9FB4FAC1", "7CA04FD8064C1CAA32A37AA94375038E8DF8DDC0", "7D7F4414CCEF168ADF6BF40753B5BECD78375931", "7F88CD7223F3C813818C994614A89C99FA3B5247", "838E30F77FDD14AA385ED145009C0E2236494FAA", "8977E8569D2A633AF01D0394851681CE122683A6", "8B24CD8D8B58C6DA72ACE097C7B1E3CEA4DC3DC6", "9078C5A28F9A4325C2A7C73813CDFE13C20F934E", "90DEDE9E4C4E9F6FD88617579DD391BC65A68964", "96974CD6B663A7184526B1D648AD815CF51E801A", "9845A431D51959CAF225322B4A4FE9F223CE6D15", "9BACF3B664EAC5A17BED08437C72E4ACDA12F7E7", "9FC796E8F8524F863AE1496D381242105F1B78F5", "A1505D9843C826DD67ED4EA5209804BDBB0DF502", "A399F76F0CBF4C9DA55E4AC24E8960984B2905B6", "A3E31E20B2E46A328520472D0CDE9523E7260C6D", "A5EC73D48C34FCBEF1005AEB85843524BBFAB727", "B19DD096DCD4E3E0FD676885505A672C438D4E9C", "B533345D06F64516403C00DA03187D3BFEF59156", "B6AF5BE5F878A00114C3D7FEF8C775C34CCD17B6", "B72FFF92D2CE43DE0A8D4C548C503726A81E2B93", "CFDEFE102FDA05BBE4C78D2E4423589005B2571D", "D29F6C98BEFC6D986521543EE8BE56CEBC288CF3", "DBAC3C7AA4254DA1AA5CAAD68468CB88EEDDEEA8", "E38A2B7663B86796436D8DF5898D9FAA6835B238", "EC0C3716EA9EDFADD35DFBD55608E60A05D3CBF3", "EF2DACCBEABB682D32CE4ABD6CB90025236C07BC", "F5A874F3987EB0A9961A564B669A9050F770308A", "F88015D3F98479E1DA553D24FD42BA3F43886AEF") #Recuperation des certificats dont: #l'objet PSParentPath ne contiens pas "Disallowed" #N'est pas dans la blacklist #N'est pas déja expiré #Expire dans $expireInDays jours $allCerts = Get-ChildItem -Path cert: -Recurse | where-object {$_.PSParentPath -notlike "*Disallowed" ` -and ($blacklist -notcontains $_.Thumbprint) ` -and $_.Notafter -gt (get-date) -and $_.Notafter -lt (get-date).AddDays($expireInDays) } | Select-Object -Property PSPath,Issuer,Subject,NotAfter if (@($allCerts | Measure-Object | Select-Object count -ExpandProperty count) -gt $NbThreshold) { write-host -ForegroundColor Yellow "WARNING" write-host -ForegroundColor Yellow "Nombre de certificat venant a expirer dans $expireInDays jours : "$allCerts.count" `n" #Formatage pour affichage et insertion dans l'eventlog [string]$resultat = $allCerts | foreach { $_.PsPath ; $_.Subject ; $_.Issuer ; $_.NotAfter ; "`n" ; "`n"} $resultat NewEventSource $count = $allCerts.count [string]$resultat = $allCerts | foreach { $_.PsPath ; $_.Subject ; $_.Issuer ; $_.NotAfter ; "`n" ; "`n"} Write-EventLog -LogName Application -Source $Scriptname -EntryType Warning -EventId 1001 -Message "WARNING - Nombre de certificat venant a expirer dans $expireInDays jours : $count `n`n ; $resultat " } Else { write-host -ForegroundColor Green "OK" write-host "Nombre de certificat venant a expirer dans $expireInDays jours inferieur ou egal a $NbThreshold" NewEventSource Write-EventLog -LogName Application -Source $Scriptname -EntryType Information -EventId 1000 -Message "OK - Nombre de certificat venant a expirer dans $expireInDays jours inferieur ou egal a $NbThreshold" }

Nagios XI – Import de fichier de config via CCM

 

L’outil de configuration CCM (Core Configuration Manager) permet entre autre l’import de fichier de configuration contenant des définitions d’objets a prendre en compte.

!: L’import de nouveaux objets dans Nagios obéit bien sur aux dépendances possible entre objets en cas de reference a d’autres objets.

Dans cet exemple on va importer deux fichier de config; MyHosts.cfg et MyHostTemplates.cfg qui sont issu d’une version Core de Nagios.

MyHosts.cfg fait référence a des templates contenus dans MyHostTemplates.cfg.

MyHosts.cfg fait référence également a des groupes d’hote (hostgroups) définis dans le même fichier, a la suite.

Fichier MyHosts.cfg:

image

image 

 

Fichier MyHostTemplates.cfg:

image

 

1/ Sur le serveur nagiosxi on copie le fichier MyHosts.cfg sans modification dans le repertoire /usr/local/nagios/etc/hosts et le fichier MyHostTemplates.cfg dans le repertoire parent. /usr/local/nagios/etc (avec les autres fichiers de config natif)

image

image

 

2/ A présent on va sur l’interface NagiosXI puis a partir de la zone de menu, dans Configure – Core Config Manager.

image

 

On sélectionne dans la zone de gauche le lien Tools – Import Config Files

image

 

On voit dans la liste des fichiers de config disponible, nos 2 fichiers ajoutés au préalable

image

 

Selectionner ces 2 fichier et cliquer sur sur Import

image

image

Le message ci-dessous doit s’afficher:

image

En revenant dans un des vues de Monitoring on peut voir de nouveaux hotes avec un message precisant que la configuration n’a pas encore été appliquée.

image

image

 

Cliquer sur Apply Configuration

Si la configuration est OK le message ci-dessous doit s’afficher:

 

image

Apres quelques minutes les nouveaux hotes apparaissent UP dans les vues de monitoring comme Details – Host Detail.

image

image

Nagios XI – Exemple d’Auto-Discovery

 

La fonction de découverte de Nagios XI permet de scanner un réseau pour détecter les devices/hosts disponibles, de détecter leur OS et d’appliquer a l’issu, un template de supervision correspondant issu des plugins disponibles.

 

clip_image002

clip_image004

A partir de la page principale (Home Dashboard), sélectionner Run Auto- Discovery.

clip_image002[4]

Sélectionner New Auto-Discovery job

clip_image004[4]

Renseigner le champ Scan Target avec le réseau a scanner

Cliquer sur Show Advanced Options pour afficher les options ci-dessous

clip_image006

L’option OS Detection activée (On), permet une découverte du système d’exploitation

Cliquer Submit pour exécuter le job de découverte.

clip_image008

Laisser le job s’exécuter …

clip_image010

Dans l’exemple ci-dessus, 17 hosts ou devices ont été trouvés

clip_image012

Le champ Default Service permet d’appliquer à l’issu de l’assistant de découverte, des services à superviser. (None : Aucun service ; Common : des services standards ; All : Tout les services disponible)

Cliquer Next

clip_image013

Les hôtes découverts sont affichés.

Leur nom d’hôtes peut être spécifié dans le champ Host Name.

Les services à superviser à l’issu de l’assistant de découverte peuvent être activés/désactivés à ce niveau.

clip_image015

Par défaut les hôtes et leur services seront supervisés toutes les 5 minutes

En cas de problème détécté, le retry de ces vérifications sera effectué chaque minutes, 5 fois avant génération d’une alerte.

clip_image017

Dans l’exemple ci-dessus Aucune notification n’est envoyée.

clip_image019

Cette étape permet de préciser a quels groupes d’hotes et groupes de services appartiennent les nouveaux hôtes et services, et de quel hôte parent ils dépendent éventuellement. Cette configuration est a effectuer plutôt a posteriori de la découverte.

clip_image021

Cliquer Apply pour appliquer la configuration

clip_image023

La configuration est appliquée

clip_image024

image

Les vues d’hôtes et de services affiche a présent les hôtes et services appliqués.

Script – Deploiement Config Agent NSCP (Nagios)

 

Le script ci-dessous propose d’automatiser le déploiement du fichier de config de l’agent nscp (nsclient.ini) et de fichier de scripts/commandes associés.

Lien du script plus bas.

### SCRIPT DE DEPLOIEMENT DES SCRIPTS/ FICHIERS NSC VERS AGENT NSCP # Chemin du fichier du/des scripts a uploader vers le répertoire scripts de l'agent nsclient $SourceScript="D:\TEMP\SCRIPTS_TO_SEND\MyScript.ps1" # Chemin du fichier NSC Mis a jour, a transferer $SourceInifile="D:\TEMP\CONFIG_TO_SEND\nsclient.ini" #Chemin du repertoire et du sous repertoire Scripts de l'agent Nsclient $NSCProgPath="c$\Program Files\NSClient++" $NSCScriptsPath="c$\Program Files\NSClient++\Scripts" #Chemin du log $logdate=get-date -Format ddMMyyyy--HHmm $log="D:\TEMP\log_$logdate.txt" #Fonction de backup du fichier nsclient.ini Function backup-nscfile ($computer) { Try { copy-item "\\$computer\$NSCProgPath\nsclient.ini" -Destination "\\$computer\$NSCProgPath\nsclient.ini.bak" -ErrorAction Continue } Catch { write-host -BackgroundColor White -ForegroundColor red "Erreur lors de la sauvegarde du fichier nsclient.ini sur $computer" "Erreur lors de la sauvegarde du fichier nsclient.ini sur $computer" | Out-File $log -Append } } #Fonction de copie du nouveau fichier nsclient Function copy-nscfile ($computer) { Try { copy-item $SourceInifile -Destination "\\$computer\$NSCProgPath\" -Force -ErrorAction Continue } Catch { write-host -BackgroundColor White -ForegroundColor red "Erreur lors de la copie du nouveau fichier nsclient.ini sur $computer" "Erreur lors de la copie du nouveau fichier nsclient.ini sur $computer" | Out-File $log -Append } } #Fonction de copie du/des scripts Function copy-script ($computer) { Try { copy-item $SourceScript -Destination "\\$computer\$NSCScriptsPath\" -Force -ErrorAction Continue } Catch { write-host -BackgroundColor White -ForegroundColor red "Erreur lors de la copie du script sur $computer" "Erreur lors de la copie du script sur $computer" | Out-File $log -Append } } #Liste de machines cibles $computers=@("SERVER1";"SERVER2";"SERVER3";"SERVER4";"SERVER5") # Affichage du fichier nsc foreach ($computer in $computers) { #Horodatage $datetime=get-date "$datetime - $computer :" | Out-File $log -Append write-host -BackgroundColor White -ForegroundColor Blue "$computer :" ; if (!(Get-ChildItem -Path "\\$computer\$NSCProgPath\" -ErrorAction SilentlyContinue | Where-Object {$_.Name -eq "nsclient.ini"})) { Write-Host -BackgroundColor White -ForegroundColor Red "Le chemin vers le fichier de config nsclient.ini n'a pas été trouvé sur $computer" "Le chemin vers le fichier de config nsclient.ini n'a pas été trouvé sur $computer" | Out-File $log -Append } Else { write-host -BackgroundColor White -ForegroundColor Blue "copie du fichier de script ..." copy-script -computer $computer write-host -BackgroundColor White -ForegroundColor Blue "backup et remplacement du fichier nsclient.ini..." backup-nscfile -computer $computer copy-nscfile -computer $computer write-host -BackgroundColor White -ForegroundColor Blue "Redemarrage du service nscp..." Get-Service -Name nscp -ComputerName $computer | Restart-Service } }