Historia ponownego uruchamiania / zamykania systemu Windows Server

87

Jak mogę łatwo zobaczyć historię za każdym razem, gdy mój system Windows Server uruchamia się ponownie lub zamyka, i dlaczego tak się dzieje, w tym inicjowane przez użytkownika, inicjowane przez system i awarię systemu?

Dziennik zdarzeń systemu Windows jest oczywistą odpowiedzią, ale jaka jest pełna lista zdarzeń, które powinienem wyświetlić?

Znalazłem te posty, które częściowo odpowiadają na moje pytanie:

ale nie obejmują one wszystkich scenariuszy AFAIK, a informacje są trudne do zrozumienia, ponieważ są rozłożone na wiele odpowiedzi.

Mam kilka wersji systemu Windows Server, więc rozwiązanie, które działa w co najmniej wersjach 2008, 2008 R2, 2012 i 2012 R2 byłoby idealne.

JohnC
źródło
1
W niektórych sytuacjach TurnedOnTimesView firmy Nirsoft może być wystarczająco dobry. ( nirsoft.net/utils/computer_turned_on_times.html ) pokazuje czasy ponownego uruchomienia i wyłączenia.
Peter Hahndorf
Czy używasz zewnętrznego narzędzia do monitorowania, .eg, opsview, nagios, icinga, shinken? Narzędzia te przechowują wyniki monitorowania w bazie danych, a następnie można sprawdzić, czy serwery zostały zrestartowane i kiedy,
030

Odpowiedzi:

100

Najostrzejsza, najbardziej zwięzła odpowiedź, jaką mogłem znaleźć, to:

która zawiera te identyfikatory zdarzeń do monitorowania (cytowane, ale edytowane i sformatowane z artykułu):

Dodaj do tego jeszcze kilka odpowiedzi na temat błędów serwera wymienionych w moim PO:

  • Zdarzenie o numerze 1074 ( alternatywnie ): „Proces X zainicjował ponowne uruchomienie / wyłączenie komputera w imieniu użytkownika Y z następującego powodu: Z.” Wskazuje, że aplikacja lub użytkownik zainicjowali ponowne uruchomienie lub zamknięcie.
  • Identyfikator zdarzenia 1076 ( alternatywny ): „Przyczyną podaną przez użytkownika X dla ostatniego nieoczekiwanego zamknięcia tego komputera jest: T”. Rejestruje, kiedy pierwszy użytkownik z uprawnieniami do zamykania loguje się na komputerze po nieoczekiwanym ponownym uruchomieniu lub zamykaniu i podaje przyczynę tego zdarzenia.

Czy tęskniłem?

JohnC
źródło
3
Aby odróżnić utratę zasilania od ponownego uruchomienia z powodu kontroli błędów, poszukaj kombinacji Identyfikatora zdarzenia 41 (źródło: Microsoft-Windows-Kernel-Power) i Identyfikatora zdarzenia 1001: (źródło: BugCheck). Poprzedni bez tego drugiego oznacza utratę zasilania lub reset.
sendmoreinfo
4
To było pomocne. Dziękuję johnC. W polu wejściowym identyfikatora zdarzenia Uwzględnia / Wyklucza w oknie Filtruj bieżący dziennik wpisałem „6005, 6006, 6008, 6009, 6013, 1074, 1076” i dało mi dokładnie to, czego potrzebowałem.
joey
1
Prawdopodobnie powinieneś dodać za Kernel-Generalpomocą eventid12 , który jest zazwyczaj pierwszym identyfikatorem zdarzenia, który zostanie zarejestrowany po ponownym uruchomieniu / resecie itp. I pokazuje rzeczywisty „czas uruchomienia systemu”, tj .: „System operacyjny uruchomił się w czasie systemowym 2017 - 09 - 19T02: 46: 06.582794900Z. ”
Abel,
Linki w tej odpowiedzi są zepsute
Tim Schmelter
1
Przeszukuję, ale nie udało mi się znaleźć bieżących dokumentów Microsoft w sprawie kodów dziennika zdarzeń, więc utworzyłem problem w githubie Dokumentów Microsoft, aby uzyskać porady / konsensus co do tego, gdzie można ożywić tę treść w nowym systemie MS docs, github.com/MicrosoftDocs/windowsserverdocs/issues / 444 . @ tim-schmelter, proszę oceń i dodaj swoje przemyślenia.
JohnC,
4

Zostawiłbym to po prostu jako komentarz, ponieważ JohnC w zasadzie wszystko opisał, ale nie mogę tego jeszcze zrobić.

Wydarzenia, które opisał, były używane od dłuższego czasu, więc będą działać na każdym systemie operacyjnym, o którym wspomniałeś, a także na ich komputerach. Strony identyfikujące zdarzenia, do których odsyłał , takie jak ta dla 6006 w TechNet, wspominają Windows Server 2003.

Jeśli nastąpiło eleganckie zamknięcie, inicjowane przez użytkownika lub w inny sposób, powinieneś zobaczyć także identyfikator zdarzenia 7036 informujący, że różne usługi „weszły w stan zatrzymania”. Gdy maszyna uruchomi się ponownie, zobaczysz więcej 7036s informujących, że usługi wchodzą w stan działania.

JTL
źródło
2
Zobaczysz również duży blok zdarzenia o identyfikatorze 7036, jeśli usługa wielokrotnie cyklicznie wyświetla stany, więc nie jest to najlepszy sposób na szukanie restartów. Najpierw powinieneś poszukać wydarzeń opisanych przez JohnC.
JTL
3

Opierając się na odpowiedzi @JohnC i rozszerzając ją

Możesz użyć filtru XML, takiego jak:

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

Możesz zastąpić 172800000 poniższymi wartościami dla zakresu czasu:

86400000 - Ostatnie 24 godziny

172800000 - Ostatnie 2 dni

604800000 - Ostatnie 7 dni

To pokaże znacznie więcej szczegółów od momentu, gdy serwer / komputer przeszedł w tryb offline. Obejmuje to zdarzenia Kernel-Power, User32 i EventLog.

elemer82
źródło
2

Wolę wykonywać czynności z wiersza poleceń. Oto początek fragmentu, który możesz wykorzystać. Pokazuje najnowsze 30 000 rekordów systemowych i zwraca ponowne uruchomienie w tych rekordach.

Get-EventLog -LogName System -Newest 30000 | Where-Object {$_.EventID -eq 6005}
Rakaim
źródło