Seringkali kita menemukan sistem Linux melakukan reboot dengan cara yang tidak direncanakan atau karena alasan yang jelas tidak diketahui. Menemukan dan menyelesaikan akar penyebab dapat membantu mencegah terulangnya masalah tersebut dan menghindari downtime yang tidak direncanakan.
Ada beberapa cara untuk mengetahui apa yang memicu reboot. Pada artikel ini, kita akan membahas cara-cara tersebut dan bagaimana Anda dapat memanfaatkan utilitas dan log yang tersedia di sistem Linux untuk memecahkan masalah skenario tersebut.
Daftar isi
Periksa Waktu Reboot
Anda dapat memeriksa kapan sistem reboot terjadi dengan siapa dan perintah terakhir
$ who -b system boot 2021-02-13 20:51 $ last -x | head | tac abhishek pts/0 192.168.1.16 Sat Feb 13 19:53 - 19:55 (00:02) reboot system boot 3.10.0-1160.11.1 Sat Feb 13 19:55 - 20:54 (00:58) runlevel (to lvl 3) 3.10.0-1160.11.1 Sat Feb 13 19:55 - 20:04 (00:08) abhishek pts/0 192.168.1.16 Sat Feb 13 19:56 - 20:04 (00:07) reboot system boot 3.10.0-1160.11.1 Sat Feb 13 20:04 - 20:54 (00:49) runlevel (to lvl 3) 3.10.0-1160.11.1 Sat Feb 13 20:04 - 20:51 (00:46) abhishek pts/0 192.168.1.16 Sat Feb 13 20:04 - 20:50 (00:46) reboot system boot 3.10.0-1160.11.1 Sat Feb 13 20:51 - 20:54 (00:03) runlevel (to lvl 3) 3.10.0-1160.11.1 Sat Feb 13 20:51 - 20:54 (00:02) abhishek pts/0 192.168.1.16 Sat Feb 13 20:51 still logged in $
Periksa Pesan Sistem
Anda selanjutnya dapat mengkorelasikan reboot yang ingin Anda diagnosa dengan pesan sistem.
Untuk sistem CentOS/RHEL, Anda akan menemukan log di /var/log/messages sedangkan untuk sistem Ubuntu/Debian, lognya di /var/log/syslog. Anda cukup menggunakan perintah ekor atau editor teks favorit Anda untuk memfilter atau menemukan data tertentu.
Seperti yang dapat disimpulkan dari log di bawah ini, entri tersebut menyarankan shutdown/reboot yang diprakarsai oleh administrator atau pengguna root. Pesan-pesan ini dapat bervariasi tergantung pada jenis OS dan cara reboot/shutdown dipicu tetapi Anda akan selalu menemukan informasi yang berguna dengan melihat log sistem meskipun mungkin tidak cukup eksplisit untuk menunjukkan penyebabnya setiap saat.
Feb 13 19:56:20 centos7vm chronyd[637]: Source 72.30.35.89 replaced with 142.147.92.5 Feb 13 20:00:40 centos7vm chronyd[637]: Selected source 162.159.200.123 Feb 13 20:01:01 centos7vm systemd: Created slice User Slice of root. Feb 13 20:01:01 centos7vm systemd: Started Session 2 of user root. Feb 13 20:04:09 centos7vm systemd-logind: System is powering down. Feb 13 20:04:09 centos7vm systemd: Closed LVM2 poll daemon socket. Feb 13 20:04:09 centos7vm systemd: Stopped target Multi-User System.
Salah satu perintah yang dapat Anda gunakan untuk memfilter log sistem diberikan di bawah ini:
sudo grep -iv ': starting|kernel: .*: Power Button|watching system buttons|Stopped Cleaning Up|Started Crash recovery kernel' /var/log/messages /var/log/syslog /var/log/apcupsd* | grep -iw 'recover[a-z]*|power[a-z]*|shut[a-z ]*down|rsyslogd|ups'
Peristiwa yang ditangkap mungkin tidak selalu spesifik. Selalu telusuri peristiwa yang memberikan tanda peringatan atau kesalahan yang dapat menyebabkan sistem mati/crash.
Verifikasi log auditd
Untuk sistem dengan auditd, ini adalah tempat yang tepat untuk memeriksa berbagai peristiwa menggunakan alat ausearch. Gunakan perintah di bawah ini untuk memeriksa dua entri terakhir dari log audit.
$ sudo ausearch -i -m system_boot,system_shutdown | tail -4
Ini akan melaporkan dua shutdown atau reboot terbaru. Jika ini melaporkan SYSTEM_SHUTDOWN diikuti oleh SYSTEM_BOOT, semuanya akan baik-baik saja. Namun, jika melaporkan dua baris SYSTEM_BOOT berturut-turut atau hanya satu baris SYSTEM_BOOT, kemungkinan besar, sistem tidak dimatikan dengan baik. Output normal harus seperti di bawah ini:
$ sudo ausearch -i -m system_boot,system_shutdown | tail -4 ---- type=SYSTEM_SHUTDOWN msg=audit(Saturday 13 February 2021 A.852:8) : pid=621 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success' ---- type=SYSTEM_BOOT msg=audit(Saturday 13 February 2021 A.368:8) : pid=622 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success' $
Keluaran di bawah mencantumkan dua pesan SYSTEM_BOOT berturut-turut, yang mungkin menunjukkan penghentian yang tidak wajar meskipun perlu dikorelasikan dengan log sistem.
$ sudo ausearch -i -m system_boot,system_shutdown | tail -4 ---- type=SYSTEM_BOOT msg=audit(Saturday 13 February 2021 A.852:8) : pid=621 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success' ---- type=SYSTEM_BOOT msg=audit(Saturday 13 February 2021 A.368:8) : pid=622 uid=root auid=unset ses=unset subj=system_u:system_r:init_t:s0 msg=' comm=systemd-update-utmp exe=/usr/lib/systemd/systemd-update-utmp hostname=? addr=? terminal=? res=success' $
Menganalisis jurnal systemd
Anda harus memiliki systemd-journal yang persisten untuk menyimpan jurnal persisten di disk jika tidak, log tidak akan bertahan saat reboot. Untuk ini, Anda dapat membuat perubahan di /etc/systemd/journald.conf atau membuat direktori sendiri dengan perintah di bawah ini:
$ sudo mkdir /var/log/journal $ sudo systemd-tmpfiles --create --prefix /var/log/journal 2>/dev/null $ sudo systemctl -s SIGUSR1 kill systemd-journald
Setelah selesai, Anda dapat me-reboot sistem secara opsional untuk menangkap lebih dari satu entri reboot di jurnal meskipun tidak diperlukan.
Gunakan perintah di bawah ini untuk membuat daftar boot yang dicatat dari jurnal:
$ journalctl --list-boots
Inilah hasilnya di server saya:
$ journalctl --list-boots -15 8a7c8034da804ebb9cb063a7553ed0bf Wed 2020-11-18 23:09:05 IST—Wed 2020-11-18 23:17:10 IST -14 7bbb9542778a4057a91b9d22fcf91735 Wed 2020-11-18 23:17:22 IST—Wed 2020-11-18 23:20:08 IST -13 f2ee8a61bf4c4f67a12e012855d8b1c3 Wed 2020-11-18 23:20:17 IST—Wed 2020-11-18 23:23:01 IST -12 1277d19a959f4c33ba944a68c5874d2a Fri 2020-12-11 10:32:44 IST—Fri 2020-12-11 10:43:39 IST -11 eb4ff97f112445888a5946d1155de1b8 Fri 2020-12-11 10:43:55 IST—Fri 2020-12-11 10:48:18 IST -10 bf46eff3f9a344d2b28a03ffbf7fff32 Fri 2020-12-11 19:04:30 IST—Fri 2020-12-11 19:31:01 IST -9 2acf08368667423c89086579f98efd82 Tue 2020-12-15 17:36:52 IST—Tue 2020-12-15 19:13:10 IST -8 b826f223a67d454b94d4413678870f08 Sat 2020-12-19 00:31:54 IST—Sat 2020-12-19 00:44:52 IST -7 011e1b29339041b0ae48bbb93fce792f Wed 2020-12-23 23:01:15 IST—Wed 2020-12-23 23:02:44 IST -6 f41f5880572e4394938c6dcb4a8b683c Mon 2020-12-28 16:54:11 IST—Mon 2020-12-28 22:54:22 IST -5 a2e638dc292a4db2b0a50dd442129c28 Tue 2020-12-29 17:02:16 IST—Tue 2020-12-29 19:39:38 IST -4 f6c738df872a48d48daee1962727cca5 Wed 2020-12-30 19:09:30 IST—Wed 2020-12-30 19:20:23 IST -3 c876e60ea371460b94e247b40270b18f Thu 2020-12-31 14:36:07 IST—Thu 2020-12-31 15:45:36 IST -2 a23c70804ec243f7868c18737f4b7e55 Sat 2021-02-13 20:09:30 IST—Sat 2021-02-13 20:10:44 IST -1 94b604a6bf75462dac8c4a4576fdc863 Sat 2021-02-13 20:10:59 IST—Sat 2021-02-13 20:23:18 IST 0 3ff7e29fa0a34878b7574b7d4d3ccfb5 Sat 2021-02-13 20:24:57 IST—Sat 2021-02-13 21:13:15 IST $
Seperti yang Anda lihat, daftar ini berlangsung beberapa sepatu bot. Untuk menganalisis lebih lanjut reboot tertentu, gunakan:
$ journalctl -b {num} -n
Di sini {num} akan menjadi indeks yang diberikan dalam perintah journalctl –list-boots di kolom pertama.
$ journalctl -b -1 -n -- Logs begin at Wed 2020-11-18 23:09:05 IST, end at Sat 2021-02-13 21:13:39 IST. -- Feb 13 20:23:18 ubuntumate20vm systemd[1]: lvm2-monitor.service: Succeeded. Feb 13 20:23:18 ubuntumate20vm systemd[1]: Stopped Monitoring of LVM2 mirrors, snapshots etc. using dmeventd or progress polling. Feb 13 20:23:18 ubuntumate20vm systemd[1]: Reached target Shutdown. Feb 13 20:23:18 ubuntumate20vm systemd[1]: Reached target Final Step. Feb 13 20:23:18 ubuntumate20vm systemd[1]: systemd-poweroff.service: Succeeded. Feb 13 20:23:18 ubuntumate20vm systemd[1]: Finished Power-Off. Feb 13 20:23:18 ubuntumate20vm systemd[1]: Reached target Power-Off. Feb 13 20:23:18 ubuntumate20vm systemd[1]: Shutting down. Feb 13 20:23:18 ubuntumate20vm systemd-shutdown[1]: Syncing filesystems and block devices. Feb 13 20:23:18 ubuntumate20vm systemd-journald[304]: Journal stopped $
Anda dapat mengamati pesan yang dicatat dalam jurnal pada keluaran di atas dan dapat menelusuri anomali jika ada.
Kesimpulan
Mungkin tidak selalu mungkin untuk menentukan penyebab reboot Linux menggunakan satu perintah atau dari satu file log. Karena itu, selalu berguna untuk mengetahui perintah dan log yang menangkap peristiwa terkait sistem dan dapat mempersingkat waktu yang diperlukan untuk menemukan akar penyebabnya.
Contoh di atas memberi Anda tempat awal untuk memulai pemecahan masalah Anda. Dengan menggunakan kombinasi alat dan log tersebut, Anda dapat yakin untuk mengetahui apa yang terjadi dan bagaimana sistem Anda melakukan boot ulang.
Selanjutnya, cari tahu beberapa perangkat lunak pemantauan ringan untuk Linux.