Історія перезавантаження / відключення Windows Server


87

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

Журнал подій Windows - це явна відповідь, але який повний перелік подій, які я повинен переглянути?

Я знайшов ці публікації, які частково відповідають на моє запитання:

але вони не охоплюють кожного сценарію AFAIK, і інформацію важко зрозуміти, оскільки вона поширюється на кілька відповідей.

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


1
У деяких ситуаціях TurnedOnTimesView Nirsoft може бути досить хорошим. ( nirsoft.net/utils/computer_turned_on_times.html ) показує час перезавантаження та відключення.
Пітер Гандорф

Чи використовуєте ви зовнішній інструмент моніторингу, .eg, opsview, nagios, icinga, shinken? Ці інструменти зберігають результати моніторингу у базі даних, а потім ви можете перевірити, чи були перезапущені сервери і коли,
030

Відповіді:


100

Найяскравіша і найкоротша відповідь, яку я міг знайти:

який перераховує ці ідентифікатори подій для моніторингу (цитується, але редагується та переформатується зі статті):

Додайте до цього ще пару з відповідей на помилку сервера, перелічених у моїй ОП:

  • Ідентифікатор події 1074 ( альтернативний ): "Процес X ініціював перезапуск / відключення комп'ютера від імені користувача Y з наступної причини: Z." Вказує, що програма чи користувач ініціювали перезапуск або відключення.
  • Ідентифікатор події 1076 ( альтернативний ): "Причина, подана користувачем X для останнього несподіваного вимкнення цього комп'ютера: Y." Записує, коли перший користувач із привілеями відключення входить до комп'ютера після несподіваного перезавантаження або відключення та подає причину виникнення.

Чи пропустив я когось?


3
Для розмежування втрати живлення та перезавантаження через помилку, знайдіть комбінацію ідентифікатора події 41 (джерело: Microsoft-Windows-Kernel-Power) та ідентифікатора події 1001: (джерело: BugCheck). Колишній без останнього вказує на втрату або скидання потужності.
sendmoreinfo

4
Це було корисно. Дякую, johnC. У полі Включення / Виключення ідентифікатора події у вікні журналу «Фільтр поточного журналу» я ввів «6005, 6006, 6008, 6009, 6013, 1074, 1076», і це дало мені саме те, що мені потрібно.
joey

1
Вам, ймовірно, слід додати Kernel-Generalз eventid12 , який, як правило, є першим eventid, який увійшов після перезавантаження / скидання тощо і показує фактичний "час запуску системи", тобто: "Операційна система запустилася в системний час 2017 - 09 - 19T02: 46: 06.582794900Z ".
Абель

Посилання в цій відповіді порушені
Тім Шмелтер

1
Я шукав, але не зміг знайти поточні документи Microsoft у кодах журналу подій, тому створив проблему в github Microsoft Docs, щоб отримати поради / консенсус щодо того, де відновити цей вміст у новому режимі документів MS, github.com/MicrosoftDocs/windowsserverdocs/isissue / 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.


2

Я віддаю перевагу виконувати діяльність з командного рядка. Ось початок фрагменту, який ви можете використовувати. Це показує останні 30 000 системних записів і повертає перезавантаження в ці записи.

Get-EventLog -LogName System -Newest 30000 | Where-Object {$_.EventID -eq 6005}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.