Senario: Pemantauan anda memberi amaran bahawa penggunaan cakera pada /var/log telah melebihi 90%. Log aplikasi gagal ditulis, dan perkhidmatan kritikal mula ranap. Ini adalah insiden pengeluaran biasa yang memerlukan tindakan segera tetapi berhati-hati.
Gejala: - df -h menunjukkan /var/log pada penggunaan 100%. - Ralat aplikasi: 'Tiada ruang pada peranti' dalam log. - Logrotate gagal dengan ralat cakera penuh. - Perkhidmatan seperti rsyslog atau journald berhenti berfungsi.
Diagnosis:
1. Periksa penggunaan cakera: df -h /var/log
2. Kenal pasti fail besar: du -sh /var/log/* | sort -rh | head -10
3. Periksa fail yang dipadam tetapi masih dibuka: lsof | grep '(deleted)' – fail ini masih menggunakan ruang sehingga deskriptor fail ditutup.
4. Periksa status logrotate: cat /var/lib/logrotate/status
5. Untuk jurnal systemd: journalctl --disk-usage
Arahan dan Langkah Pemulihan:
1. Potong selamat fail log besar yang tidak ditulis secara aktif. Contoh: truncate -s 0 /var/log/large-old.log
2. Untuk fail yang dibuka, gunakan > /proc/<PID>/fd/<N> (sangat berhati-hati, pastikan fail itu adalah fail log).
3. Paksa logrotate: logrotate -f /etc/logrotate.conf
4. Bersihkan log yang telah diputar lama: find /var/log -name '*.gz' -mtime +30 -delete
5. Jika menggunakan journald, kurangkan pengekalan: journalctl --vacuum-size=500M
6. Mulakan semula perkhidmatan log: systemctl restart rsyslog atau systemctl restart systemd-journald
Kawalan Risiko: - Jangan sekali-kali memadam fail log yang masih dibuka; sentiasa potong atau gunakan copytruncate dalam logrotate. - Sebelum pembersihan, ambil snapshot sistem fail jika boleh. - Uji konfigurasi logrotate pada sistem bukan pengeluaran terlebih dahulu. - Pantau ruang cakera selepas pembersihan untuk memastikan ia tidak diisi semula dengan cepat.
Gulung Balik: - Jika perkhidmatan gagal selepas pemotongan, mulakan semula perkhidmatan untuk membuka semula log. - Jika logrotate salah konfigurasi, pulihkan konfigurasi asal dari sandaran dan jalankan semula logrotate.
Pengesahan:
- Periksa penggunaan cakera: df -h /var/log
- Sahkan kesihatan perkhidmatan: systemctl status <service> untuk perkhidmatan yang terjejas.
- Sahkan penulisan log: tail -f /var/log/syslog
Bila Menghantar Tiket OpsGlobal: - Jika punca masalah tidak jelas (contohnya, log diisi lebih cepat daripada jangkaan). - Jika ruang cakera habis pada partition bukan log. - Jika anda memerlukan bantuan menala dasar logrotate atau menetapkan ambang pemantauan. - Jika insiden berulang walaupun pembersihan, menunjukkan isu sistemik.
Senario Penggunaan
Sesuai untuk pasukan yang menyelesaikan isu DevOps dan memerlukan aliran kerja yang jelas.
Latar Belakang Masalah
Panduan langkah demi langkah untuk SRE menyelesaikan masalah kehabisan ruang cakera pada /var/log, termasuk pembersihan log yang selamat, mitigasi risiko, dan masa untuk meningkatkan.
Langkah Penyelesaian
Sahkan impak dan perubahan terkini, kumpul log, konfigurasi dan metrik, kemudian baiki mengikut risiko.
Contoh Arahan
Gantikan contoh dengan nama sumber sebenar dan simpan kata laluan, token atau kunci dalam pembolehubah persekitaran.
Risiko
Sebelum operasi produksi, semak sandaran, akses, tetingkap perubahan dan pelan rollback.
Pelan Rollback
Simpan konfigurasi dan versi asal; rollback konfigurasi, imej atau perubahan pangkalan data jika metrik tidak normal.
Senarai Serahan
Rekod punca isu, arahan penting, langkah pembaikan, hasil pengesahan dan cadangan susulan.
Perlu bantuan isu teknikal serupa?
Jika pelayan, Kubernetes, Docker, CI/CD, pangkalan data atau pemantauan anda bermasalah, hantar log dan konfigurasi untuk diagnosis jauh.