Contexte

Le check Services Matching [ $KEY$ ] by WinRM permet de vérifier le status d’un service Windows. Il permet ainsi de s’assurer que les services supervisés sont bien dans l’état attendu.

Le check utilise une donnée Duplicate Foreach qui permet de générer automatiquement le check pour chaque service à superviser.


Paramétrage

$WINDOWS-BY-WINRM__SHINKEN__PLUGINSDIR$/check_windows_health_by_winrm_rust --check check_services_matching
    --hostname "$HOSTADDRESS$"
    --port "$_HOSTWINDOWS_BY_WINRM__PORT$"
    --username "$_HOSTWINDOWS_BY_WINRM__DOMAINUSER$" 
    --password "$_HOSTWINDOWS_BY_WINRM__DOMAINPASSWORD$"
    --auth_method "$_HOSTWINDOWS_BY_WINRM__AUTHMETHOD$"
    --timeout "$_HOSTWINDOWS_BY_WINRM__TIMEOUT$"
    -n "$ARG1$"
    -e "$_SERVICEWINDOWS_BY_WINRM__SERVICES-MATCHING__EXPECTED-STATE$"

Données utilisées provenant des modèles

Données communes pour les checks des modèles

Données spécifiques pour ce check

NomModifiable surUnitéValeur par défautDescription
WINDOWS_BY_WINRM__SERVICES-MATCHING__EXPECTED-STATE

l'Hôte

( Onglet Données )

-

Running

Définit l'état attendu du service. Elle peut prendre une des valeurs suivantes :

  • Stopped
  • Start Pending
  • Stop Pending
  • Running
  • Continue Pending
  • Pause Pending
  • Paused






Données DFE ( Duplicate Foreach )

DonnéeDescriptionExemple
WINDOWS_BY_WINRM__SERVICES-MATCHING__SERVICES-TO-CHECK

Définit une paire KEY$(VALUE)$, la KEY correspond à la description du service à vérifier et la VALUE au nom du service.

Cette valeur accepte les wildcards* 

win$(WinRM)$




Modifier les données accrochées à l'hôte affectera l'ensemble des checks dupliqués.
Afin de paramétrer individuellement chaque checks, il est possible de surcharger les données des checks.

Données utilisées provenant du check

Pas de données provenant du check pour ce modèle

Résultat

Exemple

Interprétation

  • Il peut prendre trois valeurs    OK  /  CRITIQUE  /   INCONNU  

    • Voici un tableau récapitulatif du statut attendu suivant le retour de sonde :

Situation Statut Exemple
Le service est dans l’état attendu défini par la variable WINDOWS_BY_WINRM__SERVICES-MATCHING__EXPECTED-STATE.OK

Le service n’est pas dans l’état attendu défini par la variable WINDOWS_BY_WINRM__SERVICES-MATCHING__EXPECTED-STATE.CRITIQUE  

Le service n’a pas été trouvé sur le système cible. INCONNU 

Accès refusé lors de la tentative d’interrogation du service. INCONNU 

Résultat

Le résultat contient un message indiquant le statut du check.

Résultat Long

Pas de résultat long.

Métriques

Aucune métrique n'est renvoyée pour ce check.

Erreurs et pré-requis

Erreurs de configuration de l'hôte supervisé ( spécifique à ce check )

MONITORED HOST - BAD STATE - Access denied

L'utilisateur de supervision ne dispose pas des droits nécessaires pour interroger l’état du service cible.


Résolution
Modifier le SDDL ( Security Descriptor Definition Language )

La résolution de ce problème doit se faire en mode Administrateur sur un terminal PowerShell.

  1. Récupérer le SID de l'utiliateur ou du groupe associé à la supervision.

    Executer la commande suivante : 

    (New-Object System.Security.Principal.NTAccount("DOMAINE\Utilisateur")).Translate([System.Security.Principal.SecurityIdentifier]).Value
    • Pour un compte Active Directory, remplacer DOMAINE\Utilisateur par la valeur appropriée.

    • Pour un compte local, utiliser :

      • NomDuServeur\UtilisateurLocale
      • ou simplement UtilisateurLocale

    Conserver le SID retourné, il sera utilisé dans les étapes suivantes. 



    Exemple :



  2. Afficher la configuration de sécurité du service :

    Exécuter :

    sc.exe sdshow "NomDuService"


    Exemple :

    La commande retourne le SDDL complet du service. 


  3. Modifier la DACL du service.

    Copier le résultat retourné par
    sc.exe sdshow.

    Dans la section commençant par "D:", ajouter l’entrée suivante juste avant la section "S:"

    (A;;CCLCSWLORC;;;<USER_SID>)


    Remplacer <USER_SID> par le SID récupéré précedement.

    Exemple de SDDL modifié :

    D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)(A;;CCLCSWLOCRRC;;;SU)(A;;LC;;;S-1-5-21-2583679208-1579500244-1739850223-1006)(A;;CCLCSWLORC;;;S-1-5-21-2583679208-1579500244-1739850223-1009)S:(AU;FA;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;WD)

    CC → SERVICE_QUERY_CONFIG
    LC → SERVICE_QUERY_STATUS
    SW → SERVICE_ENUMERATE_DEPENDENTS
    LO → SERVICE_INTERROGATE
    RC → READ_CONTROL

    Ces permissions correspondent aux droits de lecture du service (équivalent à GENERIC_READ). Les scripts de configuration fournis appliquent automatiquement cette permission afin de permettre au check d’interroger correctement le statut d'un service. Pour avoir plus d'informations sur ces permissions, consulter la documentation officielle de Microsoft en cliquant ici.

  4. Appliquer la nouvelle configuration.

    Une fois le SDDL modifié, l’appliquer avec :

    sc.exe sdset "NomDuService" "<SDDL_MODIFIE>"


    Exemple :

    Attention : une erreur dans le SDDL peut rendre le service inaccessible. Nous vous recommandons donc de conserver l'ancien SDDL afin de pouvoir revenir en arrière si nécessaire.

MONITORED HOST - BAD STATE - Service "..." does not exist as an installed service.

Le service n’a pas été trouvé sur le système cible.


Votre essai Premium est terminéVotre essai Premium est terminé