У меня очень большие файлы журнала nginx - целых 250 МБ.
Когда я просматривал файлы журнала примерно 10 дней в месяце - тогда следующие ежедневные журналы приведут к тому, что мои awstats уйдут. Вот так:
/usr/lib/cgi-bin/awstats.pl -config=mydomain.com -update
....
Flush history file on disk (unique hosts reach flush limit of 20000)
Flush history file on disk (unique hosts reach flush limit of 20000)
Killed
Я знаю, что это как-то связано с большими данными - потому что, когда я удаляю файл базы данных, сгенерированный awstats, любые файлы журнала (с датой) будут нормально проходить через awstats.pl.
Мне кажется, что вы достигли жесткого лимита ресурсов при обработке журналов. Есть хороший Страница SU на ulimit вы можете взглянуть на. TL; DR - это посмотреть на ваши текущие ограничения с помощью 'ulimit -a'; затем наблюдайте за процессом awstats с чем-то вроде «top» при следующем запуске. Скорее всего, вы увидите, что он выходит за пределы памяти или размера стека.
Проблема в том, что поиск DNS в AWStats по своей сути неэффективен и не очень хорош. Читайте об этом здесь. Намного лучшая стратегия, которую я использую на всех серверах, которые я настраиваю, - это использовать поиск по GeoIP вместо поиска по доменному имени. Подробнее в этом руководстве здесь. В основном вы войдете в свой файл конфигурации AWStats для mydomain.com
- что должно быть awstats.mydomain.com.conf
- если я правильно помню схему форматирования. И установка DNSLookup=0
. Но затем, чтобы преобразовать IP-адреса в нечто большее, чем просто числа, вам потребуется настройка GeoIP. Если вы не заботитесь о добавлении дополнительных данных к IP-адресам, вам не нужно ничего делать, кроме как отключить поиск DNS. Но поделитесь своим методом использования поиска по GeoIP на всякий случай.
Помните, что процесс может быть сложным, если вам неудобно компилировать собственные пакеты, но именно так я делаю это в Ubuntu 12.04 LTS.
Сначала получите инструмент GeoIP от MaxMind:
wget http://www.maxmind.com/download/geoip/api/c/GeoIP-latest.tar.gz
Распаковать архив:
tar -xvzf GeoIP-latest.tar.gz
Это должен быть GeoIP-1.5.1`, но проверьте, чем он расширяется, если версия изменилась. Предполагая, что это все еще версия 1.5.1, перейдите в каталог:
cd ./GeoIP-1.5.1
В некоторых случаях мне приходилось бежать libtoolize
чтобы конфигурация заработала:
libtoolize -f
Затем сделайте «как обычно» config
& make
рутина:
./configure
make
make check
sudo make install
В некоторых случаях мне приходилось бежать dh-autoreconf
как описано здесь:
sudo aptitude install dh-autoreconf
Затем сделайте следующее в своем GeoIP-1.5.1
каталог:
autoreconf --force --install
./configure
make
Хорошо, если это сделано и работает, перейдите к компоненту CPAN, который соединит код Perl AWStats с функциями GeoIP:
sudo cpan Geo::IP::PurePerl Geo::IP
Хорошо, все прошло хорошо? Теперь получите базы данных от MaxMind:
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
Переместите их в местный /usr/share/GeoIP/
каталог:
sudo mv ~/GeoIP.dat.gz /usr/share/GeoIP/
sudo mv ~/GeoLiteCity.dat.gz /usr/share/GeoIP/
sudo mv ~/GeoIPASNum.dat.gz /usr/share/GeoIP/
И распаковать их:
sudo gzip -d /usr/share/GeoIP/GeoIP.dat.gz
sudo gzip -d /usr/share/GeoIP/GeoLiteCity.dat.gz
sudo gzip -d /usr/share/GeoIP/GeoIPASNum.dat.gz
Теперь в awstats.mydomain.com.conf
сделайте следующее. Сначала найдите DNSLookup
строку и отключите ее:
DNSLookup=0
Теперь найдите строку, в которой GEOIP_STANDARD
и добавьте эту или отредактируйте эту строку, чтобы учесть три новые базы данных:
LoadPlugin="geoip GEOIP_STANDARD /usr/share/GeoIP/GeoIP.dat"
LoadPlugin="geoip_city_maxmind GEOIP_STANDARD /usr/share/GeoIP/GeoIPCity.dat"
LoadPlugin="geoip_org_maxmind GEOIP_STANDARD /usr/share/GeoIP/GeoIPASNum.dat"
Убедитесь, что эти .dat
файлы соответствуют именам файлов, которые на самом деле находятся в /usr/share/GeoIP/
. Все хорошо? Большой! Теперь повторно запустите команду AW Stats. Чтобы убедиться, что плагины GeoIP установлены, проверьте самый низ страницы AWStats после того, как вы запустите сценарии AWStats с установленными настройками GeoIP. Он должен выглядеть примерно так:
Created by awstats (plugins: geoip_org_maxmind, geoip_city_maxmind, geoip)
Вероятно, это больше информации, чем вам нужно, но надеюсь, что это поможет!