Bagaimana cara membatasi ukuran syslog saya?

13

Komputer ibuku menjalankan Ubuntu 12,04 LTS. Sudah berfungsi dengan baik tetapi tiba-tiba syslog telah terisi. Dan dengan mengisi, maksud saya, saya baru saja menghapus /var/log/syslogukuran 400GB. Ya - Gigabytes.

Meskipun saya yakin ada beberapa informasi yang berguna di sana, saya tidak yakin bahwa 400GB adalah segala jenis informasi yang harus disaring. Dan yang sangat menakjubkan tentang hal itu adalah bahwa hal itu terjadi dalam jangka waktu 8 jam - saya telah berlari dfsekitar siang hari, dan antara saat itu dan sekarang drive-nya terisi 30% (dari hanya di bawah 70% hingga 100%).

Apa yang menyebabkan ini dan bagaimana saya memperbaikinya? `

EDIT Sepertinya usb adalah pelaku:

Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157829] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157836] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157842] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157849] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157857] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157863] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157870] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157877] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157884] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Sep  8 08:52:10 pamela-desktop kernel: [ 6198.157891] usb 1-3: usbfs: process 1500 (demond_nscan) did not claim interface 3 before use
Wayne Werner
sumber
2
Saya akan mengatakan bahwa alih-alih membatasi ukuran, Anda harus mencoba mencari tahu apa yang mengisinya. Seharusnya ada banyak pesan yang diulang, coba jalankan tail -n20 /var/log/sysloguntuk melihat 20 baris terakhir.
mikewhthing
Saya sudah mencobanya sebelum menyembunyikan file - sepertinya tidak ada yang diulang, tapi saya akan memeriksanya lagi
Wayne Werner
Jadi ini sepertinya masalahnya adalah "demond_nscan", yang tidak saya temukan di google. nscanadalah aplikasi pemindaian port, jadi ini mungkin modifikasi seseorang (tapi saya hanya berteori). Jika ini bukan aplikasi yang Anda coba jalankan secara eksplisit, saya sarankan mencoba untuk menemukan yang dapat dieksekusi (semacamnya find / -iname demond_nscan), dan mengganti namanya / mengubah izinnya sehingga tidak dapat dieksekusi. (Dengan cara ini, jika itu sebenarnya penting untuk sesuatu, Anda belum kehilangannya, dan jika itu diluncurkan oleh sesuatu yang lain, Anda mungkin memperhatikan. Juga, periksa crontab -l?
Steve Kroon
1
demond_nscan sepertinya terkait dengan driver pemindaian lexmark.
Wayne Werner

Jawaban:

12

Anda harus mencari tahu apa yang menyebabkan besarnya jumlah pesan, seolah-olah Anda memperbaiki masalah ini maka Anda memperbaiki file log yang besar.

Namun, sampai saat itu Anda dapat memasukkan basis rotasi log pada salah satu di bawah ini.

  • waktu (mis. putar setiap hari)
  • size (mis. rotate saat file mencapai 10mb)

Ini sudah akan diatur pada sistem secara default: /etc/logrotate.d/rsyslog

 /var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
            reload rsyslog >/dev/null 2>&1 || true
    endscript
 }

Dari sini Anda dapat melihat bahwa itu akan memutar file he / var / log / syslog setiap hari dan menyimpan 7 salinan dari file yang diputar.

Anda dapat mengubah ini untuk diputar pada batas ukuran, katakan 1mb atau kurangi jumlah salinan yang disimpannya.

Peringatan: Ini tidak akan memperbaiki akar penyebab masalah Anda , namun itu akan memberi Anda waktu karena akan menghentikan sistem file dari pengisian.

  • Sumber: /etc/logrotate.d/rsyslog
  • Sumber: man logrotate
dannyla
sumber
2
Ini tidak akan membatasi ukuran syslog yang sebenarnya!
abu_bua
6

Batasi ukuran logrotate

Buka /etc/logrotate.d/syslogfile konfigurasi

sudo nano /etc/logrotate.d/syslog

File terlihat sth. Suka

/var/log/syslog
{
    rotate 7
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}
....
...

Tambahkan mis size 100k dalam kurung. Setelah itu akan terlihat seperti:

/var/log/syslog
{
    rotate 7
    size 100k
    daily
    missingok
    notifempty
    delaycompress
    compress
    postrotate
        /usr/lib/rsyslog/rsyslog-rotate
    endscript
}

Perhatikan, bahwa ini membatasi ukuran file dari file yang diputar, dan bukan file syslog yang sebenarnya. Simpan file. Kali berikutnya tugas chron logrotate dimulai, itu akan membatasi ukuran log yang diputar.

Batasi ukuran syslog saat ini

Untuk membatasi ukuran /var/log/syslog, Anda harus mengedit /etc/rsyslog.d/50-default.conf, dan mengatur ukuran log tetap.

Tambahkan atau modifikasi pengaturan ini, dengan mengubah baris berikut di /etc/rsyslog.d/50-default.conf:

.*;auth,authpriv.none       -/var/log/syslog

Berikut petikan rsyslog manual :

Saluran keluarandidefinisikan melalui arahan $ outchannel. Sintaksnya adalah sebagai berikut: $ nama outchannel, nama file, ukuran max, nama action-on-max-size adalah nama saluran output (bukan file), nama file adalah nama file yang akan ditulis untuk , max-size ukuran maksimum yang diizinkan dan action-on-max-size perintah yang akan dikeluarkan ketika ukuran max tercapai. Perintah ini selalu memiliki tepat satu parameter. Biner adalah bagian dari action-on-max-size sebelum spasi pertama, parameternya adalah segalanya di belakang spasi itu. Harap dicatat bahwa ukuran-maksimum ditanyai SEBELUM menulis pesan log ke file. Jadi pastikan untuk menetapkan batas ini cukup rendah sehingga pesan apa pun mungkin cocok. Untuk rilis saat ini, pengaturannya 1k lebih rendah dari yang Anda harapkan sangat membantu. Ukuran maksimal harus selalu ditentukan dalam byte - tidak ada simbol khusus (seperti 1k, 1m, ...) pada titik pengembangan ini. Perlu diingat bahwa $ outchannel hanya mendefinisikan saluran dengan "nama". Itu tidak mengaktifkannya. Untuk melakukannya, Anda harus menggunakan garis pemilih (lihat di bawah). Baris pemilih itu termasuk nama saluran ditambah tanda $ di depannya. Sampel mungkin:. : omfile: $ mychannel Dalam bentuknya saat ini, saluran keluaran terutama menyediakan kemampuan untuk membatasi ukuran file keluaran. Untuk melakukannya, tentukan ukuran maksimum. Ketika ukuran ini tercapai, rsyslogd akan menjalankan perintah action-on-max-size dan kemudian membuka kembali file dan coba lagi. Perintah tersebut harus berupa skrip rotasi log atau yang serupa.

Jika tidak ada perintah action-on-max-size atau perintah tidak menyelesaikan situasi, file ditutup dan tidak pernah dibuka kembali oleh rsyslogd (kecuali, tentu saja, dengan men-hupnya). Logika ini terintegrasi ketika kami pertama kali mengalami masalah parah dengan file yang lebih besar 2gb, yang dapat menyebabkan rsyslogd dumping core. Dalam kasus seperti itu, lebih tepat untuk berhenti menulis ke satu file. Sementara itu, rsyslogd telah diperbaiki untuk mendukung file 2gb lebih besar, tetapi jelas hanya pada sistem file dan versi sistem operasi yang melakukannya. Jadi masih masuk akal untuk memberlakukan batas ukuran file 2gb.

Di sini ukuran maksimalnya adalah 1MB, tempatkan baris ini sebelum *.*; ...baris

$outchannel mysyslog,/var/log/syslog,1048576

dan ubah *.*; ...baris menjadi

*.*;auth,authpriv.none  :omfile:$mysyslog

Mulai ulang rsyslogd

sudo service rsyslog restart
abu_bua
sumber
0

Saya memiliki masalah yang sama dengan Lexmark Pro915 selama dua minggu. Saya melakukan dua hal, dan sekarang berfungsi dengan baik. Saya menginstal ulang driver. (Jangan pikir ini yang membantu.) Saya mengambil ekstensi USB yang saya gunakan yang membuat total panjangnya hampir 15 'panjang dan yang mungkin tidak sepenuhnya kompatibel. Saya menduga bahwa driver Lexmark untuk sistem Linux mungkin mendeteksi sinyal yang buruk, atau kurang tepat waktu, dan ingin memberi tahu Anda tentang hal itu 10 miliar kali sehari. Coba perbaiki koneksi Anda entah bagaimana.

Logrotate dan solusi serupa tidak membantu saya. Kern.log dan syslog bersama-sama mencatat lebih dari 1 TB sehari! Logrotate mungkin membantu jika Anda dapat mengaturnya agar berjalan setiap dua belas menit.

Dale F.
sumber