エックスサーバーのドメイン毎のアクセス数を一括で確認

エックスサーバーではドメイン数が無制限で設定できるので活用しているのですが、管理が大変なので効率化する方法です。

今回は日々のアクセス数がどれくらい来ているのかを確認していきます。

対象としては

  • エックスサーバーにSSH接続できる
  • bashの知識がある
  • crontabを設定できる

方向けの記事になっております。

エックスサーバーでのアクセスログの場所はこちらの記事でも取り上げました

/home/userlog/httpd/<ユーザー名>/<ドメイン名>.access_log

にアクセスログがあるので、記載されている行数を確認してアクセス数を算出していきます。botなども含まれるので詳細なユーザーアクセス数を知りたい場合には別途アナリティクスを確認する必要があります。

前日分のアクセスログを一括で確認して件数を算出するbashスクリプトがこちら

#!/bin/bash

yesterday=`date "+%Y%m%d" -d "-1 day"`
path=/home/userlog/httpd/`whoami`/*.access_log_${yesterday}.gz

for f in $(ls $path); do
  echo "`zcat $f | wc -l` $f"
done | sort -n --reverse

実行したらこんな感じ

$ bash bin/access_log_count.sh 
123456 /home/userlog/httpd/<ユーザー名>/<ドメイン>.access_log_20230227.gz
12345 /home/userlog/httpd/<ユーザー名>/<ドメイン>.access_log_20230227.gz

これをcrontabに設定すれば日々メールが飛んでくるので確認することができます。

crontabの設定はこんな感じです。

$ crontab -l
MAILTO=<メールアドレス>@gmail.com

42 5 * * * /bin/bash /home/<ユーザー名>/bin/access_log_count.sh

こんな内容のメールが飛んできます

お疲れ様でした。

モバイルバージョンを終了