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"
Aucun commentaire:
Enregistrer un commentaire
Les commentaires sont soumis a modération