ti-enxame.com

Histórico de reinicialização / desligamento do Windows Server

Como posso ver facilmente um histórico de cada vez que meu Windows Server é reiniciado ou desligado e o motivo pelo qual, incluindo iniciado pelo usuário, iniciado pelo sistema e travado?

O Log de Eventos do Windows é uma resposta óbvia, mas qual é a lista completa de eventos que devo exibir?

Encontrei esses posts que respondem parcialmente à minha pergunta:

mas elas não abrangem todos os cenários do AFAIK e as informações são difíceis de entender porque estão espalhadas por várias respostas.

Eu tenho várias versões do Windows Server, portanto, uma solução que funcione para pelo menos as versões 2008, 2008 R2, 2012 e 2012 R2 seria ideal.

92
JohnC

A resposta mais clara e sucinta que pude encontrar é:

que lista esses IDs de eventos a serem monitorados (citados, mas editados e reformatados do artigo):

  • ID do evento 6005 ( alternativo ): "O serviço de log de eventos foi iniciado." Isso é sinônimo de inicialização do sistema.
  • ID do evento 6006 ( alternativo ): "O serviço de log de eventos foi parado." Isso é sinônimo de desligamento do sistema.
  • ID do evento 6008 ( alternativa ): "O desligamento anterior do sistema foi inesperado." Registros que o sistema iniciou após não ter sido desligado corretamente.
  • ID do evento 6009 ( alternativo ): indica o nome do produto, versão, número da compilação, número do service pack e número do sistema operacional do Windows detectado no momento da inicialização.
  • Identificação do evento 6013: exibe o tempo de atividade do computador. Não há uma página do TechNet para esse ID.

Acrescente a isso mais algumas respostas das falhas de servidor listadas no meu OP:

  • Identificação do evento 1074 ( alternativa ): "O processo X iniciou a reinicialização/desligamento do computador em nome do usuário Y pelo seguinte motivo: Z." Indica que um aplicativo ou usuário iniciou uma reinicialização ou desligamento.
  • ID do evento 1076 ( alternativa ): "O motivo fornecido pelo usuário X para o último desligamento inesperado deste computador é: Y." Registra quando o primeiro usuário com privilégios de desligamento faz logon no computador após uma reinicialização ou desligamento inesperado e fornece um motivo para a ocorrência.

Perdi algum?

106
JohnC

Simplesmente deixaria isso como um comentário, já que o JohnC basicamente cobriu tudo, mas ainda não estou autorizado a fazê-lo.

Os eventos que ele descreveu foram usados ​​por um bom tempo, para que funcionem em qualquer sistema operacional que você mencionou, bem como em seus irmãos da área de trabalho. As páginas de identificação de evento às quais ele vinculou, como a página 6006 no TechNet, mencionam o Windows Server 2003.

Se houve um desligamento elegante, iniciado pelo usuário ou não, você também deve ver alguns ID do Evento 7036 informando que vários serviços "entraram no estado parado". Quando a máquina iniciar novamente, você verá mais 7036s anunciando que os serviços estão entrando no estado de execução.

4
JTL

Com base em @ JohnC s responder e estendê-lo

Você pode usar um filtro XML como:

<QueryList>
<Query Id="0" Path="System">
<Select Path="Security">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Setup">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='eventlog' or @Name='Microsoft-Windows-Eventlog'] and (EventID=1074 or EventID=1076 or EventID=6005 or EventID=6006 or EventID=6008) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="Microsoft-Windows-Kernel-Power/Thermal-Diagnostic">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-Kernel-Power'] and (Level=1 ) and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='User32'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
<Select Path="System">*[System[Provider[@Name='Microsoft-Windows-WER-SystemErrorReporting'] and TimeCreated[timediff(@SystemTime) &lt;= 172800000]]]</Select>
</Query>
</QueryList>

Você pode substituir 172800000 pelos valores abaixo para o intervalo de tempo:

86400000 - Últimas 24 horas

172800000 - Últimos 2 dias

604800000 - Últimos 7 dias

Isso mostrará muito mais detalhes a partir do momento em que o servidor/pc ficou offline. Inclui os eventos Kernel-Power, User32 e EventLog.

4
elemer82

Eu prefiro realizar atividades na linha de comando. Aqui está o começo de um trecho que você pode aproveitar. Isso mostra os 30.000 registros do sistema mais recentes e retorna as reinicializações dentro desses registros.

Get-EventLog -LogName System -Newest 30000 | Where-Object {$_.EventID -eq 6005}
2
Rakaim

Transformando @ user10082 comentário em uma resposta. A solução proposta é um script Powershell de uma linha:

Get-EventLog -LogName System |? {$_.EventID -in (6005,6006,6008,6009,1074,1076)} | ft TimeGenerated,EventId,Message -AutoSize –wrap
1
ocroquette