Як обмежити розмір свого syslog?


13

У мене на комп’ютері моєї мами працює Ubuntu 12.04 LTS. Це працює просто чудово, але раптовий системний журнал заповнюється. І заповнюючи, я маю на увазі, що я тільки що видалив розміром /var/log/syslog400 ГБ. Так - гігабайти.

Хоча я впевнений, що там була якась корисна інформація, я не впевнений, що 400 ГБ - це будь-яка інформація, яку потрібно просіяти. І що насправді дивовижно в цьому, це те, що це сталося протягом 8 годин - я бігав dfблизько полудня, а між тим часом і зараз її драйв заповнив 30% (з трохи менше 70% до 100%).

Що може бути причиною цього і як я можу це виправити? "

EDIT Схоже, usb є порушником:

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

2
Я б сказав, що замість обмеження розміру, ви повинні намагатися з'ясувати, що його заповнює. Повторних повідомлень повинно бути багато, спробуйте запустити, tail -n20 /var/log/syslogщоб переглянути останні 20 рядків.
щороку

Я спробував це перед тим, як зв'язати файл - нічого, здавалося, не повторилося, але я ще раз
погляну

Таким чином, це виглядає як проблема "demond_nscan", про яку я не знаходжу нічого в Google. nscanце програма для сканування портів, тому це може бути чиясь модифікація цього (але я просто теоретизую). Якщо це не програма, яку ви явно намагаєтеся запустити, я рекомендую спробувати знайти виконуваний файл (щось на зразок find / -iname demond_nscan) та перейменувати його / змінити його дозволи, щоб він не виконувався. (Таким чином, якщо це дійсно важливо для чогось, ви цього не втратили, і якщо це було запущено чимось іншим, ви можете помітити. Також, перевірте crontab -l?
Стів Кроон

1
demond_nscan, схоже, пов'язаний з драйверами сканування lexmark.
Вейн Вернер

Відповіді:


12

Ви повинні з'ясувати, що викликає велику кількість повідомлень, як якщо ви виправляєте цю проблему, то ви виправляєте великий файл журналу.

Однак до цього часу ви можете розмістити базу обертання колоди на одному з наведених нижче.

  • час (наприклад, обертати щодня)
  • розмір (наприклад, обертати, коли файл досягає 10 Мб)

Це вже буде налаштовано в системі за замовчуванням: /etc/logrotate.d/rsyslog

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

З цього ви бачите, що він щодня обертатиме файл / var / log / syslog та зберігатиме 7 копій повернутого файлу.

Ви можете змінити це, щоб повернути його на обмеження розміру, скажімо, на 1 Мб або зменшити кількість копій, які він зберігає.

Попередження. Це не виправить першопричину вашої проблеми , однак це дозволить придбати певний час, оскільки це зупинить файлову систему від заповнення.

  • Джерело: /etc/logrotate.d/rsyslog
  • Джерело: людина логротат

2
Це не обмежить розмір фактичного системного журналу!
abu_bua

6

Обмежте розмір логротату

Відкрийте /etc/logrotate.d/syslogконфігураційний файл

sudo nano /etc/logrotate.d/syslog

Файл виглядає що-н. подобається

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

Додайте, наприклад, size 100k в круглі дужки. Після цього він повинен виглядати так:

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

Зауважте, що це обмежує розмір файлів обертових файлів, а не власне файл syslog. Збережіть файл. Наступного разу, коли логротатна хронована робота розпочнеться, вона обмежить розмір обернених журналів.

Обмежте розмір поточного системного журналу

Щоб обмежити розмір /var/log/syslog, вам потрібно відредагувати /etc/rsyslog.d/50-default.confта встановити фіксований розмір журналу.

Додайте або змініть цей параметр, змінивши наступний рядок у /etc/rsyslog.d/50-default.conf:

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

Ось уривок з посібника rsyslog :

Вихідні каналивизначаються за допомогою директиви $ outchannel. Його синтаксис полягає в наступному: ім'я $ outchannel, ім'я файлу, максимальний розмір, ім'я розміру action-on-max-size - це ім'я вихідного каналу (а не файлу), ім'я файлу - це ім'я файлу, яке слід записувати , max-size максимально дозволений розмір та команда action-on-max-розмір, яка видається, коли буде досягнуто максимального розміру. Ця команда завжди має рівно один параметр. Бінарний - це частина дії, що відповідає максимальному розміру перед першим пробілом, його параметр - усе, що стоїть за цим простором. Зауважте, що до початку запиту повідомлення в файл запитується максимальний розмір. Тому не забудьте встановити цей ліміт досить низький, щоб будь-яке повідомлення могло відповідати. Для поточного випуску корисно встановити його на 1 кн нижче, ніж ви очікували. Максимальний розмір завжди повинен бути вказаний у байтах - немає спеціальних символів (наприклад, 1k, 1m, …) У цій точці розвитку. Майте на увазі, що $ outchannel просто визначає канал із "ім'ям". Це не активує. Для цього потрібно використовувати рядок вибору (див. Нижче). Цей рядок вибору містить назву каналу плюс знак $ перед ним. Зразок може бути:. : omfile: $ mychannel У своєму поточному вигляді вихідні канали насамперед забезпечують можливість обмеження розміру вихідного файлу. Для цього вкажіть максимальний розмір. Коли цей розмір буде досягнутий, rsyslogd виконає команду action-on-max-size, а потім знову відкриє файл та повторить спробу. Команда повинна бути чимось на зразок сценарію обертання журналу чи подібного.

Якщо команда action-on-max-size відсутня або команда не вирішила ситуацію, файл закривається і ніколи не відкривається програмою rsyslogd (за винятком, звичайно, підключення до нього). Ця логіка була інтегрована, коли ми вперше виникли серйозні проблеми з файлами розміром 2 Гб, що може призвести до демпінгу ядра rsyslogd. У таких випадках доцільніше припинити запис у один файл. Тим часом rsyslogd було зафіксовано для підтримки файлів, більших 2 Гб, але, очевидно, лише для файлових систем та версій операційної системи, які це роблять. Таким чином, все ще може бути сенс застосовувати обмеження розміру файлу 2 Гб.

Тут максимальний розмір становить 1 Мб, розмістіть цей рядок перед *.*; ...рядком

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

і змінити *.*; ...лінію на

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

Перезапустіть rsyslogd

sudo service rsyslog restart

0

У мене були ті ж проблеми з Lexmark Pro915 протягом двох тижнів. Я зробив дві речі, і це зараз прекрасно працює. Я перевстановив драйвер. (Не думайте, що це допомогло.) Я взяв розширення USB, яке я використовував, і загальну довжину зробив майже 15 ', і яка, можливо, не була повністю сумісною. Я підозрюю, що драйвер Lexmark для систем Linux може виявити поганий або погано приділений сигнал та хоче розповісти про це 10 мільярдів разів на день. Спробуйте якось поліпшити зв’язок.

Логротат та подібні рішення мені не допомогли. Kern.log та syslog разом реєстрували більше 1 ТБ на день! Logrotate може допомогти, якщо ви можете налаштувати його на кожні дванадцять хвилин.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.