Как работает ротация логов

Материал из ISPWiki
Перейти к: навигация, поиск

Как работает ротация логов

Для ротации логов ISPmanager 5 по умолчанию использует утилиту logrotate. Включить ротацию логов необходимо для каждого конкретного www домена в его свойствах. Нажмите кнопку "Показать скрытые поля" для более гибкой настройки ротации. Rotate12.png

Сам logrotate запускается по крону ежедневно - /etc/cron.daily/logrotate . Файл конфигурации находится в

/etc/logrotate.conf 

Настройки ротирования логов каждого отдельного www домена хранятся в

/etc/logrotate.d/web/domain.com

По умолчанию включены следующие настройки ротирования (содержимое /etc/logrotate.d/web/domain.com)

#Первая строка — шаблон обрабатываемых лог-файлов. 
/var/www/httpd-logs/domain.com.access.log {
        olddir /var/www/user/data/logs # Перемещать архивные файлы в указанную директорию
        copytruncate # Создать копию оригинального log-файла, а потом его 'обнулить'. Таким образом сам файл не удаляется. 
        compress # Сжать файлы (по умолчанию gzip)
        monthly # Производить ротацию раз в день/неделю/месяц
        prerotate # Аналогично postrotate, только действия будут выполнены до начала сжатия
                /etc/webanalyzer.d/user/domain.com #Анализировать логи
        endscript
}
/var/www/httpd-logs/domain.com.error.log {
        olddir /var/www/user/data/logs
        copytruncate
        compress
        monthly
}


Запуск ротирования вручную

/usr/sbin/logrotate -d -f <путь_до_конфига_нужного_www_домена>

-d - детальный вывод информации. -f - поротировать в любом случае (например, даже если сегодня уже ротировались логи). Например, необходимо поротировать логи только для domain.com , команда будет выглядеть так

/usr/sbin/logrotate -f /etc/logrotate.d/web/domain.com

Возможные проблемы

  • log does not need rotating

Причина - логи уже ротировались. Можно исправить статус в файле

/var/lib/logrotate.status

Либо вообще удалить этот файл, тогда придется запустить ротацию для всех логов

/usr/sbin/logrotate -f /etc/logrotate.conf

Логи самих панелей 5ой версии ротируются встроенным в панель механизмом при достижении размера в 100 Мб.

Как работает анализатор логов

ISPmanager 5 поддерживает:

  • awstats
  • webalizer

Установить анализатор логов можно в панели ISPmanager --- Настройки --- Программное обеспечение. Включить анализатор логов необходимо для каждого конкретного www домена в его свойствах. Нажмите кнопку "Показать скрытые поля" для более гибкой настройки.

Together.png

Для примера разберем Awstats

При включении анализатора лога для www домена domain.com создается конфигурационный файл с правилами. Стандартно он находится

/etc/awstats/awstats.domain.com.conf

В нем указано

LogFile="/var/www/httpd-logs/dasha.com.access.log" #где будем брать лог для анализа
SiteDomain="dasha.com" #какой сайт будем анализировать
DirData="/var/www/user/data/www/dasha.com/webstat/" #куда будет складываться статистика после анализа
и др. настройки

Статистику для www домена можно посмотреть в ISPmanager --- Web домены --- выделить нужный --- кнопка "Статистика".

Вручную сбор статистики можно запустить командой

/etc/webanalyzer.d/user/domain.name

или

/usr/bin/perl /usr/lib/cgi-bin/awstats.pl -update -config=domain.com

Когда запускается сбор статистики

  • Если период сбора статистики указан "в момент ротации", то анализатор логов будет запускаться непосредственно logrotate.

Сбор статитики

В файл конфигурации /etc/logrotate.d/web/<domain.name> будет добавлена директива prerotate, которая запускает анализатор логов.


/var/www/httpd-logs/domain.name.access.log { 	
olddir /var/www/username/data/logs 	
daily 	
copytruncate 	
compress 	
rotate 10 	
prerotate 		
        /etc/webanalyzer.d/username/domain.name 	
endscript 
}
/var/www/httpd-logs/domain.name.error.log { 	
olddir /var/www/username/data/logs 	
daily 	
copytruncate 	
compress 	
rotate 10
}
  • Если период сбора статистики указан "каждый час", то скрипт по сбору статистики будет добавлен в пользовательский cron

Сбор статистики 2

# crontab -u username -l
MAILTO=""#
#ISPmanager log rotate domain.name
0 * * * *	/etc/webanalyzer.d/username/domain.name

Возможные проблемы со сбором статистики

  • В статистике отображается всего один уникальный посетитель.

Такое бывает при установленной связке Nginx + Apache. Решением является установка mod_rpaf для Apache.

  • В статистике все нули.

Проверить, что в конфигурационном файле awstats для домена (/etc/awstats/awstats.domain.com.conf) выставлен

LogFormat=1

А в конфигурационном файле Apache формат лога combined.

CustomLog /var/www/httpd-logs/domain.access.log combined
  • Как исключить свой собственный IP адрес из статистики?

Необходимо отредактировать конфигурационный файл /etc/awstats/awstats.domain.com.conf .

SkipHosts="123.123.123.123"


Официальная документация по проблемам с Awstats