How to find the cause of unexpected shutdown?

Most Recent

Seo Services
บทความนี้จะกล่าวถึงการตรวจสอบหาสาเหตุที่ทำให้เครื่อง Linux server เกิดการ shutdown หรือ reboot ขึ้น

1. เริ่มแรกโดยการตรวจสอบ log ของระบบ /var/log/messages ว่ามีข้อความอะไรเกิดขึ้นมาบ้างก่อนที่เครื่องจะ shutdown/reboot

  • ถ้ามี hardware error หรือ panic ก็แก้ปัญหาตามอาการ
  • ถ้ามีข้อความเกี่ยวกับ memory อย่างเช่น OOM (out of memory) ก็สามารถตรวจสอบเพิ่มเติมด้วยคำสั่ง sar ในการดูข้อมูลย้อนหลังจาก log ของ sar ที่เก็บไว้ภายใต้ /var/log/sa สำหรับวิธีการใช้ sar สามารถดูเพิ่มเติมจากบทความ คำสั่งที่ใช้ในการตรวจสอบ Performance บน Linux ตอนที่ 2: Memory Utilization

แต่ถ้าไม่เจออะไรเลยก็ต้องตรวจหาต่อไป

2. ตรวจสอบวัน เวลาที่เครื่องเกิดปัญหาการ shutdown หรือ reboot และการเข้ามาใช้งานของ user จากคำสั่ง last

ตรวจสอบการ reboot

# last -x reboot | more                                           


ตรวจสอบการ shutdown

# last -x shutdown | more                                       



ตรวจสอบการ login รวมถึงการเปลี่ยน run level

# last -x | more                                                         


ถ้าต้องการดูเฉพาะช่วงเวลาที่เกิดเหตุก็สามารถระบุได้ตามรูปแบบด้านล่าง

last  -x -t YYYYMMDDHHMMSS                        

ตัวอย่างเช่น

# last -x -t 20190422114700                                      


นอกจากนี้สามารถใช้คำสั่งด้านล่างนี้ในการตรวจสอบ

# utmpdump /var/log/wtmp | cat                             



3. ตรวจสอบการใช้การคำสั่ง sudo

# grep -r sudo  /var/log                                             


4. ตรวจสอบการเปลี่ยนสิทธิ์เป็น superuser

  •  /var/log/secure       สำหรับ centOS และ RedHat  
  •  /var/log/auth.log     สำหรับ Ubuntu

5. ตรวจสอบ journal log ดูการ shutdown/reboot

การที่จะให้ journald service สามารถเก็บ log รวมถึงข้อมูลเกี่ยวกับการ shutdown/reboot จะต้องทำขั้นตอนด้านล่างก่อน

# mkdir -p /var/log/journal                                           
# systemd-tmpfiles --create --prefix /var/log/journal 

จากนั้นแก้ไขไฟล์ /etc/systemd/journald.conf เพื่อ enable persistent record

# vi  /etc/systemd/journald.conf                                    

เพิ่มบรรทัดด้านล่าง

[Journal]  Storage=persistent                                       

จากนั้นดำเนินการ restart service

# systemctl restart systemd-journald                           


คำสั่งในการดูข้อมูลใน journal log

# journalctl -b                                                                 
# journalctl -b -l                                                              

ถ้าต้องการดู session หลังสุด

# journalctl -b -l -e                                                         


6. ตรวจสอบการใช้งานคำสั่งของ user "root" และ user ที่ login ในช่วงเวลานั้น

โดยค่า default การดูคำสั่งย้อนหลังจากคำสั่ง history จะไม่มีการแสดงวัน เวลาที่ดำเนินการคำสั่งนั้นๆ
ถ้าต้องการให้แสดงวัน เวลา สามารถกำหนดค่าตัวแปลได้ตามบทความ กำหนด วัน เวลา (time-stamp) ในการแสดง history ของคำสั่ง

คำสั่งที่ใช้ในการดูคำสั่งย้อนหลัง

# history | tail                                                                   
# hitsory | tail -40                                                             


หวังว่าบทความนี้คงมีส่วนช่วยในการวิเคราะห์ไม่มากก็น้อย

วิสูจน์ อมตาริยกุล
How to find the cause of unexpected shutdown? How to find the cause of unexpected shutdown? Reviewed by Wisoot Amatariyakul on 8:58 PM Rating: 5

No comments:

Powered by Blogger.