AWStats

ApacheやPostfixのログを解析して統計を表示するためのソフトです。普段からそこまでチェックすることはありませんが、たまに眺めて楽しんだり、異常なアクセスを視覚的に発見したりできます。

インストールと基本設定

インストール後、各解析のための設定を行います。

  1. インストールします。
    # apt install awstats
  2. AWStatsはデフォルトで10分毎に分析をアップデートしようとします。しかし、何も設定しないうちに動かすとcronから10分毎にエラーメー ルが飛んでくるだけなので、止めます。
    /etc/cron.d/awstatsを修正し、デフォルトで入っている2つをコメントアウトしてください。
  3. /etc/awstats/awstats.confに設定されているデフォルトを上書きするため、awstats.conf.localを修正しま す。(awstats.confの一番下に、awstats.conf.localをincludeしている行があります。)
    # You can overrides config directives here.
    # This is particularly useful for users with several configs for
    # different virtual servers, who want to reuse common parameters.
    # Also, this file is not updated with each new upstream release.
    LogFile="/var/log/apache2/access.log.1"
    LogFormat=1
    SiteDomain="null"
    
    なお、ここで設定しているLogFileとSiteDomainは、ApacheのDefaultサイトに相当するものです。いらないからといって何も入れないと、後でupdate.shを動かした時に設定が足りない旨のエラーになってしまいます。
  4. /use/share/doc/awstats/README.Debioan.gzに従い、各バーチャルホストごとの設定ファイルを/etc/awstats/内に作成します。各ファイル名はawstats.example.com.confのように、バーチャルホスト名を含んだ名前になります。
    Include "/etc/awstats/awstats.conf"
    SiteDomain="example.com"
    LogFile="/var/log/apache2/example.com-access.log.1"
    
  5. /etc/logrotate.d/apache2を修正し、lastactionにログ解析を追加します。
    /var/log/apache2/*.log
    /var/log/apache2/*/*.log {
            weekly
            ...(中略)...
            lastaction
                    /usr/share/awstats/tools/update.sh
                    /usr/share/awstats/tools/buildstatic.sh
            endscript
    }
  6. Apacheでawstatのページを表示するためのconfファイルテンプレートは、2.4より前の書式になっていてそのままでは使えません。
    テンプレートをconf置き場にコピーして、編集します。
    # cp /usr/share/doc/awstats/examples/apache.conf /etc/apache2/conf-available/awstats.conf
    主にアクセス制御のところを、Apache2.4以降の書式にします。
    # This provides worldwide access to everything below the directory
    # Security concerns:
    #  * Raw log processing data is accessible too for everyone
    #  * The directory is by default writable by the httpd daemon, so if
    #    any PHP, CGI or other script can be tricked into copying or
    #    symlinking stuff here, you have a looking glass into your server,
    #    and if stuff can be uploaded to here, you have a public warez site!
    <Directory /var/lib/awstats>
            Options None
            AllowOverride None
            Require all granted
    </Directory>
    
    # This provides worldwide access to everything below the directory
    # Security concerns: none known
    <Directory /usr/share/awstats/icon>
            Options None
            AllowOverride None
            Require all granted
    </Directory>
    
    # This provides worldwide access to everything below the directory
    # Security concerns: none known
    <Directory /usr/share/java/awstats>
            Options FollowSymLinks
            AllowOverride None
            Require all granted
    </Directory>
    
    # This provides worldwide access to everything in the directory
    # Security concerns: none known
    Alias /awstats-icon/ /usr/share/awstats/icon/
    
    # This provides worldwide access to everything in the directory
    # Security concerns: none known
    Alias /awstatsclasses/ /usr/share/java/awstats/
    
    # This (hopefully) enables _all_ CGI scripts in the default directory
    # Security concerns: Are you sure _all_ CGI scripts are safe?
    #ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    ※後述のserve-cgi-bin.confにあるので不要(あっても害にはならないはず)
  7. /etc/apache2/sites-available/xxxに、awstatsを見るための設定を追加します。
    example.com/cgi-bin/awstats.plで結果を閲覧する場合、/cgi-bin/に認証をかけるようになります。
    <Location /cgi-bin>
            AuthType Basic
            AuthName "Authentification Required"
            AuthUserFile /hoge/.htpasswd
            Require user hoge
    </Location>
    Include /etc/apache2/conf-available/serve-cgi-bin.conf
    Include /etc/apache2/conf-available/awstats.conf
    reloadして設定を反映します。
    # service apache2 reload
  8. ブラウザでhttps://.../cgi-bin/awstats.pl?config=example.comにアクセスしてみて、ページが正常に表示されればここまでの設定は完了です。
  9. すでにローテート済みのログデータがある場合は、解析処理を手動で動かしてください。
    # /usr/share/awstats/tools/update.sh

Postfixのログ解析

AWStatsはPostfixのログも解析できます。どんなメールアドレスのやりとりが多いか、どんなホストとのやり取りが多いかがこれで分かります。

  1. AWStastsのFAQに従って、/etc/awstats/awstats.mail.confを作成します。
    Include "/etc/awstats/awstats.conf"
    DNSLookup=0
    SiteDomain="mail.example.com"
    HostAliases="list.example.com mail.example.jp"
    LogFile="perl /usr/share/doc/awstats/examples/maillogconvert.pl standard < /var/log/mail.log.1|"
    
    LogType=M
    LogFormat="%time2 %email %email_r %host %host_r %method %url %code %bytesd"
    LevelForBrowsersDetection=0
    LevelForOSDetection=0
    LevelForRefererAnalyze=0
    LevelForRobotsDetection=0
    LevelForWormsDetection=0
    LevelForSearchEnginesDetection=0
    LevelForFileTypesDetection=0
    ShowMenu=1
    ShowSummary=HB
    ShowMonthStats=HB
    ShowDaysOfMonthStats=HB
    ShowDaysOfWeekStats=HB
    ShowHoursStats=HB
    ShowDomainsStats=0
    ShowHostsStats=HBL
    ShowAuthenticatedUsers=0
    ShowRobotsStats=0
    ShowEMailSenders=HBML
    ShowEMailReceivers=HBML
    ShowSessionsStats=0
    ShowPagesStats=0
    ShowFileTypesStats=0
    ShowFileSizesStats=0
    ShowBrowsersStats=0
    ShowOSStats=0
    ShowOriginStats=0
    ShowKeyphrasesStats=0
    ShowKeywordsStats=0
    ShowMiscStats=0
    ShowHTTPErrorsStats=0
    ShowSMTPErrorsStats=1
  2. Apacheのログ解析に合わせてPostfixの解析が走るようになりますが、ログローテートをどちらもweeklyにして1世代前を解析する設定ですので、特に取りこぼしなどが出る心配はありません。
    (どうしても別にしたい場合は、rsyslog(メールログ)とApacheのログローテートのところに、設定ファイル指定で更新処理を動かすようにすれば区別はできます。)

目次へ戻る