Назад | Перейти на главную страницу

сервер awstats в динамической инфраструктуре

У меня есть Linux-сервер, предназначенный для awstats. На этом сервере размещается приложение awstats и создается / публикуется статистика для нескольких веб-сайтов, размещенных на нескольких веб-серверах, развернутых в моей инфраструктуре.

Для выполнения этой работы в этот момент каждый веб-сервер экспортирует через NFS свои каталоги журналов веб-доступа, а сервер awstats монтирует их только для чтения. Таким образом, все работает нормально, и awstats может читать журналы всех серверов.

Основная проблема этого решения заключается в том, что всякий раз, когда я выключаю / включаю веб-сервер, мне приходится перенастраивать как монтирование NFS, так и конфигурацию Awstats внутри сервера awstats. Учитывая, что у меня динамическая среда (частное облако), бывает, что мне приходится выключать и включать веб-серверы много раз в течение дня в зависимости от нагрузки на них.

Знаете ли вы какую-либо другую возможную и разумную конфигурацию, которую я могу применить к awstats, чтобы удовлетворить эту потребность без необходимости ее каждый раз перенастраивать?

Большое спасибо.

Когда я делаю аналогичные вещи в AWS или подобных облаках, я использую autofs смонтировать каталоги журналов. Это означает, что каталоги журналов монтируются по запросу, т.е. не до тех пор, пока они не понадобятся, и размонтируются вскоре после этого. Это также означает, что доступ к каталогу, который соответствует неработающему серверу, требует короткого ожидания перед возвратом пустого каталога вместо длительного зависания NFS.

Затем я веду единый центральный список серверов, работающих в настоящее время для опроса, так что задание журнала не опрашивает серверы, которые не работают, и даже не имеет autofs Подождите; но это всего лишь уточнение.

Альтернативой может быть настройка веб-серверов для передачи журналов доступа с помощью системного журнала на ваш сервер awstats.

Это будет означать нулевое изменение конфигурации конфигурации awstats при включении и выключении веб-серверов.

На веб-сервере Apache теперь у вас может быть что-то вроде:

ErrorLog "/var/log/www/error.log"
CustomLog "/var/log/www/access.log" combined

Замените их трубкой, чтобы logger (стандартная утилита, которая преобразует stdin в сообщения системного журнала) и при необходимости использовать tee для дублирования сообщений журнала, чтобы существующий файл журнала также сохранялся:

ErrorLog  "|/bin/sh -c '/usr/bin/tee -a /var/log/www/error.log  | /usr/bin/logger -thttpd -plocal6'"
CustomLog "|/usr/bin/logger -thttpd -plocal7" combined

Затем дайте команду демону syslog на каждом веб-сервере отправлять файлы журнала на ваш сервер awstats:

# syslog.conf
local6.* @192.168.0.1    
local7.* @192.168.0.1

Где входящие сообщения могут быть собраны и сохранены для дальнейшей обработки с помощью awstats.

Если у вас несколько разных виртуальных хостов, вы можете добавить дополнительный LogFormat директива, которая также записывает VirtualHost:

 LogFormat "%v %h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined-with-vhost

и использовать

CustomLog "|/usr/bin/logger -thttpd -plocal7" combined-with-vhost

Затем вы можете выполнить некоторую предварительную обработку и разделить записи для каждого VirtualHost в собственный файл журнала или изменить свой конфигурация awstats иметь дело с такими записями %virtualname и создавать правильную статистику.