logresolveコマンドでApacheログのIPアドレスをホスト名に変換する方法

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
「ApacheのアクセスログにIPアドレスが記録されているが、ホスト名で分析したい」
\n「HostnameLookupsをOnにするとパフォーマンスが落ちると聞いたが、後からまとめて変換できないか」
\n
\nこの記事では、logresolveコマンドを使ってApacheのアクセスログに含まれるIPアドレスを一括でホスト名に変換する方法を解説します。
\n\n
【この記事でわかること】
\n・logresolveコマンドはApacheのアクセスログ内のIPアドレスを一括でホスト名に変換する
\n・HostnameLookupsをOnにするパフォーマンス低下を防ぎながらログ解析ができる
\n・-sオプションで名前解決の統計情報を別ファイルに出力できる
\n

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

logresolveコマンドとは

logresolveコマンドは、Apacheに付属するユーティリティコマンドです。
アクセスログに記録されたIPアドレスをDNSで逆引き(PTRレコード検索)し、ホスト名に一括変換します。

Apacheの設定ファイルでHostnameLookupsをOnに設定すると、アクセスのたびに名前解決が実行されるため、Webサーバーのパフォーマンスに影響します。
logresolveを使えば、ログ記録時はIPアドレスのまま高速に処理し、後からまとめてホスト名に変換できます。

logresolveコマンドの基本的な使い方

書式

logresolve [オプション] < 入力ログファイル > 出力ファイル

logresolveは標準入力からログを読み込み、IPアドレスをホスト名に変換した結果を標準出力に出力します。
通常はリダイレクトを使ってファイルから読み込み、ファイルに出力します。

基本的な実行例

IPアドレスで記録されたアクセスログをホスト名変換して別ファイルに出力します。

# access_log_20170705をホスト名変換してresolve_logに出力 # logresolve < access_log_20170705 > resolve_log # 変換結果を確認 # head -5 resolve_log example.com - - [05/Jul/2017:10:12:34 +0900] "GET / HTTP/1.1" 200 1234 host1.example.net - - [05/Jul/2017:10:12:35 +0900] "GET /index.html HTTP/1.1" 200 5678

ログに含まれるIPアドレスが逆引きDNSでホスト名に変換されます。
逆引きできないIPアドレスはそのまま残ります。

-sオプションで統計情報を出力する

-sオプションを使うと、名前解決の実行結果(統計情報)を別ファイルに出力できます。
解決できたIPアドレスの数や失敗した数を確認するのに役立ちます。

# 統計情報をtoukeiファイルに出力しながら変換 # logresolve -s toukei < access_log_20170705 > resolve_log # 統計情報を確認 # cat toukei logresolve Statistics: Entries: 131 With name : 0 Resolves : 75 - No reverse : 16 Cache hits : 56 Cache size : 75

統計情報の各項目の意味は次のとおりです。

Entries:処理したログエントリの総数
With name:最初からホスト名で記録されていたエントリ数
Resolves:名前解決を試みた回数
No reverse:逆引きDNSに対応していなかったIPアドレスの数
Cache hits:同じIPアドレスのキャッシュを再利用した回数(DNS問い合わせ省略)
Cache size:現在のキャッシュに保持されているエントリ数

実務上の注意点

処理時間について

アクセスログが大きい場合、DNSへの問い合わせが多くなるため処理に時間がかかります。
logresolveの実行は、Webサーバーへの負荷が少ない深夜帯や保守時間帯に行うことを推奨します。

逆引きDNSが設定されていない場合

クラウド環境や一般のプロバイダーでは、逆引きDNSが設定されていないIPアドレスが多数あります。
その場合、該当のIPアドレスはホスト名に変換されずそのまま残ります。

プライバシーとセキュリティについて

ホスト名が記録されたログにはユーザーの所属組織や地理的情報が含まれる場合があります。
ログの取り扱いには個人情報保護の観点から注意してください。

apacheresolveとの違い(AWStats連携)

ログ解析ツールのAWStatsでは、logresolveを前処理として使う運用例があります。
AWStatsに渡すログをあらかじめlogresolveでホスト名変換しておくことで、地域別アクセス解析の精度が向上します。

# AWStats用にログを前処理する例 # logresolve < /var/log/httpd/access_log > /tmp/access_log_resolved # awstats.pl -config=mysite -LogFile=/tmp/access_log_resolved

本記事のまとめ

やりたいこと コマンド
ログのIPアドレスをホスト名に変換する logresolve < 入力ログ > 出力ファイル
変換しながら統計情報も出力する logresolve -s 統計ファイル < 入力ログ > 出力ファイル

Apacheログの解析や管理を体系的に学びませんか?

logresolveのような運用ツールを活用するには、Apacheの仕組みとログ管理の基礎が欠かせません。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。