mrtgでbindのクエリー推移を出力

  • 投稿日:
  • カテゴリ:
mrtgでbindのクエリー数の推移を表示する方法は、いくつかのサイトで見ることができます。 例えば → 実用 BIND 9で作るDNSサーバ(10):BIND 9の運用情報収集と分析方法 (2/2) - @IT rndcコマンドで「rndc stats」としたときのsuccessとfailureをdnsstats.plを使って、グラフ化するものです。 CentOS5だとこの方法が使えるのですが、CentOS6はいつまでも0です。CentOS 5.11のBINDのバージョンが9.3.6、CentOS 6.6のBINDのバージョンが9.8.2です。どうやらBINDのバージョンが9.6移行の「rndc stats」の出力形式が異なるのが原因のようです。前のバージョンと同じ形式の出力にするために、いろいろ調べてみたのですが、設定ファイルの編集などでは対応できないようです。 BIND9.3.6の出力が
+++ Statistics Dump +++ (1423322807)
success 16524
referral 1
nxrrset 1690
nxdomain 3420
recursion 13345
failure 311
--- Statistics Dump --- (1423322807)
BIND9.8.2の出力が
+++ Statistics Dump +++ (1423221603)
++ Incoming Requests ++
                2382 QUERY
++ Incoming Queries ++
                 567 A
                1783 PTR
                   8 TXT
                  24 AAAA
++ Outgoing Queries ++
[View: default]
                1190 A
                  68 NS
                 352 PTR
                   8 TXT
                  28 AAAA
[View: _bind]
++ Name Server Statistics ++
                2382 IPv4 requests received
                2358 responses sent
                2170 queries resulted in successful answer
                  88 queries resulted in authoritative answer
                2177 queries resulted in non authoritative answer
                   6 queries resulted in nxrrset
                  93 queries resulted in SERVFAIL
                  89 queries resulted in NXDOMAIN
                 559 queries caused recursion
                  24 duplicate queries received
と続いています。 そこで、下のサイトにあるbind96-stats-parse.plを利用します。 Monitoring BIND9 | packetmischief.ca bind96-stats-parse.plを/root/mrtg/に置いたとします。 dnsstats.plの$newstatfileをこのあと変換するファイルを指定します。
my $newstatfile = "/root/mrtg/named_stats.txt";
system("$rndc", "stats"); の後ろに
system("/root/mrtg/bind96-stats-parse.pl < /var/named/data/named_stats.txt > /root/mrtg/named_stats.txt");
と追記します。 if (($foundsuccess == 0) && ($line =~ /^success (\d+)/)) { を
if (($foundsuccess == 0) && ($line =~ /^name_server_statistics:queries_resulted_in_successful_answer=(\d+)/)) {
と変更。 if (($foundfailure == 0) && ($line =~ /^failure (\d+)/)) { を
if (($foundfailure == 0) && ($line =~ /^name_server_statistics:queries_resulted_in_servfail=(\d+)/)) {
と変更。 このdnsstats.plを/etc/mrtg/mrtg.cfgに記述します。
### DNS Server monitor ###
Target[dns-server]: `/root/mrtg/dnsstats.pl`
Title[dns-server]: DNS Server monitor
PageTop[dns-server]: 

DNS Server monitor

Options[dns-server]: growright,noinfo,nopercent,unknaszero,perminute #RouterUptime[dns-server]: public@192.168.0.1 MaxBytes[dns-server]: 32000 AbsMax[dns-server]: 64000 RRDRowCount[dns-server]: 3200 Colours[dns-server]: YELLOW #F9C000,RED #F90000,LIGHT YELLOW #FFFFBB,LIGHT RED #FF8080 ShortLegend[dns-server]:queries/m YLegend[dns-server]: Qs per Minute Legend1[dns-server]: Queries received over 1 minute Legend2[dns-server]: Failed Queries received over 1 minute Legend3[dns-server]: Maximal Queries over 5 minutes Legend4[dns-server]: Maximal Failed Queries over 5 minutes LegendI[dns-server]:  Queries:  LegendO[dns-server]:  Failures: 
以上の設定で、無事にグラフの出力ができました。

リンクソース

  • 記事用リンクソース:
  • Wiki用リンクソース(PukiWiki):
  • Wiki用リンクソース(MediaWiki):
  • SNS投稿用: