サーバーログ分析ツール

Apache・Nginx・IISのアクセスログを分析し、どのボットがどこをクロールし、どのステータスコードが返り、リクエストの何割がエラーになったかを確認します。必要なら、正引き確認付きの逆引きDNSでボットの正体も検証できます。

できること

ログを読み取る

log-analyzeはアクセスログを1ファイル(通常ファイルまたはgzip)読み取り、先頭の数行から形式を判別します。リクエストをボットの種類ごとにまとめ、ヒット数、バイト数、ユニークIP、ステータスコード、アクセスされたセクションを報告します。結果が示すのは解析できた範囲のログであり、サイト全体ではありません。

  • 対応形式:ApacheとNginxのCommon/Combined、IIS W3C Extended
  • --max-linesで読み込む行数の上限を指定できます。
  • 結果はページ分割して表示され、--botと--ipで絞り込めます。

ボットを検証する

ユーザーエージェントだけでは何も証明できません。--verify-botsを付けると、SpiderHeadはIPが公式のホスト名に解決されるか、そのホスト名が同じIPに解決し直されるかを確認します。IPごとの判定は、verified(確認済み)、fake(偽)、unchecked(未確認)のいずれかです。環境でDNSがブロックされている場合は、fakeではなくunavailable(判定不能)になります。

  • --max-dnsで、1ページあたりの問い合わせ数を0〜100に制限できます。
  • 公式のホスト名サフィックスがないボットは、uncheckedのままです。
  • ネットワークリクエストを送るのはこのオプションだけで、内容はDNS問い合わせです。

エラーとクロール結果の突き合わせ

ボットの種類ごとに、4xxまたは5xxを返したリクエストが10%を超えると、レポートに注記します。ボットの訪問とクロール結果を比べるには、logs-importでログをプロジェクトに取り込みます。続いてlogs-joinを使うと、スキャン済みなのにボットが一度も来ていないURL、ボットが来たのにスキャンにないURL、エラー応答、ボットが訪れるインデックス不可のURLを一覧できます。

  • ビュー:scan_without_bot_visits、bot_urls_absent_scan、status_waste、nonindexable
  • スキャンにないURLは確認対象の候補であり、孤立ページと確定したわけではありません。
  • logs-summaryとlogs-botsでは、日別・ステータス別・セクション別に確認できます。

3ステップで、スキャンを1件保存

  1. アクセスログを指定する

    Apache、Nginx、IIS W3Cのログファイルを1つ指定します。通常ファイルでもgzip圧縮でも構いません。形式は先頭の数行から自動で判別します。

  2. リクエストをボット別にまとめる

    GooglebotやBingbotからAIクローラー、SEOツールまで、ボットの種類ごとにヒット数、バイト数、ユニークIP、ステータスコード、アクセスされたセクションを集計します。

  3. ボットの正体を検証する

    --verify-botsを付けると、ボットのIPごとに正引き確認付きの逆引きDNSで検証し、verified、fake、uncheckedのいずれかを判定します。ユーザーエージェントだけで本物と判断することはありません。

コマンド1つで実行

bash
seohead log-analyze --path ./access.log --verify-bots

先にインストールします: インストールガイド。どのコマンドも、AIエージェント向けのMCPツールとして実行できます。

必要なもの

  • Apache・Nginx・IISのアクセスログファイル(gzip可)、またはインポート用フォルダ
  • 任意:ログとクロール結果を比較する場合は、プロジェクトと保存済みスキャン
  • 任意:--verify-botsを使う場合は、外部へのDNS問い合わせができる環境

制限事項

  • 読み取れるのは対応するログ形式のみです。独自のフィールド構成には対応しません。
  • ボット名は、検証するまではユーザーエージェントの自己申告にすぎません。
  • ログがない、または一部しかない場合でも、訪問がゼロだったとは言えません。
  • タイムゾーンのないApacheの行とIISのタイムスタンプは、UTCとして読み取ります。

よくある質問

データを外部に送信したり、サイトに変更を加えたりしますか?
いいえ。ログはローカルのディスクから読み取り、サイトにはアクセスしません。ネットワークリクエストを送るのは--verify-botsだけで、ボットのIPに対するDNS問い合わせです。
Googlebotのアクセスかどうかは、どう確認できますか?
--verify-botsを付けて実行します。逆引きしたホスト名がgooglebot.com、google.com、googleusercontent.comのいずれかで終わり、同じIPに解決し直せれば本物です。DNSがブロックされている場合、すべてのボットを偽と判定せず、検証できなかったと報告します。
対応しているサーバーとログ形式は?
ApacheとNginxのCommon/Combined形式、およびIIS W3C Extendedです。IISの列は#Fields行から読み取るため、フィールドの順序が変わっていても読み込めます。gzipファイルはそのまま読み込めます。
クロールバジェットの無駄はどう測りますか?
log-analyzeは、ボットの種類ごとに4xxと5xxの割合を報告します。10%を超えると、その種類のボットがクロールバジェットを無駄にしていると注記します。ボットのヒットとクロールしてほしいURLを比べるには、ログを取り込み、保存済みスキャンに対してlogs-joinを使います。サイトマップとの比較は行いません。
ディスクには何が保存されますか?
log-analyzeはレポートを書き出さず、一時的なインデックスを作って後で削除します。logs-importは、ボット、IP、URL、日付、ステータスごとの件数を、非公開のlogs.v1 SQLiteファイルに保存します。元の行、ユーザーエージェント、リファラーは残りません。ただしIPやパスから個人が特定できる場合があるため、公開するレポートには含めないでください。
料金はかかりますか?
かかりません。無料で、キーもアカウントも不要です。