Як дивитися логи Linux: огляд основних утиліт та команд
Якщо Ви зіткнулися з проблемами роботи сервера, перше, що потрібно зробити - переглянути логі Linux. У системний журнал записуються діагностичні повідомлення, що надходять від різних компонентів операційної системи, таких як ядро або служби, тому з великою ймовірністю причину збоїв буде знайдено.
Кожне повідомлення генерується внаслідок виникнення будь-якої події в операційній системі. Подією може бути зупинка служби, авторизації користувача в системі або неполадки роботи програми. Події мають певний пріоритет залежно від ступеня критичності. У Linux розрізняють такі типи подій:
- emerg - аварія, найвищий пріоритет;
- alert - тривога;
- crit - Критична подія;
- err - Помилка;
- warn - Увага;
- notice - Повідомлення;
- info - інформаційне повідомлення;
- debug - налагоджувальна інформація;
Логи Linux збираються службами rsyslog і systemd-journaldВони працюють незалежно один від одного і входять до складу більшості сучасних дистрибутивів. Розглянемо їх докладніше.
rsyslog
Журнали служби перебувають у директорії “/var/log/” як звичайних текстових файлів. Залежно від типу події повідомлення записуються в різні файли. Наприклад файл “/var/log/auth.log” містить інформацію про вхід користувачів у систему, а файл “/var/log/kern.log” записуються повідомлення ядра. У різних дистрибутивах назви файлів можуть відрізнятися, тому для точного розуміння, куди саме відбувається запис повідомлень, розглянемо файл конфігурації “/etc/rsyslog.d/50-default.conf”.
Правила описують місце зберігання балок залежно від типу повідомлення. У лівій частині рядка вказано тип повідомлення у форматі “[Джерело].[Пріоритет]”, а праворуч ім'я файлу журналу.При записі типу повідомлення можна використовувати символ “*”, що означає будь-яке значення або параметр “none”, що означає виключення зі списку. Розглянемо докладніше перші два правила.
“auth,authpriv.* /var/log/auth.log” “*.*;auth,authpriv.none -/var/log/syslog”
Перше правило означає, що всі повідомлення, прийняті від механізму авторизації, будуть записані у файл “/var/log/auth.log”. У цьому файлі будуть зареєстровані всі спроби входу користувачів до системи, як вдалі, так і не вдалі. Друге правило говорить про те, що всі повідомлення, крім тих, які пов'язані з авторизацією, будуть записані у файл “/var/log/syslog”. Саме до цих файлів доводиться звертатися найчастіше. Наступні правила визначають місце зберігання журналів ядраkern.*” та поштової служби “mail.*”
Журнали ліг можна відкрити будь-якою утилітою для перегляду тексту, наприклад less, cat, tail. Відкриємо файл “/var/log/auth.log”
less /var/log/auth.log
Кожен рядок файлу є окремим повідомленням, яке надійшло від програми або служби. Всі повідомлення, незалежно від джерела, мають єдиний формат і складаються з п'яти частин. Розглянемо їх на прикладі виділеного повідомлення на скріншоті.
- Дата та час реєстрації повідомлення - "Feb 12 06:18:33"
- Ім'я комп'ютера, з якого надійшло повідомлення - "vds"
- Ім'я програми або служби, до якої належить повідомлення - "sshd"
- Ідентифікатор процесу, що надіслав повідомлення - [653]
- Текст повідомлення - “Accepted password for mihail from 188.19.42.165 port 2849 ssh2”
Це був приклад успішного підключення через ssh. А так виглядає невдала спроба:
У цьому файлі також фіксується виконання команд із підвищеними правами.
Відкриємо файл /var/log/syslog
На скріншоті виділено повідомлення про вимкнення мережного інтерфейсу.
Для пошуку потрібної інформації у великих текстових файлах можна використовувати утиліту grep. Знайдемо всі повідомлення від служби pptpd у файлі “/var/log/syslog”
grep 'pptpd' /var/log/syslog
Під час діагностики можна використовувати утиліту tailяка виводить останні рядки у файлі. Команда “tail -f /var/log/syslog” дозволить спостерігати запис логів у реальному часі.
Служба rsyslog є дуже гнучкою, високопродуктивною і може використовуватися для збирання логів як у локальних системах, і лише на рівні підприємства. Повну документацію можна знайти на офіційному сайті https://www.rsyslog.com/
Логи Linux та їх ротація
Логи Linux записуються безперервно і розмір файлів постійно зростає. Механізм ротації забезпечує автоматичне архівування старих журналів та створення нових. Залежно від правил, обробка журналів може виконуватися щодня, щотижня, щомісяця або при досягненні певного розміру файлом. У міру створення нових архівів, старі можуть бути просто видалені або попередньо надіслані електронною поштою. Ротація виконується утилітою logrotate. Основна конфігурація знаходиться у файлі “/etc/logrotate.conf”, також обробляється вміст файлів у директорії “/etc/logrotate.d/”
Нові правила можна записувати в основний конфігураційний файл, але більш правильним буде створення окремого файлу в директорії “/etc/logrotate.d/” За замовчуванням у директорії вже міститься кілька файлів.
Розглянемо файл “/etc/logrotate.d/rsyslog”, який містить правила ротації для журналів служби rsyslog.
На початку правила вказується шлях до файлу журналу, потім у фігурних дужках перераховуються директиви.
- rotate 7 - необхідно постійно зберігати 7 файлів
- daily - щодня створюватиметься новий файл
- compress - старі файли потрібно архівувати.
На скріншоті видно, що у каталозі “/var/log/” знаходиться основний журнал “syslog” та сім архівів, що відповідає правилам ротації.
Більш детальний опис налаштування утиліти logrotate можна знайти у мануалі, виконавши команду “man logrotate”
Збір логів - journald
Служба збирання логів systemd-journald є частиною системи ініціалізації systemd. Файли журналу зберігаються у директорії “/var/log/journal/” у спеціальному форматі та можуть бути відкриті за допомогою утиліти journalctl. Формат записів такий самий як у служби rsyslog.
Команда journalctl без параметрів виводить на екран усі записи, але враховуючи, що обсяг журналу може досягати кількох гігабайт, такий спосіб перегляду не підходить для практичного застосування. Розглянемо деякі опції утиліти.
- journalctl -b - виведення записів з моменту останнього завантаження
- journalctl -S "2020-02-17 12:00" -U "2020-02-17 12:10" - виведення записів за певний період часу
- journalctl -u pptpd - виведення записів, прийнятих від певної служби
- journalctl -k - виведення повідомлень ядра
- journalctl -p err - виведення повідомлень з певним пріоритетом, в даному випадку будуть виведені помилки та вищі пріоритети(crit, alert, emerg)
- journalctl -f - виведення повідомлень у реальному часі
Для більш гнучкого пошуку опції можна поєднувати. Виведемо всі помилки служби pptpd
journalctl -u pptpd -p err
Якщо в якості аргументу вказати шлях до файлу, що виконується, утиліта виведе всі повідомлення, відправлені цим файлом. Виведемо повідомлення, надіслані файлом “/usr/bin/sudo” починаючи з 04:15 18 лютого 2020 року. Фактично буде виведено всі команди, виконані з підвищеними правами.
journalctl -S "2020-02-18 4:15" /usr/bin/sudo
Щоб дізнатися скільки місця на диску займають файли журналу, виконаємо команду
journalctl --disk-usage
Для обмеження обсягу журналу розміром 1Gb виконаємо команду
journalctl --vacuum-size=1G
Відкриття бінарних файлів
На закінчення розглянемо кілька спеціальних файлів у директорії “/var/log/”, у яких реєструються спроби входу користувачів у систему. Це бінарні файли, які можуть бути відкриті лише спеціальними утилітами.
/var/log/wtmp - містить інформацію про успішний вхід користувачів до системи, для відкриття використовується утиліта last
/var/log/btmp - у файлі реєструються всі невдалі спроби входу до системи, що відкривається командою lastb із підвищеними правами. Параметр -n визначає кількість рядків, що виводяться, починаючи з кінця файлу.
/var/log/lastlog - містить час останнього входу для кожного облікового запису, може бути відкритий однойменною утилітою lastlog
Як знайти та читати логи в Linux
Що таке логі Linux? Усі системи Linux створюють та зберігають файли логів інформації для процесів завантаження, додатків та інших подій. Ці файли можуть бути корисним ресурсом для усунення несправностей системи.
Більшість файлів логів Linux зберігаються в простому текстовому файлі ASCII і знаходяться в каталозі та підкаталозі /var/log. Логи створюються системним демоном логів Linux, syslogd чи rsyslogd.
У цьому посібнику ви дізнаєтесь, як знаходити та читати файли логів Linux, а також налаштовувати демон ведення системних логів.
Як переглядати логі Linux
1. Спочатку відкрийте термінал Linux як користувач root. Це дозволить одержати root-права.
2. Використовуйте наступну команду для перегляду папки, де знаходяться файли логів:
3. Щоб переглянути логі, введіть наступну команду:
Команда відображає всі файли логів Linux, такі як kern.log та boot.log . Ці файли містять потрібну інформацію для правильного функціонування операційної системи.
Доступ до файлів логів здійснюється за допомогою привілеїв root. За визначенням, root - це обліковий запис за промовчанням, який має доступ до всіх файлів Linux.
Використовуйте наступний приклад рядкової команди для доступу до файлу:
sudo less [log name here].log
Ця команда відображає тимчасову шкалу всієї інформації, що стосується цієї операції.
Зверніть увагу, що файли лігів зберігаються у вигляді звичайного тексту, тому їх можна переглядати за допомогою наступних стандартних команд:
- zcat - Відображає весь вміст logfile.gz
- zmore - Перегляд файлу сторінками, не розпаковуючи файли
- zgrep - Пошук усередині стисненого файлу
- grep - Знайти всі входження пошукового запиту у файлі або відфільтрувати файл логів
- tail - Виводить останні кілька рядків файлів
- head - Перегляд самого початку текстових файлів
- vim - Перегляд за допомогою текстового редактора vim
- nano - Перегляд за допомогою текстового редактора nano
Важливі Linux системи
Логи можуть багато розповісти про роботу системи. Добре розуміння кожного типу файлу допоможе розрізняти відповідні логи.
Більшість каталогів можна згрупувати в одну з чотирьох категорій:
- Системні логи (System Logs)
- Логи подій (Event Logs)
- Логи додатків (Application Logs)
- Логи обслуговування (Service Logs)
Багато з цих логів можуть бути розташовані в підкаталозі var/log.
Системні логи
Файли логів необхідні роботи Linux. Вони містять значний обсяг інформації про функціональність системи. Найбільш поширені файли логів:
- /var/log/syslog : глобальний системний журнал (можливо /var/log/messages )
- /var/log/boot.log : лог завантаження системи, де зберігається вся інформація, що стосується операцій завантаження
- /var/log/auth.log : логі аутентифікації, який зберігає всі логи аутентифікації, включаючи успішні та невдалі спроби (можливо /var/log/secure )
- /var/log/httpd/ : логи доступу та помилок Apache
- /var/log/mysqld.log : файл логів сервера бази даних MySQL
- /var/log/debug : логі налагодження, який зберігає докладні повідомлення, пов'язані з налагодженням, і корисний для усунення несправностей певних системних операцій
- /var/log/daemon.log : логі демона, який містить інформацію про події, пов'язані із запуском операції Linux
- /var/log/maillog : логи поштового сервера, де зберігається інформація, що стосується поштових серверів та архівування листів
- /var/log/kern.log : логі ядра, де зберігається інформація з ядра Linux
- /var/log/yum.log: логи команд Yum
- /var/log/dmesg : логи драйверів
- /var/log/boot.log: логи завантаження
- /var/log/cron : логі служби crond
Демон системних логів
Логування здійснюється за допомогою демона syslogd
Програми надсилають свої записи журналу до syslogd, який звертається до конфігураційного файлу /etc/syslogd.conf або /etc/syslog і при виявленні збігу записує повідомлення журналу у потрібний файл журналу. Кожен файл складається з селектора та поля введення дії. Демон syslogd також може надсилати повідомлення журналу. Це може бути корисним для налагодження. Цей файл виглядає приерно так:
Dec 19 15:12:42 backup.main.merionet.ru sbatchd[495]: sbatchd/main: ls_info() failed: LIM is down; try later; trying. Dec 19 15:14:28 system.main.merionet.ru pop-proxy[27283]: Connection from 186.115.198.84 Dec 19 15:14:30 control.main.merionet.ru pingem[271] : office.main.mer .ru не answered 42 times Dec 19 15:15:05 service.main.merionet.ru vmunix: Multiple softerrors: Seen 100Corrected Softerrors з SIMM J0201 Dec 19 15:15:16 backup.main.mer0 : (sshd) session closed 'for user trent
Логи додатків
Логи додатків зберігають інформацію, що стосується будь-якої програми, що запускається. Це може містити повідомлення про помилки, ознаки злому системи та рядок ідентифікації браузера.
Файли логів, які потрапляють у цю категорію, включають логи системи друку CUPS, лог Rootkit Hunter, HTTP-сервера Apache, логи SMB-сервера Samba і лог сервера X11.
Логи не у зручному для читання форматі
Не всі логи створені в форматі, що легко читається. Деякі призначені лише для читання системними програмами. Такі файли часто пов'язані з інформацією входу. Вони включають логи збоїв входу до системи, логи останніх входів до системи та записи входу до системи.
Існують інструменти та програмне забезпечення для читання файлів логів Linux. Вони не потрібні для читання файлів, оскільки більшість із них можна прочитати безпосередньо з терміналу Linux.
Графічні інтерфейси для перегляду файлів логів Linux
System Log Viewer - це графічний інтерфейс, який можна використовуватиме відстеження системних логів.
Інтерфейс надає кілька функцій для керування логами, включаючи відображення статистики логів. Це зручний графічний інтерфейс моніторингу логів.
Як альтернативу можна використовувати Xlogmaster, який може відстежувати значну кількість файлів логів.
Xlogmaster корисний для підвищення безпеки. Він перекладає всі дані для виділення та приховання рядків та відображає цю інформацію для виконання дій, які запитує користувач.
Як налаштувати файли логів в Ubuntu та CentOS
Почнемо з прикладу CentOS. Щоб переглянути користувачів, які зараз увійшли на сервер Linux, введіть команду who від імені користувача root:
Тут також з'являється історія входу в систему користувачів. Щоб переглянути історію входу системного адміністратора, введіть наступну команду:
Щоб переглянути інформацію про останній вхід до системи, введіть:
Виконати ротацію лога
Файли логів, наприкінці яких додані нулі, є повернутими файлами. Це означає, що імена файлів ліг були автоматично змінені в системі.
Метою ротації ліг є стиснення застарілих ліг, що займають місце. Ротацію лога можна виконати за допомогою команди logrotate. Ця команда обертає, стискає та відправляє системні логи поштою.
logrotate обробляє системи, які створюють значні обсяги файлів логів. Ця команда використовується планувальником cron та зчитує файл конфігурації logrotate /etc/logrotate.conf . Він також використовується для читання файлів у каталозі конфігурації logrotate.
Щоб увімкнути додаткові функції для logrotate, почніть з наступної команди:
var/log/log name here].logВін стискає та змінює розмір бажаного файлу логів.
Команди виконують такі дії:
- missingok - повідомляє logrotate не виводити помилку, якщо файл логів відсутній.
- notifempty - не виконує ротацію файлу логів, якщо він порожній. Зменшує розмір файлу лога за допомогою gzip
- size - гарантує, що файл логів не перевищує зазначений розмір, і повертає його інакше
- daily – змінює файли журналів за щоденним розкладом. Це також можна робити за тижневим або щомісячним розкладом.
- create - створює файл логів, у якому власник та група є користувачем root
Підсумки
Ретельне розуміння того, як переглядати та читати Linux, необхідно для усунення несправностей в системі Linux. Використання правильних команд та інструментів може спростити цей процес.
Journald
Починаючи з версії v38+, systemd має власну систему реєстрації подій, яка за умовчанням включена до дистрибутиву openSUSE 12.2+. systemd-journalctl є невід'ємною частиною systemd і не може використовуватися окремо. Журнали даного інструменту зберігаються в бінарному вигляді /var/log/journal, що виключає можливість перегляду вмісту даних файлів стандартними утилітами обробки текстових даних.При викликі інструмента без параметрів покаже весь вміст журналу аналогічного класичній системі лог-файлів syslog (/var/log/messages)
Детальний опис роботи з журналом, см (англ)
man systemd-journald man journalctl
- 1 Основні відомості
- 1.1 Ключі journalctl
- 1.2 Виведення лога у текстовий файл
- 1.3 Фільтрація за датою та часом
- 1.3.1 Приклади
- 5.1 syslog-ng
- 5.2 rsyslog
- 5.2.1 На стороні відправника повідомлень (клієнта)
- 5.2.2 На стороні приймача повідомлень (сервера)
Основні відомості
Ключі journalctl
- Якщо був крах системи, можна ввести параметр -1 і переглянути логи з попереднього запуску системи (-2 логи сеансу за два сеанси до поточного і т.д.) [1] :
- Показувати записи журналу з моменту запуску системи з розшифровкою помилок:
- Показати останні записи журналу, і продовжувати друкувати нові записи, при додаванні їх до журналу:
Знак = свідчить про введення контрольних значень, опис беремо з man.
--no-full, --full, -l - відображати всі доступні поля; -a, --all - відображати всі поля у виводі full, навіть якщо вони містять недруковані символи або занадто довгі; -e, --pager-end - відобразити лише останні повідомлення з журналу; -n, --lines= - кількість рядків, які потрібно відображати на одному екрані, за замовчуванням 10; --no-tail - відображати всі рядки доступні рядки; -r, --reverse - відображати нові події на початку списку; -o, --output= - настроює формат виведення логу; --output-fields= - поля, які потрібно виводити; -x, --catalog - додати до інформації про помилки пояснення, посилання на документацію або форуми там, де це можливо; -q, --quiet - не показувати всі інформаційні повідомлення; -m, --merge - показувати повідомлення з усіх доступних журналів; -b, --boot - показати повідомлення з моменту завантаження системи. За промовчанням використовується останнє завантаження; --list-boots - показати список збережених завантажень системи; -k, --dmesg - показує повідомлення лише з ядра.Аналог виклику команди dmesg; -t, --identifier=SYSLOG_IDENTIFIER - показати повідомлення з вибраним ідентифікатором; -u, --unit=UNIT|PATTERN - показати повідомлення від вибраного сервісу; --user-unit= - фільтрувати повідомлення від обраної сесії; -p, --priority= - фільтрувати повідомлення з їхнього пріоритету. Є вісім рівнів пріоритету, від 0 до 7; -g, --grep= - фільтрація за текстом повідомлення; -c, --cursor= - почати перегляд повідомлень із зазначеного місця; -S, --since=, -U, --until= - фільтрація за датою та часом; -F, --field= - вивести всі дані із вибраного поля; -N, --fields - вивести всі доступні поля; --system - виводити лише системні повідомлення; --user - виводити лише повідомлення користувача; -M, --machine= - Виводити повідомлення від певного контейнера; --header - виводити заголовки полів під час виведення журналу; --disk-usage – вивести загальний розмір лог файлів на диску; --list-catalog - вивести всі доступні підказки для помилок; --sync - синхронізувати всі не збережені журнали з файловою системою; --flush - перенести всі дані з каталогу /run/log/journal до /var/log/journal; --rotate - запустити ротацію логів; --no-pager - виводити інформацію з журналу без можливості перегортати сторінки; -f, --follow - виводити нові повідомлення у реальному часі, як у команді tail; --vacuum-time= - очистити логи, давністю більше зазначеного періоду; --vacuum-size= - очистити логи, щоб розмір сховища відповідав зазначеному.
Виведення лога у текстовий файл
Якщо вам потрібно вивести лог у текстовий файл (наприклад, щоб повідомити розробників про помилку), використовуйте конструкцію
'команда' > 'шлях до текстового файлу'
journalctl -b > /home/user/debug.log
Фільтрування за датою та часом
Для фільтрації за датою та часом важливі два ключі
- --since - висновок від такого моменту часу
- --until - висновок до такого моменту часу
як значення для цих ключів можуть використовуватися:
- Формат YYYY-MM-DD HH:MM:SS
journalctl --since "2017-05-05 00:01" --until "2017-05-06 01:40"
- Слова "yesterday", "today", "tomorrow", "now":
journalctl --since "yesterday" --until "2017-05-06 01:40"
— Вирази виду:
journalctl --since "10 годин тому" journalctl --since "1 хвилина тому" journalctl --since "50 хвилин тому" --until "5 хвилин тому"
Приклади
journalctl --since "20 min ago"journalctl --since "2015-07-20 17:15:00"journalctl --since "yesterday"journalctl --since "09:00" --until "now"
journalctl --since "10:00" --until "1 година тому"
Фільтрування подій по важливості
Система записує події з різними рівнями важливості, якісь події можуть бути попередженням, яке можна проігнорувати, якісь можуть бути критичними помилками. Якщо потрібно переглянути лише помилки, ігноруючи інші повідомлення, введемо команду із зазначенням коду важливості:
Для рівнів важливості прийнято такі позначення:
0: emergency (непрацездатність системи) 1: alerts (попередження, які потребують негайного втручання) 2: critical (критичний стан) 3: errors (помилки) 4: warning (попередження) 5: notice (повідомлення) 6: info (інформаційні повідомлення) 7: debug (налагоджувальні повідомлення)
Коли ви вказуєте код важливості, journalctl виведе всі повідомлення з цим кодом та вище. Наприклад, якщо ми вкажемо опцію -p 2, journalctl покаже всі повідомлення з рівнями 2, 1 та 0.
Фільтрування за іншими параметрами
- Показувати у реальному часі всі записи, незалежно від їх розміру та кодування:
journalctl /usr/lib/systemd/systemd
journalctl -u netcfg
- Усі повідомлення процесів, запущених від імені конкретного користувача:
$ journalctl --user -u dbus
Журнал
- Журнал зберігається у двійковому форматі, тому в оточенні, де не встановлено systemd, його логи можна переглянути за допомогою команди strings:
strings /mnt/arch/var/log/journal/af4967d77fba44c6b093d0e9862f6ddd/system.journal | grep -i повідомлення- Якщо ж є файл журналу, наприклад, з іншого комп'ютера і systemd встановлений (має бути достатньо пакета journalctl з Sisyphus), то подивитися його вміст простіше:
journalctl -D /mnt/arch/var/log/journal/af4967d77fba44c6b093d0e9862f6ddd
journalctl --file /mnt/arch/var/log/journal/af4967d77fba44c6b093d0e9862f6ddd/system.journal
Нещодавні події
- За промовчанням на консоль виводиться інформація про останні 10 подій. З опцією -n можна вказати необхідну кількість подій:
Аналіз етапу завантаження
Для аналізу етапу ініціалізації системи використовується утиліта systemd-analyze. Для встановлення робимо від root:
apt-get install systemd-analyze
Виявляємо найповільніші процеси (від користувача):
systemd-analyze blame
Виводимо графік завантаження процесів у векторний малюнок:
systemd-analyze plot > file.svg
Основні налаштування
Файл налаштування знаходиться в /etc/systemd/journald.conf і складається з наступних секцій:
- Storage= Вказує, де зберігати журнал. Доступні такі параметри:
- volatile Журнал зберігається у оперативної пам'яті, тобто. у каталозі /run/log/journal.
- persistent Дані зберігаються диску, тобто. у каталозі /var/log/journal
- auto використовується за умовчанням
- none Журнал не ведеться
- Compress= Приймає значення "yes" чи "no". Якщо увімкнено (за замовчуванням) повідомлення перед записом до журналу, стискатимуться.
- Seal= Приймає значення "yes" чи "no". Якщо увімкнено (за замовчуванням) буде увімкнено захист Forward Secure Sealing (FSS), який дозволяє накладати криптографічні відбитки на журнал системних логів.
- SplitMode= Визначає доступ до журналу користувачів. Доступні такі параметри:
- uid Всі користувачі мають доступ до читання системного журналу. Використовується за промовчанням.
- login Кожен користувач може читати лише повідомлення, які стосуються його сеансу.
- none Користувачі не мають доступу до системного журналу.
- SyncIntervalSec= Таймаут, після якого відбувається синхронізація та запис журналу на диск.Відноситься лише до рівнів ERR, WARNING, NOTICE, INFO, DEBUG. Повідомлення рівня CRIT, ALERT, EMERG записуються одразу на диск.
- RateLimitInterval= і RateLimitBurst= Налаштування обмеження швидкості створення повідомлень для кожної служби. Якщо в інтервалі часу, що визначається RateLimitInterval=більше повідомлень, ніж зазначено в RateLimitBurst= реєструються службою, всі подальші повідомлення в інтервалі відкидаються, доки інтервал не закінчиться. При цьому генерується повідомлення про кількість відкинутих повідомлень. За промовчанням 1000 повідомлень за 30 секунд. Одиниці виміру: "s", "min", "h", "ms", "us". Щоб вимкнути обмеження швидкості, встановіть значення 0.
- MaxRetentionSec= Максимальний час зберігання записів журналу. Одиниці виміру: year, month, week, day, h або m
- MaxFileSec= Максимальний час зберігання записів в одному файлі журналу, після якого він переводиться до наступного.
- ForwardToSyslog=, ForwardToKMsg=, ForwardToConsole=, ForwardToWall= Визначають куди надсилати повідомлення: до традиційного системного журналу Syslogв буфер журналу ядра (kmsg), на системну консоль, або на стіну, щоб було видно всім зареєстрованим користувачам. Ці налаштування приймають логічні аргументи. Якщо переадресація на Syslog включений, але Syslog демон не працює, відповідний параметр не має жодного ефекту. За замовчуванням лише стіна включена. Ці параметри можна перевизначити під час завантаження з параметрами командного рядка ядра systemd.journald.forward_to_syslog =, systemd.journald.forward_to_kmsg =, systemd.journald.forward_to_console = і systemd.journald.forward_to_wall =. При пересиланні в консоль повинен бути встановлений TTYPath =, як описано нижче.
- TTYPath= Призначає консоль TTY, щоб вивести повідомлення, якщо встановлено параметр ForwardToConsole=yes. За замовчуванням використовується /dev/console. Для того щоб вивести на 12 консоль, встановлюємо TTYPath=/dev/tty12. Для того щоб вивести на послідовний порт, встановлюємо TTYPath=/dev/ttySX, де X номер com-порту.
- MaxLevelStore=, MaxLevelSyslog=, MaxLevelKMsg=, MaxLevelConsole=, MaxLevelWall= Визначає максимальний рівень повідомлень, який зберігається в журнал, виводиться на традиційний системний журнал Syslog, буфер журналу ядра (kmsg), консоль чи стіну. Значення: emerg, alert, crit, err, warning, notice, info, debug або цифри від 0 до 7 (відповідають рівням).
Управління логуванням
Згодом обсяг логів зростає, і вони посідають все більше місця на жорсткому диску. Дізнатися обсяг наявних на даний момент логів можна за допомогою команди:
journalctl --disk-usage
Налаштування ротації логів здійснюється за допомогою опцій −−vacuum-size та −−vacuum-time. Перша з них встановлює гранично допустимий розмір для логів, що зберігаються на диску (у нашому прикладі — 1 ГБ):
journalctl --vacuum-size=1GЯк тільки обсяг логів перевищить зазначену цифру, зайві файли автоматично видаляються. Аналогічно працює опція −−vacuum-time. Вона встановлює для логів термін зберігання, після якого вони будуть автоматично видалені:
journalctl --vacuum-time=1years- Налаштування ротації у конфігураційному файлі. Налаштування ротації логів можна також прописати в конфігураційному файлі /еtc/systemd/journald.conf, який включає такі параметри:
- SystemMaxUse= - Максимальний обсяг, який логи можуть займати на диску;
- SystemKeepFree= - Обсяг вільного місця, яке повинно залишатися на диску після збереження логів;
- SystemMaxFileSize= - Обсяг файлу лога, після досягнення якого він повинен бути видалений з диска;
- RuntimeMaxUse= - Максимальний обсяг, який логи можуть займати у файловій системі /run;
- RuntimeKeepFree= - Об'єм вільного місця, яке має залишатися у файловій системі /run після збереження логів;
- RuntimeMaxFileSize= - Обсяг файлу лога, після досягнення якого він повинен бути видалений з файлової системи /run.
Одиниці виміру: K, M, G, T, P, E.
Повернення syslog
Допускається або паралельне ведення журналів у Syslog, або повне перемикання на нього. За це відповідають параметри Storage та ForwardToSyslog у /etc/systemd/journald.conf:
[Journal] Storage=none ForwardToSyslog=yes
Після цього треба встановити logrotate і один із варіантів syslog.
syslog-ng
Починаючи зі складання 3.24.1-alt1, слід встановити пакет syslog-ng-journal:
altbug:36454.rsyslog
Встановити пакет rsyslog-classic.
На стороні відправника повідомлень (клієнта)
Створити файл /etc/rsyslog.d/all.conf, в ньому прописати протокол (@@-tcp, @-udp) та адресу доставки повідомлень
На стороні приймача повідомлень (сервера)
Розкоментувати у /etc/rsyslog.d/00_common.conf рядки
#для udp module(load="imudp") input(type="imudp" port="514") #для tcp module(load="imtcp") input(type="imtcp" port="514")
Створити шаблон для логів /etc/rsyslog.d/myrules.conf
$template remote-incoming-logs,"/var/log/%HOSTNAME/%PROGRAMNAME.log" *.* ?remote-incoming-logs
Запис у журнал із скрипту
echo "MESSAGE" | systemd-cat -t myunit
де myunit - Ім'я юніта.
Посилання
