この記事でわかること

  • アクセスログに、AIに渡すと困る情報がどこに入っているか
  • 必要な列だけを取り出し、IPを番号に置き換える方法
  • 渡す前に、取り除けたかを確かめる方法
  • AIが出した集計を、自分のコマンドで数え直す方法

結論から書くと、ログはそのまま渡さず、必要な列だけを取り出してIPを番号に置き換え、取り除けたかを検索で確かめてから渡します。AIの集計は、大事な数字だけでも自分で数え直します。

この記事の手順は、文書用のIPアドレスで作った例示用のログで確かめたものです。実際のサーバーのログは使っていません。

アクセスログに入っている情報

Apacheのアクセスログでよく使われる形式(combined)には、1行ごとに次の項目が並びます。Apacheの説明では、行の先頭の項目は、ホスト名を調べる設定が既定のOffのままならIPアドレスです。

項目 例 渡すとき
先頭 IPアドレス 番号にする
時刻 受け付けた時刻 残す
要求の行 URLとクエリ ?から後を消す
状態 200・404 残す
参照元 前のページ 消す
ブラウザー 利用者の環境 消す

特に気をつけたいのは、URLの「?」から後ろ(クエリ)です。フォームの入力やログインの仕組みによっては、メールアドレスやトークンがそこに入ります。

このサイトのサーバーで2026年10月18日に設定を確かめたところ、サイトのアクセスログはこの形式で、ホスト名を調べる設定は書かれていませんでした。つまり、先頭にはIPアドレスが記録されます。一方で、このサイトが管理画面で数えている閲覧の記録は、IPアドレスを保存せず、日ごとに変わるハッシュだけで訪問者を区別する作りにしています。

必要な列だけを取り出す

AIに頼みたいことが「どのページでエラーが多いか」なら、必要なのは「誰が(区別できれば番号でよい)・いつ・どのページに・どの結果か」だけです。次のawkの1行で、IPを番号に置き換え、URLの「?」から後ろを消し、4つの列だけを取り出します。

【用途】必要な列だけを取り出し、IPを番号に置き換えたファイルを作る /【実行場所】作業用のPC(ログのコピーがある場所) /【状態変更】あり(masked.logを新しく作る。元のログは変えない)

awk '{if (!($1 in id)) id[$1]="client-" (++n); split($7,p,"?"); print id[$1], $4, p[1], $9}' sample_access.log > masked.log
  • 同じIPには同じ番号(client-1・client-2…)が付くので、同じ訪問者からの何回目かは区別できます
  • 番号と元のIPの対応表は、ファイルに残しません
  • 参照元とブラウザーの列は、取り出さないことで消しています

例示用のログ(8行)で試したところ、出力も8行で、IPアドレス・メールアドレス・トークンは残りませんでした。作業PCのGNU Awk 5.4.1と、AlmaLinux 8のgawk 4.2.1で、同じ結果になりました。

列の番号は、ログの形式によって変わります。独自の形式のログでは、先に数行を見て、何番目の列に何があるかを確かめてから使います。

渡す前に確かめる

取り出したファイルに、消したはずの情報が残っていないかを検索します。grepの-Eは拡張の正規表現で探し、-cは見つかった行の数だけを表示します。

【用途】IPアドレスの形・@・token=が残っていないかを数える /【実行場所】作業用のPC /【状態変更】なし(ファイルを読むだけ)

grep -cE '[0-9]+[.][0-9]+[.][0-9]+[.][0-9]+' masked.log
grep -c '@' masked.log
grep -ci 'token=' masked.log

3つとも0なら、少なくともこの3種類は残っていません。1つでも0でなければ、渡さずに取り出し方を直します。ほかにも、自分のサービスで使っているパラメーターの名前(sessionなど)があれば、同じように探します。

Claude Codeに集計を頼む

取り除いたファイルができたら、そのファイルだけを読むように頼みます。元のログのある場所は教えません。

【用途】取り除いたファイルだけを使って集計を頼む /【実行場所】Claude Codeに頼む文 /【状態変更】なし(集計の結果と説明を受け取るだけ)

masked.log はアクセスログから必要な列だけを取り出したファイルです(列: 訪問者の番号・時刻・ページ・ステータスコード)。
- このファイルだけを読み、ほかのファイルやフォルダは開かないでください
- ステータスコードごとの件数と、404 が多いページの上位を表にしてください
- 集計に使ったコマンドも書いてください
ファイルの書き換えや削除は行わず、結果を示したところで止まってください。

集計に使ったコマンドを書かせておくと、次の検算で同じことを自分でも実行できます。ページが404になっていないかを、ログを待たずに毎日確かめる仕組みは、サーバーの定期監視をcronで回し、異常時だけ通知するで紹介しています。

AIの集計を数え直す

AIの答えは、大事な数字だけでも自分で数え直します。ステータスコードごとの件数は、次の1行で数えられます。uniqは隣り合う同じ行をまとめる仕組みなので、先にsortで並べてから-cで数えます。

【用途】ステータスコードごとの件数を自分で数える /【実行場所】作業用のPC /【状態変更】なし(ファイルを読むだけ)

awk '{print $4}' masked.log | sort | uniq -c

例示用のログでは、200が3件、302が1件、401が1件、404が3件でした。元のログを同じように数えた結果とも一致しました。AIの表の数字がこれと違えば、AIが行を読み落としたか、列を取り違えています。AIの出力を確かめる考え方はAIの出力をどう確認するか|誤りが出やすい場所と、確認を作業に組み込む方法で紹介しています。

任せない方がよいこと

  • 元のログをそのまま読ませる: IPアドレスやクエリの中身が、そのまま渡ります
  • 取り除いたかの確認を省く: 取り出し方の間違いは、確かめないと気づけません
  • 集計の結果だけを見て判断する: 障害やセキュリティの判断に使う数字は、自分で数え直してから使います

会社のサーバーのログを扱う場合は、社外のサービスに何を渡してよいかの決まりを、先に確かめます。決まりがない場合の作り方は社内の生成AI利用ルールをどう作るか|最初に決める3つと、守られるための条件にまとめています。サーバー全体の作り方はClaude CodeでAlmaLinuxサーバーを構築・運用する方法で紹介しています。

つまずきやすいところ

  • IPだけ消してクエリを残している: メールアドレスやトークンは、URLの「?」の後ろに入っていることがあります
  • 参照元の列を残している: 前のページのURLに、別のサイトのクエリが入っていることがあります
  • ログの形式が違うのに、列の番号をそのまま使う: 独自の形式では、何番目に何があるかが変わります
  • 番号と元のIPの対応表を作って残す: 対応表があれば元に戻せてしまいます
  • uniqの前にsortを忘れる: 同じ値が離れていると、別々に数えられます

まとめ

  • アクセスログには、IPアドレス・クエリの中身・参照元など、そのまま渡すと困る情報が入っています
  • 必要な列だけを取り出し、IPは番号に置き換え、「?」から後ろは消します
  • 渡す前に、IPの形・@・token=などで検索し、0件を確かめます
  • 取り除いたファイルだけを読むように頼み、集計のコマンドも書かせます
  • 大事な数字は、自分のコマンドで数え直してから使います