Qu’est-ce que j’essaie de faire ?
Nous avons quelques clients SCCM, principalement des sites web publics fonctionnant sur Windows Server 2008 R2 avec IIS 7.5, qui sont surveillés par un système appelé XYmon. Nous avons récemment remarqué que ces serveurs redémarrent après l’installation de leurs mises à jour Windows mensuelles environ une heure trop tôt. Il y a un certain délai inhérent aux actions du client SCCM et au système de surveillance, mais XYmon perd la connexion avec ces machines vers 19h20-19h30 environ, alors que les autres machines surveillées semblent redémarrer environ une heure plus tard, vers 20h20-20h30.
La fenêtre de maintenance que je m’attends à voir appliquée commence à 20h00 et se termine à 22h00, et se répète chaque jeudi.
J’essaie de comprendre pourquoi ces machines installent leurs mises à jour une heure trop tôt. Je sais que les fenêtres de maintenance multiples sont « unifiées » ou fusionnées, donc je soupçonne qu’il y a une autre fenêtre de maintenance qui s’applique également à ces clients.
Ces machines se trouvent également dans une DMZ non jointe au domaine, donc je n’exclus pas non plus des problèmes de fuseau horaire ou de décalage d’horloge.
Qu’ai-je essayé pour résoudre le problème ?
J’ai pensé que le problème de fuseau horaire / décalage d’horloge était le plus probable, mais les deux machines étaient dans le bon fuseau horaire, avaient une heure synchronisée et avaient correctement géré le changement d’heure d’été du 8 mars.
Mon hypothèse suivante est que nous avions une fenêtre de maintenance erronée ou ancienne qui s’appliquait à une collection dans laquelle se trouvaient ces machines. Cela me semble un peu improbable puisqu’il y a une autre machine qui devrait être dans toutes les mêmes collections et qui redémarre à l’heure correcte de 20h00 environ.
Vérifions que le client redémarre bien quand le système de surveillance le dit !
Si je vérifie un client, systeminfo affiche l’heure de démarrage à 19h22. Le journal des événements semble corroborer cela :
Log Name: System
Source: USER32
Date: 3/12/2015 7:21:02 PM
Event ID: 1074
Task Category: None
Level: Information
Keywords: Classic
User: SYSTEM
Computer: HOST09
Description:
The process C:\Windows\CCM\CcmExec.exe (HOST09) has initiated the restart of computer HOST09 on behalf of user NT AUTHORITY\SYSTEM for the following reason: No title for this reason could be found
Reason Code: 0x80020001
Shutdown Type: restart
Comment: Your computer will restart at 03/12/2015 07:21:02 PM to complete the installation of applications and software updates.
A-t-il redémarré à cause des mises à jour Windows de SCCM ?
Si je creuse dans le UpdatesHandler.log, la réponse est un grand « oui » :
Initiating updates scan for checking applicability. UpdatesHandler 3/12/2015 7:00:00 PM 6472 (0x1948)
Successfully initiated scan. UpdatesHandler 3/12/2015 7:00:00 PM 6472 (0x1948)
Updates scan completion received, result = 0x0. UpdatesHandler 3/12/2015 7:00:00 PM 8396 (0x20CC)
Initiating updates scan for checking applicability. UpdatesHandler 3/12/2015 7:00:02 PM 10160 (0x27B0)
Method (Apply) called from SDM. UpdatesHandler 3/12/2015 7:00:02 PM 8888 (0x22B8)
Starting job with id = {7DD179F1-1B94-4ADB-A5F1-08E9A000709F} UpdatesHandler 3/12/2015 7:00:02 PM 8888 (0x22B8)
Successfully initiated scan. UpdatesHandler 3/12/2015 7:00:02 PM 10160 (0x27B0)
Updates scan completion received, result = 0x0. UpdatesHandler 3/12/2015 7:00:02 PM 8396 (0x20CC)
Initiating Scan. Forced = (0) UpdatesHandler 3/12/2015 7:00:02 PM 8888 (0x22B8)
Successfully initiated scan for job ({7DD179F1-1B94-4ADB-A5F1-08E9A000709F}). UpdatesHandler 3/12/2015 7:00:02 PM 8888 (0x22B8)
Scan completion received for job ({7DD179F1-1B94-4ADB-A5F1-08E9A000709F}). UpdatesHandler 3/12/2015 7:00:02 PM 8396 (0x20CC)
Evaluating status of the updates for the job ({7DD179F1-1B94-4ADB-A5F1-08E9A000709F}). UpdatesHandler 3/12/2015 7:00:02 PM 8396 (0x20CC)
Initiating download for the job ({7DD179F1-1B94-4ADB-A5F1-08E9A000709F}). UpdatesHandler 3/12/2015 7:00:02 PM 8396 (0x20CC)
Bundle update (038c4fc9-664f-45e5-b838-f7263ffc4512) is requesting download from child updates for action (INSTALL) UpdatesHandler 3/12/2015 7:00:02 PM 8396 (0x20CC)
Le ServiceWindowManager.log montre que cette fenêtre de maintenance a été appliquée à 19h00 :
Active Service Windows List has 1 windows ServiceWindowManager 3/12/2015 7:28:13 PM 2404 (0x0964)
Service Window with ID = {F51051BF-90E8-4ED7-BA06-F74F9E74A098} having Starttime=03/12/15 19:00:00 ServiceWindowManager 3/12/2015 7:28:13 PM 2404 (0x0964)
Duration is 0 days, 08 hours, 00 mins, 00 secs ServiceWindowManager 3/12/2015 7:28:13 PM 2404 (0x0964)
OK… D’où vient cette fenêtre de maintenance ?
Un peu de SQL devrait me montrer toutes les fenêtres de maintenance appliquées à un client SCCM particulier :
select
v_FullCollectionMembership.Name as Computername ,v_Collection.Name as CollectionName,
v_ServiceWindow.Description as "Next Maintanance Window"
from v_ServiceWindow
inner join v_FullCollectionMembership on (v_FullCollectionMembership.CollectionID = v_ServiceWindow.CollectionID)
inner join v_Collection on (v_Collection.CollectionID = v_FullCollectionMembership.CollectionID)
order by Computername
et j’obtiens les résultats suivants :
Computername CollectionName Next Maintanance Window
HOST09 Default Maintenance Window Occurs on 9/15/2013 1:00 AM
HOST09 Weekly Maintenance Window - Thursday Occurs every 1 weeks on Thursday effective 11/1/2013 8:00 PM
Une petite explication s’impose : tous nos clients SCCM appartiennent à une collection à laquelle est assignée une fenêtre de maintenance par défaut qui ne se produit qu’une seule fois et est dans le passé. Cela empêche les changements d’appartenance à la collection et les demandes intempestives de stratégie client de provoquer l’exécution immédiate d’actions par les clients qui les avaient différées. Cependant, puisque les fenêtres de maintenance sont « unifiées », la fenêtre de maintenance hebdomadaire devrait s’appliquer… à 20h00.
Par intuition, j’ai listé toutes les collections auxquelles ce client appartenait, puis j’ai vérifié si elles avaient des fenêtres de maintenance assignées :
SELECT dbo.v_Collection.Name
FROM dbo.v_FullCollectionMembership INNER JOIN dbo.v_Collection ON dbo.v_FullCollectionMembership.CollectionID = dbo.v_Collection.CollectionID
WHERE (LOWER(dbo.v_FullCollectionMembership.Name) = LOWER('HOST09'))
Pour faire court : elles n’en ont pas.
Quels résultats attendiez-vous ?
Je m’attendais vraiment à voir une collection ayant une fenêtre de maintenance commençant à 19h00, et à moins que mon SQL soit erroné et que je l’aie ratée, ce n’est apparemment pas ce qui se passe ici.
Le fait que ce soit une heure trop tôt m’incline aussi fortement à penser que cela pourrait être un problème de fuseau horaire ou de décalage d’horloge, mais cela semble également conforme aux attentes.
Je pense toujours que mes deux hypothèses sont valables et n’ont pas été réfutées, mais je ne sais pas comment recueillir plus d’informations pour trancher. Avez-vous des idées sur la façon dont je devrais procéder pour le dépannage ?
Y a-t-il autre chose que je devrais envisager ? Quelles autres causes pourraient expliquer cela ?
MODIFICATION :
J’ai vérifié le groupe de mises à jour logicielles pour les mises à jour de ce mois et il y a une date limite fixée au 10/03/15 à 20h53 mais le comportement de la date limite pour les activités à effectuer en dehors de la fenêtre de maintenance est désactivé à la fois pour l’installation des mises à jour logicielles et le redémarrage du système.
Quant à l’heure actuelle de la machine, elle semble vraiment correcte, mais je vérifie simplement la date et l’heure dans le Panneau de configuration :
Source : Server Fault.)