\n「HostnameLookupsをOnにするとパフォーマンスが落ちると聞いたが、後からまとめて変換できないか」
\n
\nこの記事では、logresolveコマンドを使ってApacheのアクセスログに含まれるIPアドレスを一括でホスト名に変換する方法を解説します。
\n\n
\n・logresolveコマンドはApacheのアクセスログ内のIPアドレスを一括でホスト名に変換する
\n・HostnameLookupsをOnにするパフォーマンス低下を防ぎながらログ解析ができる
\n・-sオプションで名前解決の統計情報を別ファイルに出力できる
\n
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
logresolveコマンドとは
logresolveコマンドは、Apacheに付属するユーティリティコマンドです。アクセスログに記録されたIPアドレスをDNSで逆引き(PTRレコード検索)し、ホスト名に一括変換します。
Apacheの設定ファイルでHostnameLookupsをOnに設定すると、アクセスのたびに名前解決が実行されるため、Webサーバーのパフォーマンスに影響します。
logresolveを使えば、ログ記録時はIPアドレスのまま高速に処理し、後からまとめてホスト名に変換できます。
logresolveコマンドの基本的な使い方
書式
logresolve [オプション] < 入力ログファイル > 出力ファイル
通常はリダイレクトを使ってファイルから読み込み、ファイルに出力します。
基本的な実行例
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アドレスはそのまま残ります。
-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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます