日常の「地味に面倒」をなくすツール集

アクセスログを「URL単位で深掘り」できる解析ツールが意外と無い問題

サーバーを運用していると、アクセスログを見たくなる瞬間が定期的にやってきます。「昨夜、負荷が跳ねたのはどのURLのせい?」「この404、どこからリンクされてる?」「急に増えたアクセスは人間? ボット?」——。

ところが、これに合う道具が意外と見つかりません。海外のQ&Aサイトにも「Apache/NginxのログをWeb UIで、個々のURLまでドリルダウンして分析できるツールはないか(Apache/Nginx log file analysis tool that allows drilling down to individual URLs with web UI)」という質問が投稿されています。定番のGoAccessはターミナル/静的レポート型でURL単位の深掘りが苦手、GoogleアナリティクスのようなタグベースのツールはJSを実行しないボットや直リンクが見えず、そもそも「過去のログファイル」は解析できません。かといってElasticsearch+Kibanaを立てるのは大げさすぎる。

ブラウザに置くだけ、送信しない

アクセスログ解析(URL別ドリルダウン)は、この隙間のために作りました。access.log をドラッグ&ドロップするだけで:

  • リクエスト数・ユニークIP・転送量・エラー率・ボット比率のサマリー
  • 時間帯別の推移(期間が短ければ1時間ごと、長ければ1日ごと)
  • リクエストの多いURL・404が多いURL・アクセス元IP・参照元・ブラウザ/ボット分類

がその場で出ます。そして本題のドリルダウン——集計表のURLをクリックすると、そのURLだけの時間帯別推移・ステータス内訳・参照元・アクセス元IP・直近のアクセス明細が開きます。「トップページのアクセスが倍増した」→クリック→「特定IPからのbot巡回だった」まで数秒です。

解析はすべてブラウザ内で完結し、ログはどこにもアップロードされません。IPアドレスを含む本番ログを外部サービスに投げることに抵抗がある場合でも使えます。

現場で使いやすくするための小技

  • .gz をそのまま読める: logrotate 済みの access.log.1.gz も展開不要。複数ファイルをまとめて1つの期間として集計できます
  • ボット除外フィルタ: Googlebot・GPTBot・監視ツールなどをワンクリックで除外して「人間のアクセスだけ」に
  • ステータス別・URL部分一致の絞り込み: 「/blog 配下の404だけ」のような見方がすぐできる
  • CSVダウンロード: URL別集計をそのままExcelやスプレッドシートに持っていけます

対応形式は Apache/Nginx の common・combined ログ(自動判別)、上限200万行です。サーバー管理のお供にどうぞ。