Comment déclencher une alerte par courrier électronique lorsqu'un service Windows spécifique démarre ou s'arrête sur Windows Server 2016 – Mise en cluster pour de simples mortels – Bien choisir son serveur d impression

introduction

Dans mon dernier post. Étape par étape: Comment déclencher une alerte par courrier électronique à partir d'un événement Windows contenant les détails de l'événement à l'aide de Windows Server 2016, je vous ai montré comment envoyer une alerte par courrier électronique en fonction des identificateurs d'événement Windows spécifiques consignés dans un journal des événements Windows. Bien que cela fonctionne très bien pour la plupart des événements, il n'est pas idéal si vous souhaitez être averti du démarrage ou de l'arrêt d'un service Windows spécifique.

Lorsqu'un service Windows démarre ou arrête un EventID 7036 de la source «Service Control Manager» est consigné dans le journal système Windows. Désormais, nous pourrions simplement configurer un déclencheur pour envoyer un courrier électronique chaque fois que cet ID d’événement est enregistré, comme décrit dans mon précédent message. Toutefois, vous ne voudrez peut-être pas recevoir un courrier électronique lorsque CHAQUE service Windows démarre ou s’arrête.

Pour être un peu plus spécifique, nous devrons éditer les données XML associées au filtre d'événements Windows lorsque nous aurons configuré le déclencheur pour examiner un peu plus en profondeur les propriétés des événements et filtrer les données EventData qui ne sont affichées que lorsque vous affichez la vue XML. sous l'onglet Détails d'un événement Windows.

Ce travail a été vérifié sur Windows Server 2016, mais je suppose qu'il devrait également fonctionner sur Windows Server 2012 R2 et Windows Server 2019. Si vous le faites fonctionner sur d'autres plates-formes, merci de commenter et de nous faire savoir si vous devez changer quoi que ce soit.

Étape 1 – Écrire un script Powershell

La première chose à faire est d’écrire un script Powershell qui, lorsqu’il est exécuté, peut envoyer un courrier électronique. En faisant des recherches sur ce sujet, j’ai découvert de nombreuses façons d’accomplir cette tâche. Ce que je vais vous montrer n’est qu’un moyen, mais n'hésitez pas à expérimenter et à utiliser ce qui convient à votre environnement.

Dans mon laboratoire, je n'exécute pas mon propre serveur SMTP. J'ai donc dû écrire un script permettant de tirer parti de mon compte Gmail. Vous verrez dans mon script Powershell que le mot de passe du compte de messagerie authentifié sur le serveur SMTP est en texte brut. Si vous craignez que quelqu'un ait accès à votre script et découvre votre mot de passe, vous voudrez alors chiffrer vos informations d'identification. Gmail requiert une connexion SSL. Votre mot de passe doit donc être en sécurité sur le réseau, comme tout autre client de messagerie.

Voici un exemple de script Powershell qui, lorsqu'il est utilisé avec le planificateur de tâches, envoie automatiquement une alerte par courrier électronique lorsqu'un événement spécifié est enregistré dans le journal des événements Windows. Dans mon environnement, j'ai enregistré ce script dans C: Alerts ServiceAlert.ps1.

$ filter = "*[System[EventID=7036] et EventData[Data='SIOS DataKeeper']]"
Filtre $ A = Get-WinEvent -LogName System -MaxEvents 1 -FilterXPath $
$ Message = $ A.Message
$ EventID = $ A.Id
$ MachineName = $ A.MachineName
$ Source = $ A.ProviderName


$ EmailFrom = "[email protected]"
$ EmailTo = "[email protected]"
$ Subject = "Alert From $ MachineName"
$ Body = "EventID: $ EventID`nSource: $ Source`nMachineName: $ MachineName` n $ Message "
$ SMTPServer = "smtp.gmail.com"
$ SMTPClient = New-Object Net.Mail.SmtpClient ($ SmtpServer, 587)
$ SMTPClient.EnableSsl = $ true
$ SMTPClient.Credentials = New-Object System.Net.NetworkCredential ("[email protected]", "MySMTPP @ 55w0rd");
$ SMTPClient.Send ($ EmailFrom, $ EmailTo, $ Subject, $ Body)

Voici un exemple d’e-mail généré à partir de ce script Powershell.

Courriel d'alerte de service

Vous avez probablement remarqué que ce script Powershell utilise l'applet de commande Get-WinEvent pour saisir l'entrée de journal des événements la plus récente basée sur le nom de fichier LogName, EventID et. EventData spécifié. Il analyse ensuite cet événement et affecte les variables EventID, Source, MachineName et Message aux variables qui seront utilisées pour composer le courrier électronique. Vous constaterez que les éléments LogName, EventID et EventData spécifiés sont identiques à ceux que vous spécifierez lors de la configuration de la tâche planifiée à l'étape 2.

Bien que EventID, LogName vous soient probablement familiers, EventData peut ne pas l'être aussi. Pour voir les données EventData associées à un événement particulier, vous devez ouvrir l'événement dans l'observateur d'événements, consultez l'onglet Détails, puis sélectionnez la vue XML. Dans la vue XML, vous pouvez voir toutes les données incluses dans un événement. Au bas du XML, vous verrez un tableau de données appelé . Vous y trouverez des données d’événement supplémentaires stockées en tant que paramètres. Comme indiqué ci-dessous, dans «param1», nous allons trouver le nom du service qui est arrêté ou démarré.

Données d'événement

Étape 2 – Configurer une tâche planifiée

Dans le Planificateur de tâches, créez une tâche comme indiqué dans les captures d'écran suivantes.

  1. Créer une tâche
    Créer une tâcheAssurez-vous que la tâche est définie sur Exécuter, que l'utilisateur soit connecté ou non.
    Service - Général
  2. Dans l'onglet Déclencheurs, choisissez Nouveau pour créer un déclencheur qui lancera la tâche «Sur un événement». Dans mon exemple, je vais créer un événement qui déclenche chaque fois que DataKeeper (extmirr) enregistre un événement important dans le journal système.
    Créer la tâche 3
    Créez un événement personnalisé et un nouveau filtre d'événements, comme indiqué ci-dessous…
    Créer une tâche - Déclencheur

    Pour mon déclencheur, vous pouvez commencer à configurer un déclencheur qui surveille 7036 comme je le décris dans mon article précédent. Cependant, l'interface graphique de filtre ne nous permet pas de spécifier le nom de service stocké dans Param1 de EventData, comme je l'ai décrit précédemment. Afin de surveiller uniquement le service spécifique qui nous intéresse, nous aurons besoin de modifier le code XML directement, comme indiqué ci-dessous.

    Service - XML
    Si vous préférez simplement passer directement à la chasse, n'hésitez pas à copier mon code XML ci-dessous et à remplacer "SIOS DataKeeper" par les données d'événement stockées dans le paramètre 1 de l'événement que vous souhaitez surveiller.

    
    
    
    
    
  3. Une fois le déclencheur d'événements configuré, vous devez configurer l'action qui se produit lors de l'exécution de l'événement. Dans notre cas, nous allons exécuter le script Powershell que nous avons créé à l'étape 1.
    Actions - 2

    Service - tâche

  4. Les paramètres de condition par défaut devraient être suffisants.
    Conditions - 1
  5. Enfin, dans l'onglet Paramètres, veillez à autoriser l'exécution de la tâche à la demande et à «Mettre en file d'attente une nouvelle instance» si une tâche est déjà en cours d'exécution.

    2018-10-28_00-17-27 "srcset =" https://clusteringformeremortals.files.wordpress.com/2018/10/2018-10-28_00-17-27.jpg 629w, https: //clusteringformeremortals.files. wordpress.com/2018/10/2018-10-28_00-17-27.jpg?w=150 150w, https://clusteringformeremortals.files.wordpress.com/2018/10/20-10-28_00-17-27 .jpg? w = 300 300w "tailles =" (largeur maximale: 629px) 100vw, 629px "/></h2>
</li>
</ol>
<h2><span class=Étape 3 (si nécessaire) – Corrigez l'erreur d'événement ID: 10016 de Microsoft-Windows-DistributedCOM

    En théorie, si vous avez tout fait correctement, vous devriez maintenant commencer à recevoir des courriels chaque fois qu'un des événements que vous surveillez est enregistré dans le journal des événements. Cependant, j'ai rencontré un problème de permission étrange sur l'un de mes serveurs que je devais résoudre avant que tout fonctionne. Je ne sais pas si vous rencontrerez ce problème, mais juste au cas où voici le correctif.

    Dans mon cas, lorsque je déclenchais manuellement l'événement ou si j'exécutais directement le script Powershell, tout fonctionnait comme prévu et je recevais un courrier électronique. Toutefois, si l'un des EventID surveillés était enregistré dans le journal des événements, aucun courrier électronique ne serait envoyé. Le seul indice que j'avais était l'ID d'événement: 10016 qui était enregistré dans mon journal des événements systèmes à chaque fois que je m'attendais à ce que le déclencheur de tâche détecte un événement enregistré.

    Nom du journal: système
    Source: Microsoft-Windows-DistributedCOM
    Date: 27/10/2018 17:59:47
    ID d'événement: 10016
    Catégorie de tâche: Aucune
    Niveau: erreur
    Mots-clés: Classique
    Utilisateur: DATAKEEPER  dave
    Ordinateur: sql1.datakeeper.local
    La description:
    Les paramètres d'autorisation spécifiques à l'application n'accordent pas l'autorisation d'activation locale pour l'application COM Server avec CLSID
    D63B10C5-BB46-4990-A94F-E40B9D520160
    et APPID
    9CA88EE3-ACB7-47C8-AFC4-AB702511C276
    à l'utilisateur DATAKEEPER  dave SID (S-1-5-21-25339xxxxx-208xxx580-6xxx06984-500) à partir de l'adresse LocalHost s'exécutant dans le conteneur d'applications Indisponible SID (Indisponible). Cette autorisation de sécurité peut être modifiée à l'aide de l'outil d'administration des services de composants.

    La plupart des résultats de recherche Google indiquant cette erreur indiquent que l'erreur est bénigne et incluent des instructions sur la manière de supprimer l'erreur au lieu de la corriger. Cependant, j’étais à peu près sûr que cette erreur était la cause de mon échec actuel à pouvoir envoyer une alerte par courrier électronique à partir d’un événement planifié déclenché à partir d’une entrée du journal des événements surveillée; j’avais donc besoin de la réparer.

    Après beaucoup de recherches, je suis tombé sur cette discussion de groupe de discussion. La réponse de Marc Whittlesey m'a orienté dans la bonne direction. C'est ce qu'il a écrit…

    Il y a 2 clés de registre pour lesquelles vous devez définir des autorisations avant d'accéder à la configuration DCOM dans les services de composants: Clé CLSID et clé APPID.

    Je vous suggère de suivre quelques étapes pour résoudre le problème:

    1. Appuyez sur les touches Windows + R, tapez regedit et appuyez sur Entrée.
    2. Accédez à HKEY_Classes_Root CLSID * CLSID *.
    3. Faites un clic droit dessus puis sélectionnez permission.
    4. Cliquez sur Advance et changez le propriétaire en administrateur. Cliquez également sur la case qui apparaîtra sous la ligne du propriétaire.
    5. Appliquer un contrôle total.
    6. Fermez l'onglet, puis accédez à HKEY_LocalMachine Software Classes AppID * APPID *.
    7. Cliquez dessus avec le bouton droit, puis sélectionnez permission.
    8. Cliquez sur Avancé et changez le propriétaire en administrateurs.
    9. Cliquez sur la case qui apparaîtra sous la ligne du propriétaire.
    10. Cliquez sur Appliquer et accordez un contrôle total aux administrateurs.
    11. Fermez tous les onglets et allez à l'outil d'administration.
    12. Services de composants ouverts.
    13. Cliquez sur Ordinateur, sur mon ordinateur, puis sur DCOM.
    14. Recherchez le service correspondant qui apparaît dans la visionneuse d'erreurs.
    15. Faites un clic droit dessus, puis cliquez sur Propriétés.
    16. Cliquez sur l'onglet Sécurité, puis sur Ajouter un utilisateur, Ajouter un système, puis cliquez sur Appliquer.
    17. Cochez la case Activer local.

    Donc, utilisez les clés appropriées ici et la configuration DCOM devrait vous donner accès aux zones grisées:
    CLSID D63B10C5-BB46-4990-A94F-E40B9D520160

    APPID 9CA88EE3-ACB7-47C8-AFC4-AB702511C276

    J'ai été capable de suivre les étapes 1 à 15 à peu près textuellement. Cependant, quand je suis arrivé à l'étape 16, je ne pouvais vraiment pas dire exactement ce qu'il voulait que je fasse. Au début, j’ai accordé le contrôle total du compte utilisateur DATAKEEPER dave au RuntimeBroker, mais cela n’a pas réglé le problème. Finalement, je viens de sélectionner "Utiliser par défaut" sur les trois autorisations et cela a résolu le problème.

    RuntimeBroker
    Je ne sais pas comment ni pourquoi cela s’est produit, mais j’ai pensé que je ferais mieux de tout écrire au cas où cela se reproduirait, car il m’a fallu un certain temps pour comprendre.

    Étape 4 – Automatisation du déploiement

    Si vous devez activer les mêmes alertes sur plusieurs systèmes, vous pouvez simplement exporter votre tâche dans un fichier XML et l'importer sur vos autres systèmes.

    ExportationImportation

    Ou encore mieux, automatisez l'importation dans le cadre de votre processus de construction via un script Powershell après avoir rendu votre fichier XML disponible sur un partage de fichiers, comme indiqué dans l'exemple suivant.

    PS C: > Register-ScheduledTask -Xml (get-content ' myfileshare  tasks  DataKeeperAlerts.xml' | out-string) -TaskName "Alertes de service DataKeeper" - Utilisateur datakeeper  dave -Password MyDomainP @ 55W0rd –Force

    En résumé

    J'espère que ce que j'ai fourni vous donnera tout ce dont vous avez besoin pour commencer à recevoir des courriels de notification d'alerte quel que soit le service Windows qui vous tient éveillé la nuit.

    Ceci conclut ma série sur la configuration des alertes par courrier électronique. Dans cette série, j'ai couvert la configuration des alertes en fonction des compteurs Perfmon, des entrées de journal des événements et, dans cet article, des événements de démarrage et d'arrêt du service Windows. Bien sûr, vous pouvez étendre ces scripts Powershell décrits dans ces articles pour faire plus que simplement envoyer des courriels. De nombreuses alertes ou arrêts de service inattendus nécessitent généralement une correction. Pourquoi ne pas simplement écrire un script des étapes de la récupération et laisser la tâche déclenchée s'occuper du problème pour vous?

    Personnellement, je vous recommande d'investir dans SCOM, SolarWinds ou un autre système de gestion d'entreprise, mais si cela ne figure pas dans les cartes sur lesquelles vous travaillez, ces articles peuvent vous aider.

  • Ultra Secure - Kit alarme GSM haute-résistance par barrières
    Electricité Domotique, automatismes et sécurité Alarme : kit et accessoires Alarme maison ULTRA SECURE, POINTS CLEFS DE CE PRODUIT Alerte appel & SMS (jusqu'à 9 contacts) Carillon possible (récepteur) Déclenche sirènes filaires ou sans-fil (option) Barrières autonomes solaires Portée 900 mètres champ
  • Ultra Secure - Kit alarme GSM haute-résistance par barrières infrarouges 900
    Electricité Domotique, automatismes et sécurité Alarme : kit et accessoires Alarme maison ULTRA SECURE, POINTS CLEFS DE CE PRODUIT Alerte appel & SMS (jusqu'à 9 contacts) Carillon possible (récepteur) Déclenche sirènes filaires ou sans-fil (option) Barrières autonomes solaires Portée 900
  • Comment fidéliser vos clients à vie par un service hors pair - Richard Gerson - Livre
    Vente-Commerce - Occasion - Bon Etat - 50 minutes pour réussir - Grand Format - Structure Coopérative d'insertion à but non lucratif.
  • Desineo - Mitigeur automatique par infrarouge inox
    Plomberie chauffage Robinetterie Robinet pour lavabo et vasque Robinet automatique infrarouge DESINEO, Robinet automatique par détection infrarouge La cellule électronique infrarouge déclenche l'ouverture et la fermeture de l'eau, dès présentation ou retrait des mains devant le détecteur. Ce
  • GDW Attelage rotule standard 2 trous GDW - FORD ESCORT '95 Courrier
    Le support d'attelage à 2 trous fabriqué par GDW est adapté à votre FORD ESCORT '95 Courrier . Le dispositif de traction spécial de GDW, composé d'un support d'attelage avec boule à bride à 2 trous 50T, convient parfaitement au service permanent de l'attelage sur votre FORD ESCORT '95 Courrier. La
  • BEHA AMPROBE Enregistreur de données multifonctions Beha Amprobe TR-200A 3477302 Valeur de
    Outillage Outillage à main Outil de mesure électronique Enregistreur électronique BEHA AMPROBE, description Instrument de contrôle de la qualité de l'air en espace fermé. L'enregistreur de données est équipé d'une alarme réglable offrant une alerte acoustique ou visuelle lorsque les valeurs
  • DESINEO Robinet automatique infrarouge anti vandalisme en inox
    Plomberie chauffage Robinetterie Robinet pour lavabo et vasque Robinet automatique infrarouge DESINEO, Robinet automatique par détection infrarouge La cellule électronique infrarouge déclenche l'ouverture et la fermeture de l'eau, dès présentation ou retrait des mains devant le détecteur. Ce
  • DESINEO Robinet Inox à déclenchement automatique infrarouge
    Plomberie chauffage Robinetterie Robinet pour lavabo et vasque Robinet automatique infrarouge DESINEO, Robinet Inox automatique à déclenchement par détection infrarouge La cellule électronique infrarouge déclenche l'ouverture et la fermeture de l'eau, dès présentation ou retrait des mains
  • SOMFY Détecteur de fumée SOMFY PROTEXIAL io 1875062
    Détecteur de fumée SOMFY : Les + Détecte l’opacité de l’air ambiant et prévient les occupants . Système équipé d'une alarme d'une puissance de 85 dB . Envoi d'un signal à la centrale PROTEXIAL io IP 1875116 . Une alerte est envoyée par transmission téléphonique . Fonctionne 24h/24 même lorsque l'alarme est
  • Solana Arôme Chewing gum fraise - Solana- Genre : 10 ml
    Comment faire votre propre Eliquide avec SolanaSolana est un fabricant de e-liquides pour cigarettes électroniques et concentrés pour préparations diy. Les produits Solana sont entièrement fabriqués, embouteillés et controlés en France. Analysés et controlés par l'Ecole Nationale Supérieure de Chimie de

Laisser un commentaire