Журнал роботи і ротація логів apache на сервері ubuntu

Розміщення серверів в надійних дата-центрах Європи. Відкрийте хмарний VPS / VDS сервер на швидких SSD за 1 хвилину!

Кращий хостинг:
- захистить дані від несанкціонованого доступу в охоронюваному європейському ЦОДі
- прийме оплату хоч в bitcoin.
- дозволить поставити свій дистрибутив

- захист від DDos-атак
- безкоштовний backup
- Uptime 99,9999%
- ЦОД - TIER III
- провайдер - TIER I

Підтримаємо російською мовою 24/7/365 Працюємо з юрособами і фізособами. Вам прямо зараз потрібно 24 ядра і 72 Gb RAM. Будь ласка!

Наші вигідні тарифи доведуть, що дешевий хостинг ви ще не знали!

Хвилинна справа: виберіть конфігурацію, оплатіть і CMS на VPS готова.
Money Back - 30 днів!

Банківськими картами, електронною валютою, через термінали Qiwi, Webmoney, PayPal, Новоплат і ін.

Задайте питання в службу підтримки 24/7/365

Знайдіть відповіді в нашій базі і познайомтеся з рекомендаціями

Веб-сервер Apache може надавати адміністратору багато корисної інформації про свою роботу, а також про проблеми і помилки, які потрібно усунути.

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

Даний посібник знайомить з можливостями журналювання Apache і призначеними для цього інструментами.

Примітка. У цьому посібнику використовується Apache2 на сервері Ubuntu 12.04, але інструкції підійдуть і для інших дистрибутивів.

рівні логування

Для цього існують рівні логування. Наприклад, найбільш важливі повідомлення, що повідомляють про критичні помилки і збої, існує рівень emerg. А повідомлення рівня info просто надають корисні підказки.

Існують такі рівні логування:

  • emerg: критична ситуація, аварійний збій, система знаходиться в неробочому стані.
  • alert: складна передаварійна ситуація, необхідно терміново вжити заходів.
  • crit: критичні проблеми, які необхідно вирішити.
  • error: сталася помилка.
  • warn: попередження; в системі щось сталося, але причин для занепокоєння немає.
  • notice: система в нормі, але варто звернути увагу на її стан.
  • info: важлива інформація, яку слід взяти до відома.
  • Debug: інформація для налагодження, яка може допомогти визначити проблему.
  • trace [1-8]: Трасування інформації різних рівнів деталізації.

При налаштуванні логування задається найменш важливий рівень, який потрібно вносити в лог. Що це означає? Список фіксують вказаний рівень логування, а також всі рівні з більш високим пріоритетом. Наприклад, якщо вибрати рівень error, логи фіксуватимуть рівні error, crit, alert і emerg.

Для настройки рівня логування існує директива LogLevel. Рівень логування за замовчуванням заданий в стандартному файлі конфігурації:

sudo nano /etc/apache2/apache2.conf
.
LogLevel warn
.

Як бачите, за замовчуванням Apache вносить в лог повідомлення рівня warn (і більш пріоритетних рівнів).

Де знаходяться логи Apache?

Apache може розмістити свої логи, використовуючи общесерверние настройки ведення логів. Також можна налаштувати індивідуальне логирование для кожного окремого віртуального хоста.

Общесерверние настройки логування

Щоб дізнатися, де знаходяться стандартні логи сервера, відкрийте конфігураційний файл. В Ubuntu це /etc/apache2/apache2.conf:

sudo nano /etc/apache2/apache2.conf

Знайдіть у файлі рядок:

Дана директива вказує на розташування балки, в якому Apache зберігає повідомлення про помилки. Як бачите, для отримання префікса шляху до каталогу використовується змінна середовища APACHE_LOG_DIR.

Щоб дізнатися значення змінної APACHE_LOG_DIR, відкрийте файл envvars:

sudo nano / etc / apache2 / envvars
.
export APACHE_LOG_DIR = / var / log / apache2 $ SUFFIX
.

Згідно з цим файлу, змінна APACHE_LOG_DIR налаштована на каталог / var / log / apache2. Це означає, що Apache з'єднає це значення до директиви в файлі конфігурації apache2.conf і буде вносити дані в лог /var/log/apache2/error.log.

sudo ls / var / log / apache2
access.log error.log other_vhosts_access.log

Як бачите, тут знаходиться лог помилок error.log і кілька інших логів.

Логування віртуальних хостів

Файл access.log, згаданий в кінці попереднього розділу, не налаштовується у файлі apache2.conf. Замість цього розробники помістили відповідну директиву в файл віртуального хоста.

sudo nano / etc / apache2 / sites-available / default

Прокрутіть файл і знайдіть наступні три значення, пов'язані з логування:

Місцезнаходження ErrorLog збігається з його визначенням в стандартному файлі конфігурації. Цей рядок не обов'язково повинна перебувати в двох окремих файлах; при зміні місцезнаходження цього балки в одному з файлів помилки не виникне.

призначені для користувача логи

У попередньому розділі рядок, що описує access.log, використовує не таку директиву, як попередні рядки для настройки логів. Вона використовує CustomLog:

CustomLog $ / access.log combined

Ця директива має такий синтаксис:

CustomLog log_location log_format

В даному випадку log_format (формат логів) є комбінованим (combined). Ця специфікація не є внутрішньою специфікацією Apache; вона задає призначений для користувача формат, який визначений в файлі конфігурації за замовчуванням.

Знову відкрийте конфігураційний файл за умовчанням і знайдіть рядок, що визначає формат combined:

sudo nano /etc/apache2/apache2.conf
.
LogFormat "% h% l% u% t"% r "%> s% O" i ""% i "" combined
.

Команда LogFormat визначає користувальницький формат логів, що викликаються директивою CustomLog.

Цей формат називається комбінованим (combined).

Існує ще кілька поширених форматів, які можна використовувати у визначенні віртуальних хостів. Можна також створювати свої власні формати.

Ротація логів Apache

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

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

Розглянемо методи настройки ротації логів Apache.

Ротація логів вручну

Переміщати логи під час роботи Apache можна. Тобто, щоб перемістити в архів застарілі або заповнені логи і замінити їх новими, потрібно перезапустити сервер.

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

Нижче наведено приклад з документації Apache. Можливо, знадобиться додати в початок цих команд sudo.

mv access_log access_log.old
mv error_log error_log.old
apachectl graceful
sleep 600
[Post-processing of log files]

Ці команди перемістять файли, перезапускатимуть сервер і скажуть йому почекати 600 секунд. Таким чином Apache зможе використовувати старі лог-файли, щоб завершити реєстрацію старих запитів. Протягом цього часу нові запити будуть записані в нові лог-файли.

Майте на увазі: ротація логів вручну дуже ненадійна в великих серверних середовищах.

утиліта logrotate

За замовчуванням система Ubuntu налаштовує ротацію логів за допомогою утиліти logrotate.

sudo nano /etc/logrotate.d/apache2

У ньому знаходиться кілька параметрів logrotate. Зверніть увагу на перший рядок:

Це означає, що logrotate буде виконувати ротацію тільки тих логів, які знаходяться в / var / log / apache2. Майте це на увазі, якщо ви вибрали інший каталог для зберігання в конфігурації Apache.

Як бачите, логи ротируються щотижня. Також тут є розділ коду, перезапускати Apache після ротації:

postrotate
/etc/init.d/apache2 reload> / dev / null
endscript

Ці рядки автоматично перезапускають веб-сервер Apache після завершення ротації.

Примітка. На жаль, налаштування даного файлу не охоплені в цьому посібнику.

Ротація логів по каналах

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

Щоб логи оброблялися програмою логування, що приймає стандартний висновок, замініть наступний рядок наступним чином:

CustomLog "| logging_program logging_program_parameters" combined

Apache запустить програму логування під час завантаження і перезапустить її в разі помилки або збою.

Для ротації логів можна використовувати різні програми, але за замовчуванням Apache поставляється з rotatelogs. Щоб налаштувати цю програму, використовуйте:

CustomLog "| / path / to / rotatelog / path / of / log / to / rotate number_of_seconds_between_rotations" log_level

Аналогічну конфігурацію можна створити і для інших програм.

висновок

Звичайно, це керівництво охоплює тільки основи логування Apache.

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

Також дуже важливо стежити за логами сервера, щоб випадково не наразити на небезпеку конфіденційну інформацію.

Схожі статті