web-dev-qa-db-ja.com

AWStatsプロセスは、大きなログの処理中に停止します

私は本当に大きなnginxログファイルを持っています-250MBもあります。

月の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を正常に実行します。

1
David

ログの処理中にハードリソースの制限に達したようです。良いものがあります limitのSUページ あなたは見ることができます。 TL; DRは、「ulimit-a」を使用して現在の制限を確認することです。次に、次の実行で「top」のようなものを使用してawstatsプロセスを監視します。ほとんどの場合、メモリまたはスタックサイズの制限に達していることがわかります。

1
bizzyunderscore

問題は、AWStatsでのDNSルックアップは本質的に非効率的であり、それほど優れていないことです。 ここでそれを読んでください 。セットアップするすべてのサーバーで使用するはるかに優れた戦略は、ドメイン名ルックアップの代わりにGeoIPルックアップを使用することです。このチュートリアルの詳細 はこちら 。基本的に、フォーマットスキームを正しく思い出せば、mydomain.comのAWStats設定ファイルに移動します。これはawstats.mydomain.com.confである必要があります。そして、DNSLookup=0を設定します。ただし、IPアドレスを単なる数字以外のものに解決するには、GeoIPを設定する必要があります。 IPにデータを追加する必要がない場合は、DNSルックアップを無効にする以外に何もする必要はありません。しかし、念のため、GeoIPルックアップを使用する私の方法を共有します。

自分のパッケージでコンパイルすることに慣れていない場合、プロセスは複雑になる可能性があることを忘れないでください。しかし、これがUbuntu 12.04LTSでの方法です。

まず、MaxMindからGeoIPツールを入手します。

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

次に、「通常の」configmakeルーチンを実行します。

./configure
make
make check
Sudo make install

場合によっては、ここで説明するようにdh-autoreconfを実行する必要がありました

Sudo aptitude install dh-autoreconf

次に、GeoIP-1.5.1ディレクトリで次の手順を実行します。

autoreconf --force --install
./configure
make

さて、それが完了して機能する場合は、PerlAWStatsコードをGeoIP関数でブリッジするCPANコンポーネントに移動します。

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のある行を見つけてこれを追加するか、その行を編集して3つの新しいデータベースを考慮します。

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/にあるファイルの名前と一致することを確認してください。すべて良いですか?すごい!次に、AWStatsコマンドを再実行します。 GeoIPプラグインが配置されていることを確認するには、GeoIP設定を配置してAWStatsスクリプトを実行した後、AWStatsページの一番下を確認します。次のようになります。

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

これはおそらくあなたが必要とするよりも多くの情報ですが、これが役立つことを願っています!

0
JakeGould