บทความนี้จะกล่าวถึงการตรวจสอบหาสาเหตุที่ทำให้เครื่อง Linux server เกิดการ shutdown หรือ reboot ขึ้น
1. เริ่มแรกโดยการตรวจสอบ log ของระบบ /var/log/messages ว่ามีข้อความอะไรเกิดขึ้นมาบ้างก่อนที่เครื่องจะ shutdown/reboot
แต่ถ้าไม่เจออะไรเลยก็ต้องตรวจหาต่อไป
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
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
หวังว่าบทความนี้คงมีส่วนช่วยในการวิเคราะห์ไม่มากก็น้อย
วิสูจน์ อมตาริยกุล
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?
Reviewed by Wisoot Amatariyakul
on
8:58 PM
Rating:
No comments: