История перезапуска / завершения работы Windows Server

87

Как я могу легко увидеть историю каждого перезапуска или выключения моего Windows Server и причину, в том числе инициированную пользователем, инициированную системой и сбой системы?

Журнал событий Windows - очевидный ответ, но какой полный список событий я должен просмотреть?

Я нашел эти сообщения, которые частично отвечают на мой вопрос:

но они не охватывают каждый сценарий AFAIK, и информацию трудно понять, потому что она распределена по нескольким ответам.

У меня есть несколько версий Windows Server, поэтому решение, которое работает как минимум для версий 2008, 2008 R2, 2012 и 2012 R2, было бы идеальным.

JohnC
источник
1
В некоторых ситуациях TurnedOnTimesView Nirsoft может быть достаточно хорошим. ( nirsoft.net/utils/computer_turned_on_times.html ) показывает время перезагрузки и завершения работы.
Питер Хандорф,
Используете ли вы внешний инструмент мониторинга, .eg, opsview, nagios, icinga, shinken? Эти инструменты хранят результаты мониторинга в базе данных, и затем вы можете проверить, были ли серверы перезапущены и когда,
030

Ответы:

101

Самый ясный и краткий ответ, который я смог найти:

который перечисляет эти идентификаторы событий для мониторинга (цитируется, но редактируется и переформатируется из статьи):

  • Код события 6005 ( альтернативный ): «Служба журнала событий была запущена». Это синоним запуска системы.
  • Событие с кодом 6006 ( альтернативное ): «Служба журнала событий остановлена». Это синоним выключения системы.
  • Событие с кодом 6008 ( альтернатива ): «Предыдущее отключение системы было неожиданным». Записи о том, что система запустилась после того, как не была корректно завершена.
  • Идентификатор события 6009 ( альтернативный ): указывает имя продукта Windows, версию, номер сборки, номер пакета обновления и тип операционной системы, обнаруженные во время загрузки.
  • Код события 6013: отображает время работы компьютера. Для этого идентификатора нет страницы TechNet.

Добавьте к этому еще пару ответов о сбое сервера, перечисленных в моем OP:

  • Событие с кодом 1074 ( альтернатива ): «Процесс X инициировал перезагрузку / выключение компьютера от имени пользователя Y по следующей причине: Z». Указывает, что приложение или пользователь инициировали перезапуск или завершение работы.
  • Событие с кодом 1076 ( альтернатива ): «Причина, указанная пользователем X для последнего неожиданного выключения этого компьютера: Y». Записывает, когда первый пользователь с правами на отключение входит в систему компьютера после неожиданного перезапуска или завершения работы и указывает причину возникновения.

Я что-нибудь пропустил?

JohnC
источник
3
Чтобы провести различие между отключением питания и перезагрузкой из-за проверки на наличие ошибок, найдите сочетание Event ID 41 (источник: Microsoft-Windows-Kernel-Power) и Event ID 1001: (источник: BugCheck). Бывший без последнего указывает на потерю мощности или сброс.
sendmoreinfo
4
Это было полезно. Спасибо, Джон. В поле ввода идентификатора события «Включает / исключает» в окне «Фильтровать текущий журнал» я ввел «6005, 6006, 6008, 6009, 6013, 1074, 1076», и он дал мне именно то, что мне было нужно.
Джои
1
Вы, вероятно, должны добавить Kernel-Generalс помощью Eventid12 , который обычно является первым событием, которое регистрируется после перезагрузки / сброса и т. Д., И показывает фактическое «время запуска системы», то есть: «Операционная система запущена в системное время 2017 - 09 - 19T02: 46: 06.582794900Z «.
Авель
Ссылки в этом ответе не работают
Тим Шмельтер,
1
Я ищу, но не смог найти текущие документы Microsoft по кодам журнала событий, поэтому я создал проблему в github Microsoft Docs, чтобы получить совет / консенсус о том, где восстановить этот контент в новом режиме MS docs, github.com/MicrosoftDocs/windowsserverdocs/issues / 444 . @ tim-schmelter, пожалуйста, добавь свои мысли.
JohnC
4

Я бы просто оставил это как комментарий, поскольку JohnC в основном охватил все, но мне пока не разрешено это делать.

Описанные им события использовались довольно давно, поэтому они будут работать для любой из упомянутых вами ОС, а также для их настольных собратьев. На страницах с идентификаторами событий, на которые он ссылался, например на 6006 в TechNet, упоминается Windows Server 2003.

Если произошло элегантное завершение работы, инициированное пользователем или иным образом, вы также должны увидеть какое-то событие с кодом 7036, сообщающее, что различные службы «перешли в состояние остановки». Когда машина снова запустится, вы увидите, что больше 7036-х сообщают, что сервисы переходят в рабочее состояние.

ДжейТиЭл
источник
2
Вы также увидите большой блок события с идентификатором 7036, если служба периодически повторяет циклы, поэтому это не лучший способ поиска перезапусков. Вы должны искать события, описанные JohnC, в первую очередь.
JTL
3

Опираясь на ответ @JohnC и расширяя его

Вы можете использовать XML-фильтр, например:

<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>

Вы можете заменить 172800000 на следующие значения для временного диапазона:

86400000 - последние 24 часа

172800000 - последние 2 дня

604800000 - последние 7 дней

Это покажет гораздо больше подробностей со времени, когда сервер / компьютер отключился. Он включает события Kernel-Power, User32 и EventLog.

elemer82
источник
2

Я предпочитаю выполнять действия из командной строки. Вот начало фрагмента, который вы можете использовать. Это показывает последние 30 000 системных записей и возвращает перезагрузки в этих записях.

Get-EventLog -LogName System -Newest 30000 | Where-Object {$_.EventID -eq 6005}
Rakaim
источник