PI Services

Le blog des collaborateurs de PI Services

Fonction de collecte de perf via Scom

Bien que la méthode en passant par une requête SQL soit plus rapide, il peut être utile de pouvoir collecter des données de performance spécifique via le sdk Scom.

La fonction suivants prend en paramètre  les données de connexion ($managementServer,$user,$passwd) et les critère de compteurs de performance qui peuvent être regroupé dans le paramètre $criteria, ainsi que le paramètre $HourOffset qui permet de préciser une fenêtre de collecte.

! Attention: Plus ce paramètre en heure est important, plus le nombre de sample renvoyé est important.

 

    # Fonction de recuperation de compteur de performance dans la base OperationsManager       Function GetPerfValueFromScomv2($managementServer,$user,$passwd,$criteria,$monitoringClassId = $null,$monitoringObjectName = $null,$monitoringObjectDisplayName = $null,$objectName = $null,$counterName = $null,$instanceName = $null,$HourOffset,$startTime = (Get-Date).AddHours(-$HourWindow),$endTime = (Get-Date))     {   #Fonction d'ajout de critere a la requete function Add-Criteria() {     param($criteria,$clause)           if ($criteria -ne $null)         {$criteria += " AND $clause"}     else         {$criteria = $clause}               return($criteria) }     #Import du module Scom import-module OperationsManager   #Connexion au management server     $mgConn = New-Object Microsoft.EnterpriseManagement.ManagementGroupConnectionSettings($managementServer) $mgConn.UserName = $user $mgConn.Password = $passwd $mg = New-Object Microsoft.EnterpriseManagement.ManagementGroup($mgConn)     if ($criteria -eq $null) {     if ($monitoringClassId -ne $null) { $criteria = Add-Criteria -criteria $criteria -clause "MonitoringClassId = '{$monitoringClassId}'" }     if ($monitoringObjectDisplayName -ne $null) { $criteria = Add-Criteria -criteria $criteria -clause "MonitoringObjectDisplayName = '$monitoringObjectDisplayName'" }     if ($monitoringObjectName -ne $null) { $criteria = Add-Criteria -criteria $criteria -clause "MonitoringObjectName = '$monitoringObjectName'" }     if ($objectName -ne $null) { $criteria = Add-Criteria -criteria $criteria -clause "ObjectName = '$objectName'" }     if ($counterName -ne $null) { $criteria = Add-Criteria -criteria $criteria -clause "CounterName = '$counterName'" }     if ($instanceName -ne $null) { $criteria = Add-Criteria -criteria $criteria -clause "InstanceName = '$instanceName'" } }   #Creation du reader $reader = $mg.GetMonitoringPerformanceDataReader($criteria) while ($reader.Read()) {     #Creation de l'objet de performance     $perfData = $reader.GetMonitoringPerformanceData()     $valueReader = $perfData.GetValueReader($startTime,$endTime)       #Renvoi des valeurs     while ($valueReader.Read())     {         $perfValue = $valueReader.GetMonitoringPerformanceDataValue()         $perfValue     } }   }        

SCOM 2012 : créer un grand nombre de règles en quelques minutes

Lors de la création d’un nouveau Management Pack pour une application métier, il arrive qu’un grand nombre de règles ou de moniteurs similaires (alerte sur événement windows, collecte de compteur de performance…) doivent être ajoutées.

Il est bien sûr toujours possible de les créer les une après les autres à l’aide de la console SCOM, de l’outil MP Author ou d’un notepad, mais cela peut rapidement devenir très répétitif et inutilement consommateur en temps.

En effet, à l’aide de Visual Studio (qui est disponible en « community edition » gratuite depuis maintenant quelques années, plus d’excuses !) et des Authoring Extensions, il est possible d’automatiser en grande partie ce processus !

Commençez par créer un nouveau projet de type Management Pack 2007 R2 (nul besoin de sélectionner 2012 car nous ne ferons rien qui le justifie ici, et cela permet de conserver la rétrocompatibilité du MP) :

clip_image002

Dans l’explorateur de solutions, faites un clic-droit sur le nom de votre projet et sélectionnez ajouter > nouvel élément.

clip_image004

Sélectionnez Snippet Template, nommez-le et cliquez sur ajouter :

clip_image006

Un bloc de code pré-rempli apparaît (il s’agit du template par défaut, un règle de collecte de compteur de performance; mais rien ne vous empêche d’y substituer votre propre code comme nous le verrons plus loin) :

clip_image008

On remarque immédiatement que les balises les plus couramment modifiées lors de la création d’un MP (ID de la règle, cible, nom du compteur, fréquence de collection…) apparaissent surlignées en jaune, et que leur valeur est quelque peu inhabituelle : il s’agit en fait de variables, qui seront remplacées à la volée lors de l’étape suivante.

Ces variables sont de trois types : #text (une simple chaine de caractères), #choice (une liste déroulante) et #alias (elles permettent de résoudre automatiquement l’alias vers vos MP référencés).

Voyons donc maintenant comment alimenter ces variables.

Retournez dans ajouter > nouvel élément, mais sélectionnez cette fois Snippet Data :

clip_image010

Pour l’instant, cela ne crée rien de bien utile :

clip_image012

Cliquez sur Select snippet type et sélectionnez le Snippet Template préalablement créé :

clip_image014

Cette fois-ci, différentes colonnes sont présentes (elles correspondent aux différentes variables présentes dans le template), et deux possibilités nous sont offertes : ajouter des données manuellement (click here to add a new item) ou les importer depuis un fichier CSV (bouton Import from CSV file) :

clip_image016

Commençons par la première possibilité. En cliquant sur click here to add a new item, une ligne vierge apparait. A vous de renseigner les différents champs :

clip_image018

Imaginons maintenant que nous ayons des dizaines de compteurs à collecter via des règles différentes : les ajouter à la main l’un après l’autre de cette facon reste beaucoup plus pratique (et plus propre !) que de créer les règles les unes après les autres dans la console SCOM, mais on peut faire encore plus rapide à l’aide d’un fichier CSV :

clip_image020

Cliquez sur Import from CSV file et sélectionnez votre fichier CSV. Les valeurs qu’il contient sont automatiquement ajoutées à votre Snippet :

clip_image022

Une fois que vous avez entré les valeurs pour toutes les règles que vous souhaitez créer, cliquez sur enregistrer clip_image024 .

Ici, une erreur se produit car le MP System.Performance.Library est référencé dans le Snippet Template, mais pas dans le projet :

clip_image026

Il faut donc l’ajouter : clic-droit sur References > ajouter dans l’explorateur de solutions et sélectionnez le fichier .mp manquant. Vous pouvez le retrouver sur votre serveur SCOM, ou directement dans le dossier d’installation des VSAE pour les MP les plus communs (C:\Program Files (x86)\System Center Visual Studio Authoring Extensions\References\OM2007R2\Microsoft.Windows.Library.mp )

clip_image027

Répétez l’opération pour chaque MP référencé manquant, puis cliquez à nouveau sur Sauvegarder.

Un nouveau fichier doit apparaître dans l’arborescence de votre explorateur de solutions :

clip_image029

Ouvrez le : il contient le code correspondant à toutes vos règles, généré automatiquement en fonction de vos paramètres d’entrée :

clip_image031

Libre à vous maintenant de laisser libre cours à votre imagination pour créer vos propres Snippet Template correspondant à des moniteurs d’évènements, des scripts vbs etc…

Pour cela, rien de plus simple : recopiez vos bouts de codes en reprenant la nomenclature vue ci-dessus pour les variables, créez un nouveau Snippet de Data et alimentez-le à l’aide d’un fichier csv ou manuellement, comme nous venons de le voir.

clip_image033 Attention : si lors de vos développements, vous utilisez des colonnes contenant « true » ou « false » (par exemple si vous souhaitez définir si une règle ou un moniteur sera activé ou non par défaut), il faut obligatoirement que ces valeurs soient écrites en minuscules ; vous rencontrerez une erreur lors de la sauvegarde dans le cas contraire.

Une fois ces fragments de code obtenus, vous pouvez soit continuer votre développement dans Visual Studio et générer votre MP lorsqu’il est terminé, soit les intégrer par copier/coller dans le code XML d’un MP existant que vous souhaitiez enrichir.

Un grand merci au maitre SCOM Kevin Holman pour l’idée originale de cet article ainsi que pour l’ensemble de son œuvre :)

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

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/

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 } }

 

Disponibilité de Nagios XI 5

 

Depuis début octobre, la version 5 de Nagios XI est disponible.

Fort d’une communauté historique issue de la version Core et d’une énorme base de plugins, cette version propose les évolutions suivantes:

- De nouveaux assistants pour le déploiement des objets et des configurations.

- Des nouveaux templates de supervision.

- Une meilleur interaction avec les systèmes environnants

- Une nouvelle API

- Une amélioration du support de l’internationalisation

- Un système de notification mail amélioré

 

Pour plus de détails:

https://www.nagios.com/xi5/

Nagios – NRPE: Exemple de supervision AD

 

L’exemple suivant montre l’utilisation du plugin check_nrpe avec un script vbs check_ad.vbs pour la supervision des principaux services Active Directory. (NB: Le script check_ad parse la sortie de dcdiag.exe pour déterminer des états)

Prérequis:

      • Sur le serveur Nagios: Serveur NRPE actif
        • Sur le contrôleur de domaine cible: utilitaire dcdiag.exe ; Agent NSCP actif ; NRPE Server activé dans le fichier nsclient.ini (NRPEServer = 1)
               
      Le script utilisé est disponible sur le lien

https://exchange.nagios.org/components/com_mtree/attachment.php?link_id=2332&cf_id=241/

      on copie le script en tant que check_ad.vbs, dans le dossier des scripts de l’agent nscp (par défaut “C:\Program Files\NSClient++\scripts”

2/

    on indique dans le fichier de configuration nsclient.ini l’alias et le chemin correspondant de la manière suivante

; A list of scripts available to run from the CheckExternalScripts module. Syntax is: <command>=<script> <arguments>
[/settings/external scripts/scripts]

check_ad=cscript.exe //Nologo scripts\\check_ad.vbs

 

3/ on redémarre le service NSClient++

 

4/ Sur le serveur Nagios depuis le répertoire des plugins contenant check_nrpe, on teste la commande:   ./check_nrpe -H 192.168.0.55 -c check_ad

 

5/ Définition de la commande dans le fichier command.cfg

#####################################
### COMMANDES VIA CHECK_NRPE #######

# 'check_ad' command definition
define command{
        command_name    check_ad
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_ad
        }

 

6/ Création du service correspondant dans le fichier contenant les definitions de services:

define service{
        use                             local-service
        host_name                       homeserv1
        service_description             AD DCDIAG Result
        check_command                   check_ad

 

 

7/ Le résultat après quelques secondes dans l’affichage d’état du contrôleur de domaine concerné:

image

Script Powershell – Nagios: Alimentation de fichiers d’hôtes

 

Le script suivant:

- interroge l’AD pour récupérer une liste des machines serveurs à superviser

- Détermine si la machine est reconnu (DNS)

- Détermine si la machine répond au ping

- Détermine si la machine héberge le client NSClient++ (NSCP)

- Sur la base de ces infos, des fichiers de config d’hôtes sont construit, une archive du jour (tar.gz) des fichiers à remplacer est créé dans le même répertoire. Les fichiers de conf sont ensuite envoyés par FTP dans le répertoire « /usr/local/nagios/etc/objects/HOME/HOSTS/ » du serveur nagios.

Le demon nagios est redémarré à la suite.