連載
» 2003年10月15日 00時00分 公開

実用 BIND 9で作るDNSサーバ(10):BIND 9の運用情報収集と分析方法 (2/2)

[鶴長鎮一,@IT]
前のページへ 1|2       

MRTGによるクエリー数の統計表示

 前回、rndcコマンドを使った統計情報の出力方法を紹介しました。

# /usr/local/sbin/rndc stats

+++ Statistics Dump +++ (1062085004)    #出力開始時間はUNIX System Time(1970年1月1日から経過した秒数)で表示される
success 264     #問い合わせに成功したクエリー数
referral 0      #問い合わせに対し参照となったクエリー数
nxrrset 0       #問い合わせに対するレコード型が存在しなかったクエリー数
nxdomain 5      #問い合わせに対するドメイン名やホスト名が存在しなかったクエリー数
recursion 6     #再帰問い合わせを行ったクエリー数
failure 0       #エラーとなったクエリー数
--- Statistics Dump --- (1062085004)
/var/named/named.stats例

 出力される情報を一見しただけでは、DNSの動作を的確にとらえることはできません。等間隔で「rndc stats」を実行し、単位時間当たりのクエリー数を計算するような統計作業が必要です。cronなどの自動実行ルーチンとPerlなどのスクリプトを組み合わせる手法が考えられますが、ここではもう少し踏み込んで、視覚的にモニタできるようにMRTG()を組み合わせます。

注:MRTGについては、MRTGによるサーバ監視システムの構築でインストール方法や簡単な使用方法を紹介しています。

dnsstats.plによるデータ加工

 MRTGは、SNMPに対応した機器をはじめ、CPUやディスクの使用状況など、およそ管理者が必要とする情報を集積してグラフ化します。MRTGのログフォーマットは比較的簡易であるため、ツールを使った効率的なログ分析術のような非SNMP情報もMRTGデータにインポート可能です。そこで、「rndc stats」で出力されるnamed.statsの情報をMRTGに表示できるように加工します。加工にはdnsstats.pl(http://statusreport.sourceforge.net/)()を使用します。

注:2003年10月時点ではブランクページです。

 dnsstas.plは、named.stats中のsuccess/failureの値からクエリーの総数を抜き出すので、サーバに問い合わせのあったクエリー数の変動を確認できるようになります。

 「rndc stats」の出力をMRTG化するには、ワーキングディレクトリ下にmrtgディレクトリを用意し、DNSクエリーモニタのために必要なMRTGのコンフィグファイルやdnsstats.plファイルを配置します()。

注:httpdとしてApacheがすでにインストールされている必要があります。

# cd /var/named
# mkdir /var/named/mrtg
# cd /var/named/mrtg
注:ここでは/var/named/mrtgを使用します。chrootを使用している場合は、パスを適宜$jailで修正します。

 次にdnsstas.plをhttp://prdownloads.sourceforge.net/statusreport/dnsstats.pl?download からダウンロードし、/var/named/mrtg/dnsstats.plとして保存します。このファイルに実行権を加え、ファイル中の各値を修正します。

# chmod +x dnsstats.pl

my $rndc = "/usr/local/sbin/rndc"; ←rndcのパスを修正
my $newstatfile = "/var/named/named.stats"; ←named.statsの出力先を指定
/var/named/mrtg/dnsstats.pl

MRTGコンフィグファイルの作成

 dnsstats.plファイルが準備できたら、MRTGのコンフィグファイルを作成します。通常のMRTGであればcfgmakerコマンドで自動生成しますが、今回はSNMPポーリングを使用しないため手動で作成する必要があります。作成に当たってはdnsstas.pl中の先頭コメント文が参考になるでしょう。また、MRTGのバージョンによってはほかにも付け加える必要があるものもあります。多くの場合は以下のようになります。

 1  WorkDir: /var/www/html/dnsstats
 2  Language: eucjp
 3  IconDir: /mrtg
 4  Title[dns-server]: DNS Server monitor
 5  PageTop[dns-server]: <H1>DNS Server monitor</H1>
 6  Target[dns-server]: `/var/named/mrtg/dnsstats.pl`
 7  Options[dns-server]: growright,noinfo,nopercent,unknaszero,perminute
 8  RouterUptime[dns-server]: public@127.0.0.1
 9  MaxBytes[dns-server]: 32000
10  AbsMax[dns-server]: 64000
11  #RRDRowCount[dns-server]: 3200
12  Colours[dns-server]: YELLOW #F9C000,RED #F90000,LIGHT YELLOW #FFFFBB, \
13                       LIGHT RED #FF8080
14  ShortLegend[dns-server]:queries/m
15  YLegend[dns-server]: Qs per Minute
16  Legend1[dns-server]: Queries received over 1 minute
17  Legend2[dns-server]: Failed Queries received over 1 minute
18  Legend3[dns-server]: Maximal Queries over 5 minutes
19  Legend4[dns-server]: Maximal Failed Queries over 5 minutes
20  LegendI[dns-server]: &nbsp;Queries:&nbsp;
21  LegendO[dns-server]: &nbsp;Failures:&nbsp;
mrtg.cfg
注:行頭の番号は、説明の便宜上付け加えました。
黄文字dnsstats.pl中では説明されていないが、記述が必須なもの
青文字最低限修正が必要なもの

 「[xxx]」には、識別子を指定します。コンフィグファイル固有であれば、自由に設定可能です。例では「dns-server」とします。

 1〜5行目はdnsstats.plファイル中では説明されていませんが、追加が必要です。1行目には、表示するMRTGグラフのHTMLや画像ファイルを収めるディレクトリを指定します。Apacheのドキュメントディレクトリ下でなければなりません。2行目でContent-Typeの指定とともに、Languageに「eucjp」を指定してHTML中のメッセージを日本語にします。3行目はApacheのデフォルトアイコンを収めるパス指定です。4行目と5行目はそれぞれ、HTMLファイル中の<TITLE>および<H1>タグに埋め込む文字列を指定します。例ではシンプルに、「DNS Server monitor」としています。

 6行目でdnsstas.plをフルパスで指定します。8行目はサーバのアップタイムをSNMPを通して取得するよう、

読み出しSNMPコミュニティ名@サーバアドレス

で指定しています。そのためDNSサーバでsnmpdが起動している必要がありますが、不要であれば「#」でコメントアウトします。11行目はRRDtool(http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/)を使用する場合に必要になるのですが、使用するMRTGのバージョンによってはエラーになるため、例ではコメントアウトしています。

 そのほかについてはdnsstas.plで指定されているとおりにしていますが、グラフの表示色や閾値などをカスタマイズしたい場合は、MRTGによるサーバ監視システムの構築を参照してください。

MRTGグラフの出力

 MRTGのコンフィグファイルが用意できたら、Apacheのドキュメントディレクトリ中に「DNS Server monitor」が展開できるように、先ほどWorkDirで指定したディレクトリを作成してhttpdを起動します。

# mkdir /var/www/html/dnsstats
# /etc/init.d/httpd start

 最後に、mrtg.cfgを基にグラフ生成のためのMRTGログやHTMLコンテンツをmrtgコマンドで作成します。MRTGの定石作業として、mrtgコマンドを続けて2回発行します。

# mrtg /var/named/mrtg/mrtg.cfg
# mrtg /var/named/mrtg/mrtg.cfg

 Webブラウザで、今回作成したURL(http://サーバ名/dnsstats)に接続し、動作を確認してみましょう。

 継続して集計されるように、mrtgコマンドをcrontabに登録します。

*/5 * * * *     mrtg /var/named/mrtg/mrtg.cfg > /dev/null
注:5分置きに再集計する場合。mrtgはフルパス指定が必要な場合もあります。

 MRTGを併用することで、過度の問い合わせ(バースト)の発生や応答クエリー数の上限を超えた要求が継続的に発生していないかを確認するのが、より容易になります。

 DNSの働きはネットワークトラフィックに比例しているため、ネットワークに異常が起きている場合はDNSにも何らかの信号が出ているはずです。普段からクエリー数の変動を把握することで、DNS以外のネットワークの異常検知にも役立ちます。


前のページへ 1|2       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。