O processo do AWStats é interrompido durante o processamento de logs grandes

1

Eu tenho arquivos de log nginx realmente grandes - até 250 MB.

Quando eu corri como 10 dias do mês de arquivos de log - então os próximos logs diários causariam a morte do meu awstats. Assim:

/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

Eu sei que tem algo a ver com o big data - porque quando eu apago o arquivo de banco de dados gerado pelo awstats - qualquer arquivo de log (data) será executado através do awstats.pl.

    
por David 17.11.2013 / 04:02

2 respostas

1

Parece-me que você atingiu um limite de recursos difíceis ao processar os registros. Há uma boa página SU no ulimit que você pode dar uma olhada. TL; DR seria dar uma olhada nos seus limites atuais com 'ulimit -a'; então assista o seu processo awstats com algo como 'top' em sua próxima execução. Você provavelmente verá os limites de memória ou tamanho de pilha.

    
por 17.11.2013 / 04:17
0

O problema é que as pesquisas de DNS no AWStats são inerentemente ineficientes & não é tão bom assim. Leia sobre isso aqui . Uma estratégia muito melhor que eu uso em todos os servidores que configuro é usar pesquisas do GeoIP em vez de pesquisas de nomes de domínio. Mais detalhes neste tutorial aqui . Basicamente, você entrará no seu arquivo de configuração do AWStats para mydomain.com - que deve ser awstats.mydomain.com.conf - se eu me lembrar do esquema de formatação corretamente. E definindo DNSLookup=0 . Mas para resolver endereços IP para algo mais do que apenas números, você precisa da configuração do GeoIP. Se você não se importar em adicionar mais dados a IPs, não precisará fazer mais nada além de desativar as pesquisas de DNS. Mas compartilhando meu método de usar pesquisas GeoIP apenas no caso.

Lembre-se, o processo pode ser complexo se você não estiver confortável em fazer compilações em seus próprios pacotes, mas é assim que eu faço no Ubuntu 12.04 LTS.

Primeiro, pegue a ferramenta GeoIP da MaxMind:

wget http://www.maxmind.com/download/geoip/api/c/GeoIP-latest.tar.gz

Extraia o arquivo:

tar -xvzf GeoIP-latest.tar.gz

Deve ser o GeoIP-1.5.1 ', mas verifique o que ele expande para se a versão for alterada. Assumindo que ainda é a versão 1.5.1, vá para o diretório:

cd ./GeoIP-1.5.1

Em alguns casos, tive que executar libtoolize para que a configuração funcionasse:

libtoolize -f

Em seguida, execute "o habitual" config & make rotina:

./configure
make
make check
sudo make install

Em alguns casos, tive de executar dh-autoreconf conforme descrito aqui :

sudo aptitude install dh-autoreconf

Em seguida, faça o seguinte no diretório GeoIP-1.5.1 :

autoreconf --force --install
./configure
make

Ok, se isso for feito & funciona, vá para o componente CPAN que irá ligar o código Perl AWStats com as funções do GeoIP:

sudo cpan Geo::IP::PurePerl Geo::IP

Ok, tudo correu bem? Agora pegue os bancos de dados do 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

Mova-os para o diretório local /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/

E descomprima-os:

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

Agora, no awstats.mydomain.com.conf , faça o seguinte. Primeiro, encontre a linha DNSLookup e desative-a:

DNSLookup=0

Agora encontre a linha que tem GEOIP_STANDARD e adicione ou edite essa linha para contabilizar os três novos bancos de dados:

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"

Certifique-se de que os arquivos .dat correspondam aos nomes dos arquivos que estão realmente em /usr/share/GeoIP/ . Tudo bom? Ótimo! Agora execute novamente o seu comando AW Stats. Para confirmar se os plug-ins do GeoIP estão no lugar, verifique a parte inferior da página do AWStats depois de executar os scripts do AWStats com as configurações do GeoIP no lugar. Deve ler algo como:

Created by awstats (plugins: geoip_org_maxmind, geoip_city_maxmind, geoip)

Esta é provavelmente mais informação do que você precisa, mas espero que isso ajude!

    
por 17.11.2013 / 05:44