ประวัติเซิร์ฟเวอร์รีสตาร์ท / ปิดเครื่อง Windows


87

ฉันจะดูประวัติของทุกครั้งที่ Windows Server รีสตาร์ทหรือปิดเครื่องได้อย่างง่ายดายและสาเหตุที่รวมถึงผู้ใช้ที่เริ่มต้นระบบที่เริ่มต้นและระบบล่ม

บันทึกเหตุการณ์ Windows เป็นคำตอบที่ชัดเจน แต่รายการทั้งหมดของเหตุการณ์ที่ฉันควรดูคืออะไร

ฉันพบโพสต์เหล่านี้บางส่วนที่ตอบคำถามของฉัน:

แต่สิ่งเหล่านั้นไม่ครอบคลุมทุกสถานการณ์ AFAIK และข้อมูลนั้นยากที่จะเข้าใจเพราะมันแพร่กระจายไปทั่วคำตอบหลาย ๆ

ฉันมี Windows Server หลายรุ่นดังนั้นโซลูชันที่ใช้งานได้อย่างน้อยรุ่น 2008, 2008 R2, 2012 และ 2012 R2 จะเหมาะที่สุด


1
ในบางสถานการณ์ TurnedOnTimesView ของ Nirsoft อาจดีพอ ( nirsoft.net/utils/computer_turned_on_times.html ) จะแสดงเวลารีบูตและปิดเครื่อง
ปีเตอร์ Hahndorf

คุณใช้เครื่องมือตรวจสอบภายนอก, .eg, opsview, nagios, icinga, shinken หรือไม่? เครื่องมือเหล่านี้จัดเก็บผลการตรวจสอบในฐานข้อมูลจากนั้นคุณสามารถตรวจสอบว่าเซิร์ฟเวอร์รีสตาร์ทหรือไม่และเมื่อใด,
030

คำตอบ:


100

คำตอบที่ชัดเจนที่สุดที่ฉันสามารถหาได้คือ:

ซึ่งแสดงรหัสเหตุการณ์เหล่านี้เพื่อตรวจสอบ (อ้างถึง แต่แก้ไขและจัดรูปแบบใหม่จากบทความ):

  • รหัสเหตุการณ์ 6005 ( ทางเลือก ):“ บริการบันทึกเหตุการณ์เริ่มขึ้น” นี่คือคำพ้องกับการเริ่มต้นระบบ
  • รหัสเหตุการณ์ 6006 ( ทางเลือก ):“ บริการบันทึกเหตุการณ์หยุดทำงาน” นี่คือคำพ้องกับการปิดระบบ
  • รหัสเหตุการณ์ 6008 ( ทางเลือก ): "การปิดระบบก่อนหน้านี้ไม่คาดคิด" บันทึกว่าระบบเริ่มต้นหลังจากที่ไม่ได้ปิดอย่างถูกต้อง
  • รหัสเหตุการณ์ 6009 ( ทางเลือก ): ระบุชื่อผลิตภัณฑ์รุ่นหมายเลขบิลด์ของเซอร์วิสแพ็คและชนิดของระบบปฏิบัติการที่ตรวจพบในเวลาบูต
  • รหัสเหตุการณ์ 6013: แสดงสถานะการออนไลน์ของคอมพิวเตอร์ ไม่มีเพจ TechNet สำหรับรหัสนี้

เพิ่มไปยังอีกสองสามคำตอบจาก Server Fault ที่ระบุไว้ใน OP ของฉัน:

  • รหัสเหตุการณ์ 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 ".
อาเบล

ลิงก์ในคำตอบนี้เสียหาย
Tim Schmelter

1
ฉันค้นหา แต่ล้มเหลวในการค้นหาเอกสารของ Microsoft ปัจจุบันบนรหัสบันทึกเหตุการณ์ดังนั้นฉันจึงสร้างปัญหาใน Microsoft Docs github เพื่อรวบรวมคำแนะนำ / ฉันทามติเกี่ยวกับสถานที่ที่จะฟื้นฟูเนื้อหานี้ในระบอบ MS docs ใหม่github.com/MicrosoftDocs/windowsserverdocs/issues / 444 @ tim-schmelter โปรดโหวตและเพิ่มความคิดของคุณ
JohnC

4

ฉันเพียงแค่ปล่อยให้มันเป็นความคิดเห็นตั้งแต่ JohnC ได้ครอบคลุมทุกอย่างโดยทั่วไป แต่ฉันยังไม่ได้รับอนุญาตให้ทำ

เหตุการณ์ที่เขาอธิบายได้ถูกนำมาใช้เป็นระยะเวลานานดังนั้นพวกเขาจึงจะทำงานกับระบบปฏิบัติการใด ๆ ที่คุณกล่าวถึงรวมถึงพี่น้องเดสก์ทอปของพวกเขา หน้ารหัสเหตุการณ์ที่เขาเชื่อมโยงไปเช่น6006บน TechNet พูดถึง Windows Server 2003

หากมีการปิดระบบอย่างหรูหราผู้ใช้เริ่มต้นหรืออย่างอื่นคุณควรเห็นบางเหตุการณ์ ID 7036 ที่บอกคุณว่าบริการต่างๆ "เข้าสู่สถานะหยุดทำงาน" เมื่อเครื่องเริ่มทำงานอีกครั้งคุณจะเห็นยุค 7036 แจ้งว่าบริการกำลังเข้าสู่สถานะทำงาน


2
นอกจากนี้คุณยังจะเห็นบล็อกเหตุการณ์ ID 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}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.