Apache の Web サーバー アクセスログの記載内容の読み方を理解してログ解析しよう
WordPress を使った一般的なホームページのような Web サイトの作成や Web システムを運営していく上で、何か問題が起こった時にアクセスログを解析することで原因が特定できることがあります。
ログファイルには全てのアクセス情報が記録されているため、明細数が何十万行にも渡るケースもありますが、答えにたどり着く一番の近道であることも確かです。
企業向け Web システムの場合だと、システム障害等が起こって機能が停止してしまった場合は、いち早く復旧するために努めるのはもちろんですが、システム管理者は再発を防止するために、ログを解析し根本的な原因を求めることも重要な任務となります。
今回は Web サーバーとして最もメジャーである Apache で出力されるアクセスログの記載事項について説明していきます。
Web サイト運営者のためのアクセスログ解析
Web システムの開発者であれば、最低限のログ記載事項は把握しているでしょう。今回は、代表的なレンタルサーバーであるロリポップやエックスサーバーで Web サイトを運営している人向けの説明に重点を置きます。予めご了承ください。
なお、ログ内容は一般的な Web アプリと同じなので、同様に解析することが可能です。
レンタルサーバーのアクセスログ取得方法
レンタルサーバーを借りている場合は、管理画面から閲覧できるようになっているケースがあります。参考として、ロリポップとエックスサーバーでの確認方法を記しておきます。
ロリポップレンタルサーバーの場合
- ユーザー専用ページへアクセスしログイン
- メニュー [Webツール] → [アクセスログ] を選択
- ログを取得する対象のアドレスを選択し、アクセスログページへ移動
- アクセス解析画面が表示されるので、画面一番下にある「生ログファイル ダウンロード」からログファイルをダウンロードする
エックスサーバーの場合
- サーバーパネルへログインする
- メニュー「統計」の [ログファイル] を選択
- ログを取得する対象のドメインを選択
- 選択したドメインに対する対象のサイトを選び、ログファイルをダウンロードする
その他のレンタルサーバーについては、各運営会社のサポートページよりアクセスログの取得方法を参照ください。
Apache の Web サーバー アクセスログ内容
実際にログを直接参照すると、Google Analitics のような統計解析ツールでは分からない情報まできちんと識別し判断することができます。まずは、アクセスログのサンプルをご覧ください。
192.168.11.3 - - [09/Sep/2015:01:47:22 +0900] "GET /css-combinators/ HTTP/1.1" 200 7974 "http://webllica.com/feed-icon-by-html-css/" "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36"
ダブルクォーテーションで括られている部分は 1つの出力項目として、項目間のセパレーターに半角スペースが用いられています。2項目目、3項目目はハイフンが出力されていますが、これもきちんと意味があります。それでは1つずつ分解してみましょう。
アクセスログ項目別の説明
出力項目 | サンプル例 |
---|---|
出力内容 | |
IPアドレス | 192.168.11.3 |
アクセス元の IPアドレスです。このアドレスによりどこからアクセスされたか識別できます。IPアドレスによるアクセス拒否を行う場合は、この情報を元に設定を行います。 | |
クライアントユーザ名 | – |
未設定の場合「-」が出力されます。一般的な Web サイトへのアクセスの場合、未設定となるケースが多いです。 IDENT プロトコルを利用し、メール送信時によく利用される項目です。 | |
認証ユーザ名 | – |
認証されたユーザ名を出力します。未設定の場合「-」が出力されます。 | |
アクセス時刻 | [09/Sep/2015:01:47:22 +0900] |
Web サーバーへアクセスした日時の情報です。後ろの「+0900」はタイムゾーンを表します。日本の場合は +9:00 なので、このように表現されます。 | |
リソース | "GET /css-combinators/ HTTP/1.1" |
どのリソースに、どのプロトコルで、どのようなアクションをしたかを表します。アクセス先の情報「/css-combinators/」を表示する場合、ドメイン情報は出力されません。このログでは、HTTP 1.1 で以下のページを表示するために、情報を取得しにきたと判定できます。 「【CSS】隣接セレクタ 直下セレクタ 間接セレクタの違いをわかりやすく解説!」 | |
ステータス | 200 |
200 は正常終了を表します。有名なコードでは、404 の Not Foud や 500 の Internal Server Error が挙げられます。Web サイト運営者であれば、リダイレクトを示す 301 や 302 もご存知かもしれません。どれも同じ仲間です。 | |
転送量 | 7974 |
アクセスしたリソースに対する転送量です。単位は byte となります。 | |
リファラ | "http://webllica.com/feed-icon-by-html-css/" |
アクセス元の URL を表します。このログから、以下のページから遷移してきたことが分かります。 「フィード(RSS)アイコンを HTML と CSS だけで実装する方法」 | |
ユーザエージェント | "Mozilla/5.0 (Windows NT 6.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36" |
どの OS から、どのブラウザでアクセスしたかを表します。Windows NT 6.0 と出力されているので、Windows Vista もしくは Windows Server 2008 からのアクセスとなります。またブラウザは Chrome からのアクセスであると分かります。検索エンジンの bot からアクセスがあった場合は「Googlebot」のようにエージェント情報に出力されます。 |
アクセスログの構成が分かれば、あとは様々な角度から解析が行えるようになります。まずは、この基本情報をきちんと把握することが大切です。
なお、今回紹介したログのフォーマットは、標準的なフォーマットになります。環境によってはログ設定がいじられて、出力内容が少し異なるケースがあります。その場合は、必ずログ出力に関する仕様書が提示されているはずなので、そちらをご確認ください。
以上、Apache Web サーバーのアクセスログの出力内容に関する説明でした。