Comment estimer au plus pret la taille de la base DatawareHouse (OperationsManagerDW database) ?

Il est souvent difficile lors d'une mise en place d'une infrastructure d'estimer la taille de la base Datawarehouse. Il existe plusieurs techniques de prévision, toutes sont valables. Mais elles ont toutes l'inconvénient de ne pas garantir que cette taille soit correctement estimée avec tous les problèmes de "rezise" qui peuvent arriver par la suite.

La meilleure approche consiste a utiliser une de ces méthodes pour estimer la taille de la base , on affecte un coefficient de sécurité à cette estimation et on attend.

On attend quoi ? Hé bien on attends que cela se remplisse un petit peu . A partir du moment ou l'ensemble des management Packs sont installés la base Datawarehouse de SCOM consomme une quantité quotidienne de donnée en "mode de croisière". Le but est alors d'extrapoler sur le comportement réelle de cette base sa taille dans plusieurs mois.

1- aprés quelques temps compter le nombre de jours de données en base .

Pour cela pas la peine de tenir des comptes sur un petit calepin :

select  
min(datetime)as MinDate,
max(datetime)as MaxDate ,
datediff(d,min(datetime),max(datetime)) AS NoOfDaysInDataSet
from Perf.vPerfHourly



Par exemple : 90 jours



2- Extrapoler la taille de la base



Avant tout regardons quel est le paramétrage de rétention




SELECT AggregationIntervalDurationMinutes, BuildAggregationStoredProcedureName, GroomStoredProcedureName, MaxDataAgeDays, GroomingIntervalMinutes FROM StandardDatasetAggregation 



A l'aide d'un rapport de type  "DISK USAGE" , nous avons l'espace utilisé dans la base par les données. Par exemple 9 Go



A l'aide d'un rapide calcul , nous concluons que la base prend en moyenne 1 Go tous les 10 jours, donc pour 400 jours la taille de la base sera environs de 40 Go.



Pour modifier la rétention de la base datawarehouse voir ICI




Garder en tête que la base Datawarehouse est en mode Auto-Growth de 10%.

Les meilleures pratiques Hyper-V 1.0 : Les antivirus

Certains comportements, peut-être liées au côté parfois un peu intrusif des anti-virus (ou au côté parfois un peu protecteur des mécanismes Windows), peuvent avoir pour conséquences certains dysfonctionnements comme ceux-ci :

  • Lors de la creation ou du démarrage d'une machine virtuelle, les messages suivants peuvent être affichés :
    • The requested operation cannot be performed on a file with a user-mapped section open. (0x800704C8)
    • 'VMName' Microsoft Synthetic Ethernet Port (Instance ID {7E0DA81A-A7B4-4DFD-869F-37002C36D816}): Failed to Power On with Error 'The specified network resource or device is no longer available.' (0x80070037).
    • The I/O operation has been aborted because of either a thread exit or an application request. (0x800703E3)
  • Les machines virtuelles disparaissent de la console Hyper-V Management Console

Dans ces cas de figure, il est recommandé d'ajouter des exclusions au scan temps-réel des anti-virus installés sur les hôtes.

Exclure :

  • Le répertoire par défaut des fichiers de configuration des machines virtuelles : par défaut C:\ProgramData\Microsoft\Windows\Hyper-V
    • Le(s) répertoire(s) des fichiers de configuration machines virtuelles qui auraient pu être créés
  • Le répertoire contenant les VHDs : par défaut C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks
    • Le(s) répertoire(s) contenant les VHDs qui auraient pu être créés
  • Le(s) répertoire(s) où sont stockés les snapshots
  • Le fichier VMMS.EXE (c:\windows\system32)
  • Le fichier VMWP.EXE (c:\windows\system32)

Vous retrouverez l'intégralité de l'article technique à l'adresse suivante : http://support.microsoft.com/kb/961804

Le TOP 14 des incidents le plus souvent rencontrés avec Hyper-V 1.0

Non, je ne vais pas parler Rugby mais revenir sur le TOP 14 des problèmes Hyper-V , un article de  Windows Internals - L'équipe Française de Support Windows

Installation

1-Le système se fige au moment du redémarrage à l'étape "Configuring Updates Stage 3 of 3" après l'activation, la désactivation ou la mise à jour du rôle Hyper-V

Cause : HP Network Configuration Utility

Solution : KB950792 When you try to enable, disable, or update Hyper-V technology, the process stops responding

2-Après l'installation du rôle Hyper-V, une machine nouvellement créée ne parvient pas à démarrer avec le message suivant : "The virtual machine could not be started because the hypervisor is not running"

Cause : la fonctionnalité de virtualisation matérielle ou la fonctionnalité DEP (Data Execution Prevention) sont désactivées dans le BIOS

Solution : Activer la fonctionnalité de virtualisation matérielle (Intel-VT ou AMD-V en fonction du fabricant de processeur) ou la fonctionnalité DEP dans le BIOS.

Note : ce prérequis est documenté dans les release notes

Périphériques virtuels et pilotes

3-La carte réseau "Synthetic NIC" est listée comme un périphérique inconnu dans le gestionnaire de périphérique

Cause : les Integration Components ne sont pas installés

Solution : installer les Integration Components dans la machine virtuelle

4-Impossibilité d'associer le port COM virtuel a un port COM physique

Cause : c'est un comportement par défaut (ou pour reprendre le jargon : By Design) documenté dans l'aide

5-Les disques dynamiques attachés à un contrôleur SCSI dans une machine virtuelle Windows Server 2003 sont en statut "Offline" après redémarrage de la VM

Cause : une mauvaise valeur de démarrage a été configurée pour Storsvc dans la base de registre

Solution : modifier la valeur de la clé "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\storsvc\Start" pour qu'elle soit à 3

Integration Components

6-Lors de la tentative d'installation des Integration Components dans une machine virtuelle Windows Server 2003, le message suivant est affiché :

"Unsupported Guest OS

An error has occurred:  The specified program requires a newer version of Windows"

Cause : les Integration Components ne sont pas installables sous Windows Server 2003 RTM et SP1

Solution : appliquer le Service Pack 2 (voir fiche technique KB950050 pour les systèmes supportés par les ICs)

Etat et paramètres des machines virtuelles

7-Les machines virtuelles ont un statut "Paused-Critical"

Cause : manque d'espace disque disponible sur le volume hébergeant les .VHD et .AVHD

Solution : libérer de l'espace !

8-Lors de la création ou du démarrage d'une machine virtuelle, le message suivante est affiché : "The requested operation cannot be performed on a file with a user-mapped section open. (0x800704C8)"

Cause : ce dysfonctionnement peut être causé par les composants de scan realtime des anti-virus installés sur l'hôte Hyper-V

Solution : exclure du scan realtime les éléments listés ci-dessous

  • Le dossier par défaut contenant la configuration des machines virtuelles (C:\ProgramData\Microsoft\Windows\Hyper-V\Virtual Machines)
  • Le dossier personnalisé contenant la configuration des machines virtuelles
  • Le dossier par défaut contenant les fichiers .VHD (C:\Users\Public\Documents\Hyper-V\Virtual Hard Disks)
  • Le dossier personnalisé contenant les fichiers .VHD
  • Le dossier contenant les snapshots
  • Vmms.exe
  • Vmwp.exe

9-Les modifications des paramètres d'une machine virtuelle effectuées sur un noeud d'un cluster ne sont pas présentes sur le second noeud après un failover

Cause : l'option "Refresh Virtual Machine Configuration" n'a pas été utilisée avant la bascule

Solution : lorsque le paramétrage d'une machine virtuelle hébergée sur un cluster est modifié, il est nécessaire de forcer un "Refresh Virtual Machine Configuration" avant la bascule

Ressource : Ask the Core Team - Cluster Resource Type options for Hyper-V

Snapshots

10-Perte des snapshots

Cause : le disque VHD a été étendu

Solution : restaurer le VHD depuis une sauvegarde

Note : comme il l'est indiqué dans la documentation technique, les snapshots ne sont pas supportés comme une solution de sauvegarde

11-Une machine virtuelle échoue lors de son démarrage

Cause : les fichiers .AVHD ont été supprimés pour récupérer de l'espace disque

Solution : restaurer les fichiers .AVHD depuis une sauvegarde

Sauvegarde avec le writer VSS piur Hyper-V

12-Comment sauvegarder les machines virtuelles avec Windows Server Backup ?

Solution : Ask the Core Team - How to enable Windows Server Backup support for the Hyper-V VSS Writer

Virtual Network Manager

13-Des problèmes de connectivité apparaissent sur les machines virtuelles et/ou sur l'hôte

Cause : présence de solution de teaming réseau

Solution : désinstaller la solution de teaming

Console de management Hyper-V

14-Lors de la tentative de création ou de modification d'une machine virtuelle le message suivant est affiché : "You might not have permission to perform this task"

Cause : il existe plusieurs explications pour ce dysfonctionnement mais la plus commune est qu'une console Hyper-V en version beta est utilisée pour gérer un hôte Hyper-V RTM

Solution : installer la version RTM de la console de management Hyper-V disponible depuis la fiche technique KB950050

Ressources supplémentaires

Virtualization with Hyper-V: FAQ (en Anglais)

Hyper-V Release Notes (en Anglais)

Hyper-V Planning and Deployment Guide (en Anglais)

Hyper-V Getting Started Guide (en Anglais)

Hyper-V Step-by-Step Guide: Hyper-V and Failover Clustering (en Anglais)

Virtualization with Hyper-V: Supported Guest Operating Systems (en Anglais)

Virtualization with Hyper-V: Application Support (en Anglais)

Microsoft Assessment and Planning Toolkit (en Anglais)

Microsoft Virtualization (en Anglais)

Windows Virtualization Team Blog (en Anglais)

Outil de Migration des fichiers VMC Virtual Server vers des fichiers compatibles Hyper-V

L'outil VMC2HV de Matthijs ten Seldam permet de convertir les fichiers VMC de Virtual Server et Virtual PC fichier au format Hyper-V. Il permet donc de récupérer les informations stockés dans les fichier VMC et de conserver/convertir la configuration vers Hyper-V.

Voici quelques fonctionnalités:

  • Edition de la configuration matérielle
  • Configuration de l'adresse MAC
  • Création de machine virtuelle sur serveur Hyper-V local ou distant
  • Manipulation de différents format d'image vhd, vfd

image

Télécharger la version x86.
Télécharger le version x64.

Objets Visio Opsmgr et ressource kit ACS par SecureVantage

SecureVantage spécialisé sur les solutions autour de ACS (Audit Collection Services) d'Operations Manager vient de publier une mise à jour de leur ressource Kit qui est gratuit.

Ce Kit permet de vous aider dans la conception, impléméntation et gestion des solutions ACS

Ce kit contient les élements suivants :

ACS Resource Kit v1.1 version du 16/12/2008

1. ACS Administrators Quick Reference – ACS newbie cheat sheet of common commands and configurations
2. ACS Database and Disk Planning Calculator – Plan online, offline and archive storage needs plus disk requirements for the online audit database
3. ACS Database Event Analysis
a. ACS Summary Stats - XLS you can connect to ACS DB for event load analysis
b. Query Active Partition for Event Counts
c. Query Active Partition for Specific Events
d. Windows Security Auditing Reference List – List of windows security events, settings and common configuration items for Windows XP, Vista, Windows Server 2003 & 2008
4. ACS Database Utilities
a. Groom Specific Events from Audit Database
5. ACS Noise Filtering
a. ACS Noise Filter Guide
b. My Generic Filter – Sample noise filter
c. Filter Setup Kit – Auto apply generic filter sets after ACS installation
6. ACS Security Event Creation Testing – Scripts to create events for over 50 audit scenarios
7. ACS Visio Stencils – Microsoft Office Visio Stencils of common ACS components

Le liens : http://www.securevantage.com/docs/ACS%20Resource%20Kit.zip

Le site SecureVantage

La notification SMS sans passerelle SMS, c'est possible.

Le jeu d'outils du moteur de notifications d'Operations Manager offre des options de notification (appelées canaux de notification ou fournisseurs) telles que la messagerie instantanée et le SMS (qui requiert un fournisseur SMS tiers installé sur le serveur d'administration).

Les abonnements aux notifications incluent une option de définition de la portée pour que les administrateurs puissent limiter la visibilité des types et groupes d'objets disponibles aux rôles d'opérateurs et cibler plus précisément les abonnements aux notifications.

Le vieillissement des alertes (escalade) permet d'envoyer une notification lorsqu'une alerte qui satisfait les critères définis dans l'abonnement reste dans un état de résolution donné pendant une période définie par l'utilisateur.

Les fournisseurs de  notifications sont donc au nombre de 4 :

1.     Email

2.     IM

3.     SMS

4.     Ligne de commande, scripts, programmes tiers

 

Pour envoyer un SMS il faut une passerelle SMS , c'est a dire soit une passerelle de service soit un GSM connecté au serveur. La mise en place est couteuse pour la première solution, la qualité de service est aléatoire pour la deuxième.

Alors comment faire à moindre frais ?

Le principe est simple envoyer un message a un service Mail2SMS pour ensuite recevoir le message sur son mobile. il existe de nombreux fournisseurs de passerelle Mail2SMS. Ensuite il faudra utiliser un script pour envoyer le mail de façon a avoir une plus grande souplesse dans le formatage du mail.

Exemple de configuration

Full path to file :  C:\Windows\System32\cmd.exe

Ligne de commande :

/c C:\....\Scripts\Email2SMSAlert.vbs //B //H:CScript //Nologo //T:20 "$Data/Context/DataItem/AlertName$" "$Data/Context/DataItem/ManagedEntityDisplayName$" "$Data[Default='No Description']/Context/DataItem/AlertDescription$" "$Data/Context/DataItem/Severity$" "$Data/Context/DataItem/ResolutionState$" "$Data/Context/DataItem/Priority$"



Repertoire de travail : C:\....\Scripts



Le script suivant Email2SMSAlert.vbs est bien su situé dans C:\....\Scripts




' ---------------------------------------------------------------------------------' 

' ENVOI MAIL2SMS 2009

' ---------------------------------------------------------------------------------

' ************************************************************

' GET PARAMETERS INTO SCRIPT ( notification command channel)

' ************************************************************


Option Explicit

Dim colNamedArguments

Dim AlertDescription

Dim AlertSource

Dim AlertName

Dim AlertSev

Dim AlertPrio

Dim AlertState

Dim objEmail

Dim objShell

Dim strContents

Dim strEventCreate

Dim strEventDescription

Dim strFrom

Dim strSub

Dim strBody

Dim strSMTP

Dim strTo

DIM TemplateFile

DIM fso

DIM fichierSMS

DIM oAPI





'Declaration des constantes events type pour le debug

Const EVENT_TYPE_ERROR = 1

Const EVENT_TYPE_WARNING = 2

Const EVENT_TYPE_SUCCESS = 4



'Declaration des constantes lecture fichier source des contacts SMS

Const ForReading = 1



'Emplacement du fichier des correspondant SMS-----------------



TemplateFile = "D:\......\Scripts\EmailAlert_sms.txt"



Set oAPI = CreateObject("MOM.ScriptAPI")

Set colNamedArguments = Wscript.Arguments.Named

Set objShell = CreateObject("Wscript.Shell")



' c:\windows\system32\cmd.exe

' Exemple de la ligne de commande :

' /c D:\....\Scripts\EmailAlert.vbs "$Data/Context/DataItem/AlertName$" "$Data/Context/DataItem/ManagedEntityDisplayName$" "$Data[Default='No Description']/Context/DataItem/AlertDescription$" "$Data/Context/DataItem/Severity$" "$Data/Context/DataItem/ResolutionState$" "$Data/Context/DataItem/Priority$"

' c:\windows\system32\cmd.exe /c



AlertName = Wscript.Arguments.Item(0)

AlertSource = Wscript.Arguments.Item(1)

AlertDescription = Wscript.Arguments.Item(2)

AlertSev = Wscript.Arguments.Item(3)

AlertState = Wscript.Arguments.Item(4)

AlertPrio = Wscript.Arguments.Item(5)

'strResolutionState = Wscript.Arguments.Item(7)

'strAlertCategory = Wscript.Arguments.Item(8)

'StrDateCreation = Wscript.Arguments.Item(9)

'StrAlertOWner = Wscript.Arguments.Item(10)

'StrRepeatCount = Wscript.Arguments.Item(11)

'StrResolvedBy = Wscript.Arguments.Item(12)



' ******************************************

' TRANSLATE SEVERITY AND PRIORITY

' ******************************************



if AlertSev = "1" Then

AlertSev = "Critique"

elseif AlertSev = "2" then

AlertSev = "Warning"

elseif AlertSev = "3" then

AlertSev = "Information"

End If



if AlertPrio = "1" Then

AlertPrio = "Haute"

elseif AlertPrio = "2" then

AlertPrio = "Moyenne"

elseif AlertPrio = "3" then

AlertPrio = "Basse"

End If



' ******************************************

' LISTE des paramétres possibles

' ******************************************



'$Data/Context/DataItem/AlertId$ The AlertID GUID **

'$Data/Context/DataItem/AlertName$ The Alert Name **

'$Data/Context/DataItem/Category$ The Alert category

'$Data/Context/DataItem/CreatedByMonitor$ True/False

'$Data/Context/DataItem/DataItemCreateTime$ UTC Date/Time of Dataitem created

'$Data/Context/DataItem/DataItemCreateTimeLocal$ LocalTime Date/Time of Dataitem created

'$Data/Context/DataItem/LastModified$ UTC Date/Time DataItem was modified

'$Data/Context/DataItem/LastModifiedLocal$ Local Date/Time DataItem was modified

'$Data/Context/DataItem/ManagedEntity$ ManagedEntity GUID **

'$Data/Context/DataItem/ManagedEntityDisplayName$ ManagedEntity Display name **

'$Data/Context/DataItem/ManagedEntityFullName$ ManagedEntity Full name

'$Data/Context/DataItem/ManagedEntityPath$ Managed Entity Path

'$Data/Context/DataItem/Priority$ The Alert Priority Number (High=1,Medium=2,Low=3)

'$Data/Context/DataItem/Owner$ The Alert Owner

'$Data/Context/DataItem/RepeatCount$ The Alert Repeat Count

'$Data/Context/DataItem/ResolutionState$ Resolution state ID (0=New, 255= Closed)

'$Data/Context/DataItem/ResolutionStateLastModified$ UTC Date/Time ResolutionState was last modified

'$Data/Context/DataItem/ResolutionStateLastModifiedLocal$ Local Date/Time ResolutionState was last modified

'$Data/Context/DataItem/ResolutionStateName$ The Resolution State Name (New, Closed)

'$Data/Context/DataItem/ResolvedBy$ Person resolving the alert

'$Data/Context/DataItem/Severity$ The Alert Severity ID

'$Data/Context/DataItem/TicketId$ The TicketID

'$Data/Context/DataItem/TimeAdded$ UTC Time Added

'$Data/Context/DataItem/TimeAddedLocal$ Local Time Added

'$Data/Context/DataItem/TimeRaised$ UTC Time Raised

'$Data/Context/DataItem/TimeRaisedLocal$ Local Time Raised

'$Data/Context/DataItem/TimeResolved$ UTC Date/Time the Alert was resolved





'Alert Description from OpsMgr Alert

strContents = AlertDescription



' ******************************************

' MAIL CONFIGURATION

' ******************************************



strFrom = "_svc_mail_scom_sdr@anpe.fr"

strSub = "cduflos:Anpe@2008"

'"SCRIPT - SDR. Severity: " & AlertSev & ". Priority: " & AlertPrio & ". State: " & AlertState

strBody = "ALERTE SDR" & VBCRLF & "Nom de l'alerte: " & AlertName & VBCRLF & "Source de l'alerte: " & AlertSource & VBCRLF & "Statut: " & AlertState & VBCRLF & "Description: " & AlertDescription & VBCRLF & "Severité: " & AlertSev & VBCRLF & "Priorité: " & AlertPrio

strSMTP = "Smtp.anpe.fr"











'--------------------------------------------------------

' Lecture des adresses mailsms destination

'--------------------------------------------------------



Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists(TemplateFile) Then

Set fichierSMS = fso.OpenTextFile(TemplateFile, ForReading)

Do while fichierSMS.AtEndOfStream <> True

strTo=fichierSMS.Readline

WScript.Echo strTo

'Appel de la fonction

Call SendEMail(strTo)



Loop

fichierSMS.close

Else

WScript.Echo "le fichier modele des emails, " &_

Chr(34) & TemplateFile & Chr(34) & ", est inexistant!"

WScript.Quit

End If

'end main script







' ******************************************

' SEND MESSAGE et LOG

' ******************************************

Public Function SendEmail(strTo)

if strTo="" Then

Call oAPI.LogScriptEvent("MAIL2SMS ",10077, EVENT_TYPE_SUCCESS ,"Fin d'envoi des mails vers" & strSMTP & VBCRLF & strBody)

Exit Function

end If

set objEmail = CreateObject("CDO.Message")

objEmail.From = strFrom

objEmail.To = strTo

objEmail.Subject = strSub

objEmail.Textbody = strBody

objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2

objEmail.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = strSMTP

objEmail.Configuration.Fields.Update

objEmail.Send

Call oAPI.LogScriptEvent("MAIL2SMS ",10077, EVENT_TYPE_SUCCESS ,"Le mail a destination de " & strTo & " a été transmis au serveur" & strSMTP)



' ******************************************

' LOG TO FILE (DATE,TIME,TO,ALERT NAME,STATE

' ******************************************



Dim ALogs, myFSO, WriteStuff, dateStamp

dim strdateStamp

dim strTimeStamp

strdateStamp = Date()

strTimeStamp = Time()



ALogs = strdateStamp & strTimeStamp & ": Le mail a destination de " & strTo & " a été transmis au serveur" & strSMTP

Set myFSO = CreateObject("Scripting.FileSystemObject")

Set WriteStuff = myFSO.OpenTextFile("SMS_Send.log", 8, True)

WriteStuff.WriteLine(ALogs)

WriteStuff.Close



End Function



Enfin la ligne de commande suivante permet de tester le script :




c:\windows\system32\cmd.exe /c D:\.....\Scripts\EmailAlertSMS.vbs  //H:CScript //Nologo //T:20 "Alerte de test" "TEST" "Cette alerte est une alerte de test Avanade" "0" "NEW" "0" 


Alerte sur les mises a jour des Management packs

Microsoft a (enfin) intégré un flux RSS à son catalogue afin d'être facilement alerté lors de la mise à jour ou sortie d'un nouveau pack d'administration:

Indispensable !

OpsMgr 2007: Testez le pack d'administration natif pour Exchange 2007 (BETA)

Le pack d'administration NATIF pour Exchange Server 2007 est actuellement disponible en BETA par simple demande à l'adresse suivante: mpcc@microsoft.com.
Annoncé RTM pour le second trimestre 2009 (enfin ?).

image

Troobleshooting des bases SQL de Opsmgr (SCOM) a l'aide de Nexus

Stephan Stranger a posté sur son Blog un article sur l'utilisation de SQL Nexus pour résoudre des problèmes de performances SQL Server des bases Opsmgr (SCOM)

SQL Nexus est un outil qui vous permet d'identifier la cause de problèmes de performances SQL Server. Il charge et analyse des données de performances collectées par sqldiag et PSSDiag. Il peut considérablement réduire la quantité de temps que vous consacrez à l'analyse des données manuellement. Plus d'infos , ainsi que le Comment faire ICI

Windows Server Cluster Management Pack for Operations Manager 2007

Le Windows Server Cluster Management Pack for Operations Manager 2007 a été updaté pour les clusters 2008

image

Dispo ici : http://www.microsoft.com/downloads/details.aspx?FamilyID=ac7f42f5-33e9-453d-a923-171c8e1e8e55&DisplayLang=en

Moniteur de deux ou trois états pour script chronométré (Partie 2)

Comme nous l'avons survolé dans la première partie, l'utilisation du script permet à SCOM de répondre à de très nombreux besoins de monitoring.

image

Reprenons les grandes étapes de déclaration du script:

  1. Créer une instance de l'objet de script d'Operations Manager (MOMScriptAPI).
  2. Créer un nouveau property Bag en appelantla méthode Objet MOMScriptAPI.CreatePropertyBag.
  3. Ajouter et stocker des valeurs en appelant la méthode MOMPropertyBag.AddValue.
  4. Faire un Sumit des données pout quelle puissent etre traitées par Opsmgr 2007 en appelant la méthode de l'objet MOMScriptAPI.Return.
  5. Ajoutez le script à un Management Pack. Définir le nom du script, les arguments, et la fréquence à laquelle le script s'exécute.

Regardons maintenant un exemple de script qui analyse le nombre de processus lancés. Nous avons donc 2 ou 3 arguments a positionner , le nom du processus et le nombre de processus minimum et acceptable.
Dans le cas d'un moniteur a 3 états nous pouvons déterminer que dans une fourchette acceptable le nombre de processus rend un service dégradé, en dessous le service est non rendu.

'----------------------------- 
'Declaration des variables

Dim oAPI, oBag
Dim ErrorCount
Dim WarningCount
Dim SuccessCount
Dim propertyBag ' Voir Etape 3
Set oAPI = CreateObject("MOM.ScriptAPI") ' Voir Etape 2
Set oArgs = WScript.Arguments

'declaration des constantes events type pour le suivi des action dans l'event viewer
Const EVENT_TYPE_ERROR = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_SUCCESS = 4

If oArgs.Count < 3 Then
' Si le script est lancé sans le nombre correct d'argument il genere un event puis s arrete

Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.LogEvent EVENT_TYPE_ERROR, _
"Le multi processMonitor est lancé sans argument."
WScript.Quit -1
End If

'Recuperation des valeurs des arguments pour SCOM
strProcess = oArgs.Item(0) ' argument 1 le nom du processus
GoodLowerCount = oArgs.Item(1) 'Argument 2 le nombre acceptable de processus (génére un Warning)
GoodUpperCount = oArgs.Item(2) ' Argument 3 en dessous de ce nombre le script génère une erreur

' MODE - DEBUG il génère un event en cas de SUCCESS
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.LogEvent EVENT_TYPE_SUCCESS, _
"Le nombre de processus a valider pour : " & strProcess & " Et " & GoodLowerCount & " et " & GoodUpperCount & " comme arguments."


strComputer = "." ' puisque le script tourne en local via l'agent
' Requete WMI
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = '" & strProcess & "'")

' MODE - DEBUG il génère un event en cas de SUCCESS
' Set objShell = Wscript.CreateObject("Wscript.Shell")
' objShell.LogEvent EVENT_TYPE_SUCCESS, _
' "ProcessMonitor colProcesses.Count equals " & colProcesses.Count & "."

' Comparaison des resultats et des arguments

'SI il n'y a pas assez de processus mais encore acceptable - MODE DEGRADED
if colProcesses.Count => cInt(GoodLowerCount) and colProcesses.Count <= cInt(GoodUpperCount) Then
Set objShell = Wscript.CreateObject("Wscript.Shell")

' MODE - DEBUG il génère un event
objShell.LogEvent EVENT_TYPE_WARNING, _
"WARNING : There are not enough " & strProcess & " running. " & colProcesses.Count & " were running."
' Ajouter et stocker des valeurs en appelant la méthode MOMPropertyBag.AddValue
Set propertyBag = oAPI.CreatePropertyBag ()
Call propertyBag.AddValue ("Status", "Warning")
Call propertyBag.AddValue ("Process", strProcess)
End If

'SI il n'y a pas assez de processus - MODE CRITICAL
if colProcesses.Count < cInt(GoodLowerCount) Then
Set objShell = Wscript.CreateObject("Wscript.Shell")

' MODE - DEBUG il génère un event
' objShell.LogEvent EVENT_TYPE_ERROR, _
' "CRITICAL ALERTE : There are not enough " & strProcess & " running. " & colProcesses.Count & " were running."


' Ajouter et stocker des valeurs en appelant la méthode MOMPropertyBag.AddValue
Set propertyBag = oAPI.CreatePropertyBag ()
Call propertyBag.AddValue ("Status", "Critical")
Call propertyBag.AddValue ("Process", strProcess)
End If

'SI il y'a assez de processus - MODE HEALTHLY

if colProcesses.Count > cInt(GoodUpperCount) Then
Set objShell = Wscript.CreateObject("Wscript.Shell")

' MODE - DEBUG il génère un event
objShell.LogEvent EVENT_TYPE_SUCCESS, _
"The process, " & strProcess & ", has " & colProcesses.Count & " processes running."
Set propertyBag = oAPI.CreatePropertyBag ()
Call propertyBag.AddValue ("Status", "Good")
Call propertyBag.AddValue ("Process", strProcess)
End If

' SUMIT des DONNEES

Call oAPI.Return(propertyBag)




Une fois le script terminé , il faudra l'intégrer dans Opsmgr 2007



image



Puis nous allons paramétrer les expressions pour qu'elles interprètent les valeurs de Property[@Name='Status'] .



image

Nous avons fixé dans le script 3 valeurs possibles Warning , critical et Good.



image



Et enfin



image



Reste ensuite à positionner le type d'état en fonction de chaque expression.



image

Powershell et Opsmgr 2007 par l'exemple

Voici quelques exemples parmi mes préférés

  • Compter le nombre d'alertes nouvelles dont le nom commence par "Script"

(get-alert -criteria 'Name Like ''Script%'' AND ResolutionState = ''0''').count

  • Le Top 5 des alertes par machine

get-alert -criteria 'ResolutionState = ''255''' Group-Object PrincipalName Sort -desc Count select-Object -first 5 Count, Name Format-table -auto

  • Afficher les règles en base qui ont générées le plus d'alerte sur la période de rétention de la base Opsmgr

get-alert Group-Object Name Sort -desc Count select-Object -first 5 Count, Name Format-Table -auto

  • Résoudre une alerte selon un critére, ici la date de modification (mm/jj/yyyy) et le statut de l'alerte (0=Nouveau)

get-alert -criteria 'LastModified >= ''2/5/2009'' AND ResolutionState = ''0'' AND Category = ''Alert''' resolve-alert -comment "Alerte resolue via PowerShell" out-null

  • Résoudre toutes les alertes ouvertes par une régle et non un moniteur.

get-alert -criteria 'ResolutionState = ''0'' AND IsMonitorAlert = ''False''' resolve-alert -comment "Closing rule generated alerts" out-null

  • Afficher les règles en base qui ont générées le plus d'alerte sur la période de rétention de la base Opsmgr

get-alert Group-Object Name Sort -desc Count select-Object -first 5 Count, Name Format-Table -auto

Hyper-V Update List pour rester a jour.

il existe un lien sur TechNet qui maintient à jour une liste des correctifs mettant à jour Hyper-V : Hyper-V Update List

Ajoutez absolument cette adresse à vos favoris si vous utiliser Hyper-V !

Powershell et Opsmgr

Le PowerShell c’est bien , l’utiliser c’est mieux. Je vous invite donc si vous ne l’aviez pas déjà fait a tester les CmdLet de Opsmgr 2007. Pour ceux qui veulent commencer avec un peu d’aide voici un article sympathique (en anglais of course)..

http://blogs.msdn.com/scshell/archive/2006/09/28/getting-started.aspx

Outil d'activation ou de désactivation des notifications

Tim McFadden auteur déjà du SCOM Remote Maintenance Mode Scheduler 2.0 (outil qui comme sont nom l'indique permet de planifier les modes de maintenance) a récidivé. Il a créé un outil pour activer ou désactiver automatiquement les notifications. Et c'est ici : Subscription Tool

Certes c'était déjà possible de le faire via powershell ("Get-NotificationSubscription Disable-NotificationSubscription") , mais Powershell utilise l'option par défaut "depuis que l'abonnement a été désactivé", ce qui peut générer un certain nombre d'alerte (storm).

L'outil de Tim McFadden permet de choisir entre les deux options et se positionne par défaut sur celle qui est la moins risquée.

Merci Tim !

Le Management Pack Virtual Machine Manager 2008 (2.0.3451.0) avec enfin des rapports

En effet on peut lire sur la page de download : “Updated version, version 2.0.3451.0, provides VMM reports for Virtual Machine Manager” …

La page en question est visible ici

Pour rappel des fonctionnalités du MP :

  • Comprehensive health monitoring of virtual machines
  • Performance and Resource Optimization (PRO) in VMM
  • VMM reports
  • Diagram views available from the VMM Administrator Console

WS08HypeV_logo_250_2

Extraction de données de performance de la base OperationsManagerDW

Pour faire suite à l’article sur l’extraction des données depuis la base OperationsManager que l’on trouve ICI , voyons comment faire avec des données de performance de la base Operations Manager Datawarehouse (OperationsManagerDW) . Pour rappel ces données sont agrégées, mais ont l‘avantage d’être stockées pendant un longue période ( voir ici l’article pour modifier cette période).

Avant de rechercher un compteur de performance dans la base de donnée il faut être sur de son “orthographe”. Pour cela lancer la requête suivante , qui liste tous les compteurs de la base, et faite votre choix :

Select distinct vPerformanceRule.CounterName
FROM Perf.vPerfHourly
INNER JOIN vManagedEntity ON Perf.vPerfHourly.ManagedEntityRowId = vManagedEntity.ManagedEntityRowId
INNER JOIN vManagedEntityType ON vManagedEntity.ManagedEntityTypeRowId = vManagedEntityType.ManagedEntityTypeRowId
LEFT OUTER JOIN vManagedEntityTypeImage ON vManagedEntityType.ManagedEntityTypeRowId = vManagedEntityTypeImage.ManagedEntityTypeRowId
INNER JOIN vPerformanceRuleInstance ON vPerformanceRuleInstance.PerformanceRuleInstanceRowId = Perf.vPerfHourly.PerformanceRuleInstanceRowId
INNER JOIN vPerformanceRule ON vPerformanceRuleInstance.RuleRowId = vPerformanceRule.RuleRowId

On a comme résultat la liste des compteurs de performance en base, y’a plus qu’a faire son choix :

  • % Committed Bytes In Use
  • % Free Space
  • % Processor Time
  • % Usage
  • Active Directory Last Bind
  • Active File Uploads
  • Availability
  • Available Bytes
  • Available MBytes
  • … Etc…Etc



Ensuite lancer la requête suivante avec les 3 variables Counteur et Date1 et Date2 enseignées , DATE1 étant la date a partir de laquelle on souhaite les données , jusqu’a la DATE2.

Deux possibilités , soit simplement 2009-01-24, soit avec l’heure sous cette forme 2009-01-24 04:00:00.000






DECLARE @Counter varchar(30)
SET @Counter = '% Processor Time'

DECLARE @DATE1 varchar(30)
SET @DATE1 = '2009-01-24'

DECLARE @DATE2 varchar(30)
SET @DATE2 = '2009-01-29'

SELECT
vPerfHourly.DateTime,
vPerfHourly.SampleCount,
vPerfHourly.AverageValue,
vPerfHourly.StandardDeviation,
vPerfHourly.MaxValue,
vManagedEntity.FullName,
vManagedEntity.Path,
vManagedEntity.Name,
vPerformanceRule.CounterName
FROM
Perf.vPerfHourly INNER JOIN
vManagedEntity ON Perf.vPerfHourly.ManagedEntityRowId =
vManagedEntity.ManagedEntityRowId INNER JOIN
vManagedEntityType ON vManagedEntity.ManagedEntityTypeRowId =
vManagedEntityType.ManagedEntityTypeRowId LEFT OUTER JOIN
vManagedEntityTypeImage ON vManagedEntityType.ManagedEntityTypeRowId =
vManagedEntityTypeImage.ManagedEntityTypeRowId INNER JOIN
vPerformanceRuleInstance ON
vPerformanceRuleInstance.PerformanceRuleInstanceRowId =
Perf.vPerfHourly.PerformanceRuleInstanceRowId INNER JOIN
vPerformanceRule ON vPerformanceRuleInstance.RuleRowId =
vPerformanceRule.RuleRowId
WHERE
(vPerformanceRule.CounterName = @Counter)
AND vPerfHourly.DateTime >= @DATE1
AND vPerfHourly.DateTime < @DATE2
ORDER BY vPerfHourly.DateTime



Enjoy :-)

Les nouveautés de Windows 7 alias Seven

Une fois n'est pas coutume, je m'écarte un peu de SCOM pour vous parler de Windows 7. Certains chanceux ont sans doute déjà téléchargés la version Béta. Il ne faut pas prendre Windows 7 pour un simple rafraichissement graphique de Vista. D'après ce que l'on constate déjà en VM ou sur Hardware identique c'est que Windows 7 devrait être plus rapide et plus réactif, et utilise moins de mémoire, de temps CPU ou d'accès au disque que Windows VISTA.

logo-windows-seven

Windows 7 se présente donc comme une bonne (R)Évolution de Windows Vista, du moins sur le plan de l'interface, avec une nouvelle barre des tâches et la gestion du multi-touch.

Pour ce qui est des fonctionnalités un peu moins grand public qui vous intéresse aussi :

o AgileVPN : permet la reconnexion silencieuse et automatique d'un VPN même en cas de coupure ou de changement de l'État du réseau. FYI : Utilise un protocole de tunnel standard IPSec (IKEv2)

o Bascule automatique vers SSTP (Secure Socket Tunneling Protocol = en gros du VPN avec HTTPS) quand IKEv2 est bloqué

o Direct Access ou Direct Connect est une fonctionnalité qui sera intégrée en standard dans Windows 7, et dont l'objectif est de permettre, sans l'Établissement d'un VPN, en utilisant IPv6 et IPSec, d'accéder à l'ensemble des ressources du système d'information. Cette fonctionnalité permettra ainsi d'authentifier le poste qui se connecte à travers IPSec. L'accès sera transparent pour l'utilisateur. En termes de sécurité, l'utilisateur, connecté au contrôleur de domaine, héritera de l'ensemble des politiques de groupes, et potentiellement aussi d'un contrôle d'État de santé via NAP.

o Nouvelle interface utilisateur pour voir les réseaux disponibles (les WIFI par exemple en seul 1 clic)

o La sélection des certificats pour le SSTP sur le serveur (Windows Server 2008 R2 aussi)

§ Plus d'infos RASS dans W7 http://blogs.technet.com/rrasblog/archive/2008/12/09/ras-features-in-w7.aspx

o Gestion de l'Énergie avancée (pour les portables entre autre) , la possibilité de générer un rapport sur les problèmes et les améliorations potentiels a entreprendre sur la configuration.( powercfg /energy )

o Plus d'infos : http://blogs.msdn.com/e7/archive/2009/01/06/windows-7-energy-efficiency.aspx

o Boot sur VHD natif (ca c'est super fun.) L'intérêt est de pouvoir dériver plusieurs installations d'un premier système d'exploitation installé dans un VHD. Chaque nouvelle installation sera réalisée dans un disque différentiel distinct. On peut donc facilement installer de nouveaux systèmes d'exploitation, en supprimer sans se soucier du partitionnement du pc et garantir que le master n'est jamais impacté par aucune modification.

o Défragmentation "en temps réelle"

o Bitlocker To Go , pour chiffrer les USb , etc..

o AppLocker, un nouveau système d'autorisation pour les applications dans des environnements réseaux

o Branch Office Caching, ou la possibilité d'héberger le cache d'une application distante sur la machine qui la fait fonctionner, plutôt que sur le serveur auquel elle est connectée.

o Gestion native des périphériques de Biométrie

Toutes les API sont (déjà ) documentées : http://code.msdn.microsoft.com/Win7DeveloperGuide/Release/ProjectReleases.aspx?ReleaseId=1702

Bref y'a plein de fonctionnalités intéressantes (boot VHD , Direct Access , ..) qui vont impacter le travail de l'administrateur ou du consultant de demain ..

EN plus sur le WEB :

Vu sur le Web : petite video de presentation de Windows 7
Vu sur Clubic, une petite vidéo... plus
vendredi, janv. 23

Windows 7 : nouveau rapport de diagnostiques sur la consommation d'Énergie.
Une nouveautÉ de Windows 7 con... plus
vendredi, janv. 23

Windows Automated Installation Kit (Windows 7 Beta)
The Windows Automated Installa... plus
samedi, janv. 17

Remote Server Administration Tools for Windows 7 (BETA)
Remote Server Administration T... plus
mercredi, janv. 14

Boot sur un VHD (Windows 7 ou Windows 2008 R2) depuis un systÈme Vista ou Windows Server 2008
Je vais vous expliquer comment... plus
mardi, janv. 13

Moniteur de deux états pour script chronométré (Partie 1)

La traduction n'a pas toujours été à l'honneur et certains composants SCOM sont parfois pas trés compréhensibles. On parlera donc de "Moniteur de deux états pour script chronométré" ou de "Timed Script et Two State Monitor".

image

Dans cette exemple nous allons voir comment utiliser ce type de moniteur pour surveiller un état soit OK soit KO, ici la présence d'un fichier.

  1. Pour ce faire, il faut creer le Timed Script Two State Monitor
  2. Utiliser le script ci-dessous

image

  1. Comme unhealthy expression utiliser "Property[@Name='Status'] equals Critical"

image

  1. Comme healthy expression utiliser "Property[@Name='Status'] equals OK"
  2. Configurer l'onglet l'alerte
  3. Cliquer sur Finish
Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Set objFSO = CreateObject("Scripting.FileSystemObject")
strFile = "C:\Monfichier.txt"
If objFSO.FileExists(strFile) Then
Call oBag.AddValue("Status","OK")
Call oAPI.Return(oBag)
Else
Call oBag.AddValue("Status","KO")
Call oAPI.Return(oBag)
End If




On peut aussi utiliser ce type de Moniteur avec 3 états, et vérifier par exemple le nombre de processus, ou la consommation mémoire , etc.



La suite bientôt..

Module SNMP sur OpsMgr 2007

Il arrive parfois que lorsque vous utilisez le module SNMP de SCOM , vous ayez un message d'erreur un peu bizarre.

Vous avez vérifié et tout est correct. Vous êtes sans doute dans le cas d'un codage Base64 du nom de communauté SNMP.

De ce fait le nom de la communauté doit être fournit en Base64 et là , le Powershell peut vous aider , utiliser la commande PS suivante :

$communityString = 'public'
[System.Convert]::ToBase64String([System.Text.Encoding]::UNICODE.GetBytes($communityString))


On obtient cAB1AGIAbABpAGMA , il suffit maintenant de fournir ce nom au module SNMP de SCOM.


Configurer un compte pour monitorer la réplication AD

Normalement un container MomLatencyMonitor a du être créé après l’intégration à active directory par le Management Pack Active Directory.(voir précédent billet)

Ne pas oublier d’Activer les vues avancées pour voir le container dans la MMC Users and Computers

Le container n’est pas créé correctement , il est possible de suivre la procédure suivante :

· Clicquer sur Start, clicquer sur Run, et taper adsiedit.msc.

· Dans ADSI Edit, double-cliquer sur Domain [computername].

· Faire un click droit sur DC=domainname,DC=com, cliquer sur New, puis cliquer sur Object.

· Dans Select a class, cliquer sur Container, puis Next.

· Dans Value, taper MomLatencyMonitors, puis sur Next.

· Cliquer sur Finish

Dans administration créer le compte de supervision active directory

Cliquer sur Create a RunAs account

Associer le compte SCOM_AD_Agent créé avec le profil AD MP Account

Double -cliquer sur AD MP Account, aller dans l’onglet RunAs Account , cliquer sur New , sélectionner les contrôleurs de domaine et le compte SCOM_AD_Agent , cliquer sur Add

Recommencer l’opération pour tous les contrôleurs de domaine

Sur chaque contrôleur de domaine paramétrer la clé de registre

SYSTEM\CurrentControlSet\Services\HealthService\Parameters\ConnectorManager\EnableADIntegration' à 0

Cette opération à pour but d’éviter un message d’erreur dans le journal d’événement ; En effet l’activation de l’intégration AD n’est pas valable sur les DC puisqu’il qu’il héberge l’annuaire.