O que estou tentando fazer?
Temos alguns clientes do SCCM, principalmente sites voltados para o público, que são executados no IIS 7.5 do Windows Server 2008 R2, que são monitorados por um sistema chamado XYmon . Recentemente, notamos que esses servidores estão sendo reinicializados após a instalação de atualizações mensais do Windows aproximadamente uma hora antes. Há uma certa quantidade de atraso inerente às Ações do Cliente do SCCM e ao sistema de monitoramento, mas o XYmon perde a conexão com essas máquinas por volta das 19: 20-19: 30h, enquanto o restante das máquinas monitoradas parecem reiniciar cerca de uma hora depois por volta de 20: 20-20: 30.
A Janela de Manutenção que eu espero que seja aplicada começa às 20:00 e termina às 22:00 e volta a ocorrer toda quinta-feira.
Estou tentando descobrir por que essas máquinas estão instalando suas atualizações uma hora antes. Sei que várias janelas de manutenção são "unidas" ou mescladas, portanto, suspeito que exista outra janela de manutenção que também esteja sendo aplicada a esses clientes.
Essas máquinas também estão em uma DMZ não associada a um domínio, portanto, não descartarei problemas de fuso horário / horário.
O que eu tentei para que isso acontecesse?
Eu percebi que o problema de fuso horário / relógio era o mais provável, mas as duas máquinas estavam no fuso horário correto, sincronizaram o tempo e conseguiram lidar com a mudança de horário de verão que ocorreu no dia 8 de março de forma adequada.
Minha próxima hipótese é que tínhamos uma Janela de Manutenção errante ou antiga que estava se aplicando a uma Coleção em que essas máquinas estavam. Isso parece um pouco improvável para mim já que há outra máquina que deve ser as mesmas Coleções que são reinicializadas no tempo correto de 20: 00-ish.
Vamos garantir que o cliente esteja realmente reinicializando quando o sistema de monitoramento disser que está!
Se eu verificar um cliente, systeminfo
mostrará o tempo de inicialização às 19:22. O log de eventos parece colaborar com isso:
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.
Reiniciou por causa das Atualizações do Windows do SCCM?
Se eu pesquisar o UpdatesHandler.log
, a resposta será um "sim" antigo:
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)
O 'ServiceWindowManager.log' mostra que essa janela de manutenção foi aplicada às 19:00:
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 ... De onde veio essa Janela de Manutenção?
Um pouco de SQL deve mostrar-me todo o Windows de Manutenção aplicado a um determinado cliente SCCM:
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
e obtenho os seguintes resultados:
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
Um pouco de explicação está em ordem: Todos os nossos clientes SCCM pertencem a uma coleção que é atribuída a uma janela de manutenção padrão que ocorre apenas uma vez e está no passado. Isso impede que as alterações na associação da Coleção e as solicitações de políticas do cliente não temporárias façam com que os clientes que suspenderam as ações os executem imediatamente. No entanto, como as janelas de manutenção são "unidas", a janela de manutenção semanal deve ser aplicada às 20:00.
Em um palpite, despejei todas as Coleções em que este cliente estava e depois fui verificar se eles tinham o Windows de Manutenção atribuído a eles:
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'))
longa história curta. Eles não fazem.
Que resultados você esperava?
Eu realmente esperava ver uma coleção que tinha uma janela de manutenção aplicada a ela que começava às 19:00 e, a menos que meu SQL fosse ruim e eu sentisse falta, acho que não é isso que está acontecendo aqui.
O fato de que é uma hora antes realmente me inclina a pensar que poderia ser um problema com fusos horários ou clock skew, mas que parece ser esperado também.
Eu ainda acho que ambas as minhas hipóteses são decentes e não foram refutadas, mas eu não sei como coletar mais informações para fazer uma determinação sobre elas. Alguma idéia de como devo proceder com a solução de problemas?
Há algo mais que eu deva considerar? Que outras coisas poderiam causar isso?
EDITAR:
Eu verifiquei o Software Update Group para as Atualizações de Software deste mês e há um prazo definido para 03/10/15 às 20:53 mas o comportamento do prazo final para as atividades a serem executadas fora da janela de manutenção está desabilitado para instalação de atualizações de software e reinicialização do sistema.
Quanto à hora atual da caixa, parece que está tudo certo, mas estou apenas verificando Data e Hora no Painel de Controle: