bolt Valebyte VPS від $4/міс — NVMe, запуск за 60 секунд.

Отримати VPS arrow_forward

15 найкорисніших утиліт для роботи з системними журналами

calendar_month September 30, 2024 schedule 10 хв. читання visibility 792 переглядів
person
Valebyte Team
15 найкорисніших утиліт для роботи з системними журналами
summarize

TL;DR

  • Логи — основне джерело даних для діагностики збоїв, моніторингу навантаження та виявлення загроз безпеці.
  • Утиліта journalctl дозволяє швидко фільтрувати бінарні логи systemd за часом, сервісом або PID процесу.
  • Аналіз історичних журналів допомагає передбачати потреби в ресурсах і планувати масштабування.
  • Ефективна робота з логами вимагає поєднання базових CLI-утиліт і систем централізованого аналізу.

У світі VPS, хостингу та серверної інфраструктури системні журнали — це не просто файли з текстом, це безцінне джерело інформації про стан вашої системи, її продуктивність, безпеку та потенційні проблеми. Ефективна робота з ними — один із наріжних каменів професійного системного адміністрування. Саме тому ми, у Valebyte, підготували для вас добірку з 15 найкорисніших утиліт, які допоможуть вам не лише переглядати логи, але й аналізувати їх, керувати ними, автоматизувати процеси та оперативно реагувати на інциденти. Від базових команд до потужних централізованих рішень — цей арсенал інструментів дозволить вам тримати руку на пульсі ваших серверів.

Навіщо системному адміністратору майстерність роботи з логами?

A system administrator expertly analyzing digital log data on a holographic interface in a server room.

Перш ніж ми поринемо у світ утиліт, давайте коротко зупинимося на тому, чому логи такі важливі для кожного сисадміна:

  • Діагностика та усунення несправностей: Логи — це перше місце, куди ви зазирнете при виникненні будь-якої проблеми, будь то падіння сервісу, помилка застосунку чи мережева проблема.
  • Моніторинг продуктивності: Аналіз логів може виявити "вузькі місця", аномалії у навантаженні або повільні запити.
  • Безпека: Спроби несанкціонованого доступу, помилки автентифікації, незвичайна активність — все це залишається в логах. Регулярний аудит логів критично важливий для захисту вашої інфраструктури.
  • Аудит і відповідність: Багато стандартів безпеки та регуляторних вимог зобов'язують організації вести та зберігати логи для аудиту.
  • Планування ресурсів: Аналізуючи історичні дані з логів, можна передбачати майбутні потреби в ресурсах і планувати масштабування.

Тепер перейдемо до наших інструментів.

Основні інструменти для перегляду та аналізу локальних логів

1. journalctl

Якщо ви працюєте з сучасними дистрибутивами Linux, які використовують systemd (а це більшість з них), `journalctl` — ваш найкращий друг. Це основна утиліта для перегляду, фільтрації та аналізу структурованих журналів systemd journal. Вона збирає логи з різних джерел: ядра, initrd, демонів, системних застосунків і стандартного виводу. На відміну від традиційних syslog-файлів, journald зберігає логи в бінарному форматі, що дозволяє ефективно їх індексувати та фільтрувати.

Чому це корисно:

  • Єдине джерело для всіх системних повідомлень.
  • Потужні можливості фільтрації за сервісом, часом, пріоритетом, PID і т.д.
  • Перегляд логів з попередніх завантажень (persistent journal).

Приклади використання:

# Подивитися всі логи
journalctl

# Подивитися логи конкретного сервісу (наприклад, nginx)
journalctl -u nginx.service

# Подивитися останні 100 рядків логів в реальному часі (як tail -f)
journalctl -f -n 100

# Показати логи за останні 2 години
journalctl --since "2 hours ago"

# Показати логи з помилками
journalctl -p err

Pro Tip: Для зручності читання довгих логів використовуйте `journalctl | less` або `journalctl -e` для переходу в кінець виводу.

2. systemd-analyze

Ця утиліта не зовсім для "логів" в традиційному сенсі, але вона тісно пов'язана з systemd і дозволяє аналізувати процес завантаження системи, що вкрай корисно для діагностики проблем з повільним завантаженням. Вона надає інформацію про час, витрачений на кожен етап завантаження, і про те, які юніти (сервіси) споживають найбільше часу.

Чому це корисно:

  • Оптимізація часу завантаження сервера.
  • Виявлення "важких" сервісів, що сповільнюють старт.

Приклади використання:

# Показати загальний час завантаження
systemd-analyze

# Показати час, витрачений кожним юнітом
systemd-analyze blame

# Візуалізація процесу завантаження в SVG
systemd-analyze plot > boot.svg

3. grep

Хоча `grep` не є спеціалізованою утилітою для роботи з журналами, це фундаментальний інструмент командного рядка, який кожен сисадмін використовує щодня, в тому числі і для фільтрації текстових лог-файлів. Він дозволяє шукати рядки, що відповідають заданому шаблону (регулярному виразу), в одному або декількох файлах.

Чому це корисно:

  • Швидкий пошук конкретних помилок або подій у великих текстових логах.
  • Гнучкість завдяки підтримці регулярних виразів.
  • Незамінний для роботи з традиційними syslog-файлами або виводом `journalctl`.

Приклади використання:

# Пошук слова "error" в файлі /var/log/nginx/error.log
grep "error" /var/log/nginx/error.log

# Пошук всіх IP-адрес, які намагалися авторизуватися через SSH (в файлах syslog/auth.log)
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr

# Пошук "critical" або "warning" у виводі journalctl
journalctl -u myapp.service | grep -iE "critical|warning"

4. tail

Ще один незамінний інструмент для роботи з логами, особливо коли потрібно стежити за ними в реальному часі. `tail` виводить останні рядки файлу. Його найпопулярніша опція `-f` (follow) дозволяє відстежувати додавання нових рядків у файл, що ідеально підходить для моніторингу активності в логах "на льоту".

Чому це корисно:

  • Моніторинг логів в реальному часі при налагодженні або після внесення змін.
  • Швидкий перегляд останніх записів без завантаження всього файлу.

Приклади використання:

# Показати останні 10 рядків файлу
tail /var/log/syslog

# Відстежувати зміни в файлі в реальному часі
tail -f /var/log/nginx/access.log

# Відстежувати зміни в декількох файлах одночасно
tail -f /var/log/nginx/access.log /var/log/nginx/error.log

5. jq

У сучасному світі багато застосунків генерують логи в форматі JSON. `jq` — це легковагий і потужний парсер командного рядка для JSON. Якщо ви витягуєте структуровані дані з логів (наприклад, з `journalctl -o json` або з логів застосунків, які використовують JSON), `jq` стане вашим незамінним помічником для фільтрації, перетворення та агрегації цих даних.

Чому це корисно:

  • Ефективна робота зі структурованими JSON-логами.
  • Витягування конкретних полів, фільтрація об'єктів.

Приклади використання:

# Вивести всі логи journalctl в форматі JSON, потім витягти поля MESSAGE і _HOSTNAME
journalctl -o json | jq '.MESSAGE, ._HOSTNAME'
# Витягти тільки повідомлення рівня "error" з JSON-логу cat app.json.log | jq 'select(.level == "error")'

6. lnav

lnav (Log File Navigator) — це інтерактивний переглядач логів з відкритим вихідним кодом, який автоматично визначає формати логів (syslog, Apache, Nginx і т.д.), підсвічує синтаксис, фільтрує, сортує і навіть дозволяє виконувати SQL-запити до даних логів. Це значно спрощує аналіз великих і складних лог-файлів.

Потрібен надійний хостинг для ваших лог-утиліт?

Розмістіть свої незамінні інструменти аналізу логів на наших VPS-планах. Отримайте стабільність і продуктивність, необхідні для безперебійного моніторингу. — from €4.49/mo.

Вибрати VPS-план →

Чому це корисно:

  • Автоматичне визначення і підсвічування синтаксису логів.
  • Інтерактивна фільтрація і пошук.
  • Можливість виконання SQL-запитів до логів для глибокого аналізу.

Приклади використання:

# Відкрити файл лога
lnav /var/log/syslog

# Відкрити всі файли логів в директорії
lnav /var/log/nginx/

# Всередині lnav, натиснути ':' і ввести SQL-запит
:select c_ip, c_request_time from access_log where c_status = 500

Управління та ротація логів

7. logrotate

logrotate — це стандартна утиліта в Linux для управління журнальними файлами, їх ротації, стиснення і видалення. Без неї логи швидко заповнять дисковий простір. Вона дозволяє налаштувати правила для різних лог-файлів: як часто ротувати (щоденно, щотижнево, щомісячно), скільки старих логів зберігати, чи стискати їх, і які дії виконувати після ротації (наприклад, перезапуск сервісу).

Чому це корисно:

  • Запобігання переповненню диска логами.
  • Зручне управління життєвим циклом логів.
  • Автоматичне стиснення старих логів для економії місця.

Приклад конфігурації (фрагмент з `/etc/logrotate.d/nginx`):

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 www-data adm
    sharedscripts
    postrotate
        if [ -f /var/run/nginx.pid ]; then
            kill -USR1 `cat /var/run/nginx.pid`
        fi
    endscript
}

Цей конфіг для Nginx ротує логи щоденно, зберігає 14 старих копій, стискає їх і після ротації відправляє сигнал Nginx для перевідкриття лог-файлів.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Централізований збір і обробка логів

8. rsyslog

rsyslog — це потужний і високопродуктивний демон для збору, обробки і передачі логів. Він є стандартною реалізацією syslog у багатьох дистрибутивах Linux. rsyslog може приймати логи від різних джерел (локальні програми, мережеві пристрої), фільтрувати їх, перетворювати і відправляти в різні призначення (файли, бази даних, інші syslog-сервери).

Чому це корисно:

  • Централізований збір логів з безлічі серверів.
  • Гнучка фільтрація і маршрутизація логів.
  • Підтримка різних протоколів (UDP, TCP, RELP).

Приклад конфігурації (відправка логів на віддалений сервер):

# Відправляти всі логи на віддалений сервер
*.* @192.168.1.100:514

# Використовувати TCP для надійності
*.* @@192.168.1.100:514

9. syslog-ng

syslog-ng — ще один потужний і гнучкий інструмент для збору, обробки і передачі логів, який часто розглядається як альтернатива rsyslog. Він пропонує розширені можливості фільтрації, парсингу і маршрутизації, підтримку різних джерел і призначень, включаючи бази даних, Kafka, Elasticsearch та інші. Його конфігураційна мова часто вважається більш інтуїтивною.

Чому це корисно:

  • Розширені можливості парсингу і перетворення логів (наприклад, для структурованих даних).
  • Висока продуктивність і надійність.
  • Широкий спектр підтримуваних джерел і призначень.

Приклад конфігурації (відправка логів на віддалений сервер):

source s_local {
    system();
    internal();
};

destination d_remote {
    syslog("192.168.1.100" port(514) transport("tcp"));
};

log {
    source(s_local);
    destination(d_remote);
};

10. syslog-ng-loggen

Ця утиліта — частина пакету syslog-ng, але заслуговує на окрему згадку. loggen призначений для генерації тестових логів, що вкрай корисно для тестування і налагодження вашої системи централізованого журналювання. Ви можете імітувати різні типи подій, обсяг трафіку і навантаження, щоб переконатися, що ваша інфраструктура логів працює як треба.

Чому це корисно:

  • Тестування продуктивності і надійності системи збору логів.
  • Налагодження правил фільтрації і парсингу.
  • Створення контрольованого навантаження для стрес-тестування.

Приклади використання:

# Відправити 1000 тестових повідомлень на localhost:514 (UDP)
syslog-ng-loggen -i 1000 -P 514

# Відправити повідомлення з певним тегом і змістом
syslog-ng-loggen -p 514 -H "myhost" -t "test_app" -M "This is a test message from loggen."

Моніторинг і оповіщення

11. logwatch

logwatch — це скрипт, який аналізує системні логи і генерує звіти про важливі події і зміни. Він зазвичай запускається за розкладом (наприклад, щоденно через cron) і відправляє зведений звіт на електронну пошту адміністратора. Звіт включає інформацію про безпеку, помилки, активність користувачів, використання диска і багато іншого.

Чому це корисно:

  • Автоматизований щоденний огляд стану системи.
  • Виявлення потенційних проблем або аномалій без ручного перегляду логів.
  • Зручне отримання інформації про ключові події.

Приклад використання:

# Запустити logwatch вручну і вивести звіт на екран
logwatch --output stdout --format text --range "yesterday"

# Приклад отримання звіту на email (налаштовується в /etc/logwatch/conf/logwatch.conf)
# Output = mail
# MailTo = [email protected]

12. swatch

swatch (Simple Watcher) — це утиліта для моніторингу логів у реальному часі. Вона дозволяє задавати правила (регулярні вирази) для пошуку певних шаблонів у логах і виконувати дії при їх виявленні. Це може бути відправлення повідомлення, запуск скрипта, запис в інший лог або навіть блокування IP-адреси.

Чому це корисно:

  • Миттєве реагування на критичні події в логах.
  • Автоматизація дій при виявленні проблем.
  • Гнучке налаштування правил моніторингу.

Приклад конфігурації (`.swatchrc`):

# Відправити листа при виявленні "Failed password"
watchfor /Failed password for invalid user/
    mail [email protected],subject=SSH Brute-Force Alert

Комплексні платформи для управління логами

13. Logstash

Logstash є частиною стеку ELK (Elasticsearch, Logstash, Kibana) і являє собою потужний інструмент для збору, обробки та збагачення логів з різних джерел. Він може парсити, фільтрувати, перетворювати і відправляти дані в Elasticsearch для індексації, а потім візуалізувати їх за допомогою Kibana. Це універсальний конвеєр даних для логів та інших подій.

Чому це корисно:

  • Централізований збір і обробка величезних обсягів логів.
  • Гнучка обробка даних за допомогою плагінів (фільтри, кодеки, вводи/виводи).
  • Підготовка даних для аналітики і візуалізації.

Приклад конфігурації (фрагмент Logstash input/filter/output):

input {
  file {
    path => "/var/log/nginx/access.log"
    start_position => "beginning"
  }
}
filter {
  grok {
    match => { "message" => "%{COMBINEDAPACHELOG}" }
  }
  date {
    match => [ "timestamp", "dd/MMM/yyyy:HH:mm:ss Z" ]
  }
}
output {
  elasticsearch {
    hosts => ["localhost:9200"]
  }
}

14. Graylog

Graylog — це ще одне комплексне рішення для централізованого збору, зберігання, індексації та аналізу логів. Він надає зручний веб-інтерфейс для пошуку, фільтрації, створення дашбордів і оповіщень. На відміну від ELK, Graylog являє собою готовий "з коробки" стек, часто простіший у розгортанні та управлінні для невеликих і середніх інфраструктур.

Чому це корисно:

  • Єдина точка для всіх логів вашої інфраструктури.
  • Потужний пошук і аналітика через веб-інтерфейс.
  • Налаштовувані дашборди для візуалізації ключових метрик.
  • Система оповіщень для своєчасного інформування про проблеми.

Приклад використання:

Graylog управляється через веб-інтерфейс. Ви налаштовуєте "Inputs" (наприклад, Syslog UDP, GELF TCP) для прийому логів, потім можете створювати "Extractors" для парсингу даних, "Streams" для їх категоризації і "Alerts" для повідомлень. Весь процес інтуїтивно зрозумілий через GUI.

15. Kibana

Хоча Kibana сама по собі не є утилітою для роботи з логами, вона є невід'ємною частиною стеку ELK і служить для візуалізації та дослідження даних, індексованих в Elasticsearch (куди Logstash відправляє логи). Вона надає потужні інструменти для створення дашбордів, графіків, таблиць та інтерактивних звітів, дозволяючи сисадмінам і аналітикам швидко отримувати цінні інсайти з величезних обсягів логів.

Чому це корисно:

  • Візуалізація трендів і аномалій в логах.
  • Створення налаштовуваних дашбордів для моніторингу ключових показників.
  • Інтерактивний пошук і фільтрація даних.
  • Виявлення прихованих патернів і кореляцій.

Приклад використання:

У Kibana ви можете створити дашборд, який показує кількість помилок Nginx по годинах, географію запитів, топ-10 найповільніших запитів або графіки використання ресурсів, витягнуті з логів. Все це робиться через інтуїтивний веб-інтерфейс, без написання коду.

rocket_launch Швидкий вибір

Шукаєте сервер, який просто працює?

Valebyte VPS — NVMe, підтримка 24/7, розгортання за 60 секунд.

Переглянути тарифи VPS arrow_forward

Висновки

Як бачите, арсенал інструментів для роботи з системними журналами величезний і різноманітний. Від базових команд, таких як grep і tail, до потужних комплексних рішень на кшталт ELK Stack або Graylog — кожен інструмент має свою нішу і цінність. Для повсякденної діагностики і налагодження на окремому сервері вам, швидше за все, буде достатньо journalctl, grep і tail. Але по мірі зростання інфраструктури і збільшення обсягу логів, необхідність в централізованих системах, автоматичній ротації, моніторингу та візуалізації стає критично важливою.

У Valebyte ми розуміємо, що ефективне управління логами — це запорука стабільності та безпеки вашої інфраструктури. Освоюйте ці утиліти, експериментуйте з ними і вибирайте ті, які найкращим чином підходять для ваших завдань. Ваші сервери будуть вам вдячні, а ви зможете спати спокійніше, знаючи, що тримаєте ситуацію під контролем.

Масштабуйте аналіз логів з хмарними інстансами

Потрібно більше потужності для великого аналізу системних логів? Наші хмарні інстанси пропонують гнучкість і продуктивність для будь-яких завдань.

Дослідити Хмарні Інстанси →
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.