歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux服務器

探查Linux系統DNS服務器運行狀況

 在Linux環境下,也提供了廣泛流行的BIND服務器,它是構建DNS服務器最常用的服務器軟件。介紹BIND的安裝的文章現在很多,現在我們就一起來談一下維護的話題。我們如何才能夠了解DNS服務器的運行情況下呢,它忙不忙、負載大不大?這一切,對於系統管理員而言,是比較重要的。


 
  想了解DNS服務器的運行狀況,可以通過查看DNS服務器在運行時所產生的日志文件來實現。
 
  BIND 8提供了一些控制日志系統的手段,不過呢,缺省狀態所生成的日志已經夠用了,通過這些日志信息,足以了解DNS服務器現在的運行狀況了。
 
  在缺省情況下,BIND是通過syslog來生成日志的,存放在/var/log/message文件中。
 
  注:與之相關的還有以下四個文件:
 
  /var/log/message.1
 
  /var/log/message.2
 
  /var/log/message.3
 
  /var/log/message.4
 
  其實是將日志分為了5個文件來存儲,防止文件過大,當message文件夠大後,就變成了message.1,原來的message.1就成了message.2……,message.4的內容就消失了。
 
  由於這個文件中的日志信息是syslog生成的,所以不並是全都是關於BIND的日志信息。我們執行以下命令,將所有BIND的日志信息挑選出來:
 
  more /var/log/message grep named >/tmp/named.log
 
  注:BIND服務器的進程名是named.
 
  這樣,/var/log/message中與BIND相關的日志信息都會寫入/tmp/named.log文件中了。最主要的日志有兩種:LOG_NOTICE,LOG_INFO級的日志。
 
  一、 LOG_NOTICE級日志
 
  1.每次啟動BIND服務器named時,會生成一個如下所示的LOG_NOTICE級日志信息:
 
  Nov 28 10:37:45 www named[10134]: starting. named 8.2.2-P3
 
  其中:
 
  Nov 28 10:37:45 表示服務器啟動時間
 
  www 顯示DNS服務器所在機器名
 
  named[10134]: 顯示DNS服務器進程名與進程ID
 
  starting. 表示正在啟動DNS服務器
 
  named 8.2.2-p3 顯示BIND軟件版本
 
  2.當給DNS服務器發送一個HUP信號,使DNS服務器重啟時,會生成一個如下所示的LOG_NOTICE級日志信息:
 
  Nov 28 10:37:45 www named[10134]: reloading nameserver
 
  其中:
 
  Nov 28 10:37:45 表示服務器重啟動時間
 
  www 顯示DNS服務器所在機器名
 
  named[10134]: 顯示DNS服務器進程名與進程ID
 
  reloading. 表示正在重新啟動DNS服務器
 
  nameserver 顯示正在重啟的服務器名
 
  二、LOG_INFO級日志
 
  在DNS服務器運行時,每隔一小時會生成一組如下所示的LOG_INFO級日志信息,反饋DNS服務器的運行狀態:
 
  Dec 26 10:23:52 www named[1033]: Cleaned cache of 26 RRset
 
  Dec 26 10:23:52 www named[1033]: USAGE 977797432 976760631 CPU=6.55u/6.24s CHILD CPU=0u/0s
 
  Dec 26 10:23:52 www named[1033]: NSTATS 977797432 976760631 0=2 A=13192
 
  CNAME=321 PTR=11204 MX=1173 TXT=4 AAAA=32 ANY=4956
 
  Dec 26 10:23:52 www named[1033]: XSTATS 977797432 976760631 RR=7629 RNXD=1368
 
  RFwdR=4836 RDupR=51 RFail=159 RFErr=0 RErr=12 RAXFR=0 RLame=175 ROpts=0
 
  SSysQ=2082 SAns=26234 SFwdQ=4520 SDupQ=1263 SErr=0 RQ=30889 RIQ=4 RFwdQ=0
 
  RDupQ=259 RTCP=2 SFwdR=4836 SFail=6 SFErr=0 SNaAns=21753 SNXD=10276
 
  下面我們就逐句解讀一下:
 
  1. Dec 26 10:23:52 www named[1033]: Cleaned cache of 26 RRset
 
  這是每一組日志信息的第一行,表示正在清空Cache.
 
  其中:
 
  Dec 26 10:23:52 表示日志生成時間
 
  www 顯示DNS服務器所在機器名
 
  named[1033]: 顯示DNS服務器進程名與進程ID
 
  Cleaned cache of 26 RRset 表示正在清除cache
 
  2. Dec 26 10:23:52 www named[1033]: USAGE 977797432 976760631 CPU=6.55u
 
  /6.24s CHILD CPU=0u/0s
 
  這一行是USAGE行,用於統計DNS服務器占用的CPU時間。
 
  其中:
 
  Dec 26 10:23:52 表示日志生成時間
 
  www 顯示DNS服務器所在機器名
 
  named[1033]: 顯示DNS服務器進程名與進程ID
 
  USAGE 行標記
 
  977797432 976760631 977797432-976760631的值就是DNS服務器運行的總秒數
 
  CPU=6.55u/6.24s 代表DNS服務器使用了用戶態6.55秒,系統態6.24秒(u代表user,
 
  s代表system),
 
  CHILD CPU 代表DNS服務器子進程的CPU占用情況
3. Dec 26 10:23:52 www named[1033]: NSTATS 977797432 976760631 0=2 A=13192
 
  CNAME=321 PTR=11204 MX=1173 TXT=4 AAAA=32 ANY=4956
 
  這一行是NSTATS行,用於統計接收到的查詢總數其中:
 


  Dec 26 10:23:52 表示日志生成時間
 
  www 顯示DNS服務器所在機器名
 
  named[1033]: 顯示DNS服務器進程名與進程ID
 
  NSTATS 行標記
 
  977797432 976760631 977797432-976760631的值就是DNS服務器運行的總秒數
 
  0=2 代表未知類型的DNS查詢2個
 
  A=13192 代表A類地址查詢13192個(最標准)
 
  CNAME=321 代表CNAME類地址查詢321個(一般是有些版本的sendmail使用CNAME程序
 
  規范化郵件地址而發出的,還有就是dig或nslookup發出的)
 
  PTR=11204 代表指針查詢11204個(許多軟件通過這種方法來查找IP地址)
 
  MX=1173 代表郵件交換器的查詢1173個(是由郵件發送程序發起的)
 
  TXT=4 代表應用程序進行的文本查詢共有4個
 
  AAAA=32 代表AAAA類查詢32個
 
  ANY=4956 有些Sendmail使用的地址查詢方式,共4956個
 
  注:還有可能有:
 
  NS=xx 代表名字服務器查詢(例如:名字服務器試圖查找根域的服務器)
 
  SOA=xx 代表輔助DNS更新
 
  HINFO=xx 主機信息查詢
 
  NSAP=xx 將域名映射成OSI網絡服務訪問點地址
 
  AXFR=xx 輔助DNS的區傳送
 
  這些在本例中並未出現。
 
  4. Dec 26 10:23:52 www named[1033]: XSTATS 977797432 976760631 RR=7629 RNXD=1368
 
  RFwdR=4836 RDupR=51 RFail=159 RFErr=0 RErr=12 RAXFR=0 RLame=175 ROpts=0 SSysQ=2082
 
  SAns=26234 SFwdQ=4520 SDupQ=1263 SErr=0 RQ=30889 RIQ=4 RFwdQ=0
 
  RDupQ=259 RTCP=2
 
  SFwdR=4836 SFail=6 SFErr=0 SNaAns=21753 SNXD=10276
 
  這是XSTATS行,它用於統計其它一些數據。其中:
 
  Dec 26 10:23:52 表示日志生成時間
 
  www 顯示DNS服務器所在機器名
 
  named[1033]: 顯示DNS服務器進程名與進程ID
 
  NSTATS 行標記
 
  977797432 976760631 977797432-976760631的值就是DNS服務器運行的總秒數
 
  RR=7629 代表收到其它主機的響應共有7629個(DNS向其它機器或進程發出的查詢得到的響應數、與RQ無關)
 
  RNXD=1368 代表收到“沒有這樣的域”回答共有1368個
 
  RFwdR=108 收到對原始查詢的響應為108個
 
  RDupR=51 重復響應51個(當DNS在它懸而未決的查詢列表中,找不到引起該響應的原始查詢時,這個響應就是重復響應)
 
  RFail=159 收到SERVFAIL(遠程服務器錯誤)159個
 
  RFErr=0 沒有收到FORMERR(遠程名字服務器認為本地名字服務器的查詢有格式錯誤)
 
  Rerr=12 收到除了SERVFAIL、FORMERR以外的錯誤12個
 
  RAXFR=0 共有0次區傳送
 
  RLame=175 收到175個壞授權(意味著有的區被授權給其它名字服務器,而這個名字服務器不是這個區的權威)
 
  ROpts=0 共收到帶有IP選項的包的個數為0
 
  SSysQ=2082 共發出系統查詢2082個(系統查詢是由本地名字服務器進行的查詢。大多數都是針對根名字服務器的)
 
  SAns=26234 共回答了查詢26234個
 
  SFwdQ=4520 不在這個名字服務器,而轉發共4520個
 
  SDupQ=1263 重復查詢數1263個
 
  SErr=0 發出的非SERVFAIL、FORMERR的錯誤總數
 
  RQ=30889 收到的查詢共有30889個
 
  RIQ=4 收到反向查詢4個(反向查詢是為了將地址映射為名字,現在這個功能被 PTR實現了。較早的nslookup才使用這種查詢)
 
  RFwdQ=0 沒有需要進一步處理的查詢
 
  RDupQ=259 重復查詢共有259個
 
  RTCP=2 通過TCP連接收到2個查詢(一般使用UDP)
 
  SFwdR=4836 來自其它名字服務器轉發的響應4836個
 
  SFail=6 發出被認為SERVFAIL響應共6個
 
  SFErr=0 發出的被認為FORMERR的響應個數
 
  SNaAns=21753 非權威回答共21753
 
  SNXD=10276 發出沒有這個域回答10276個
 
  這些統計數據都是從DNS開啟後到現在的總統計,而非本小時內的統計數字。如何衡量DNS服務器的負載呢?很簡單,將總查詢數除以DNS運行的總時間,不就知道了嗎?在本例中:DNS服務器已運行了: 977797432-976760631=1036801秒=288小時
 
  注:從第2、3、4行都可以得到
 
  而總查詢請求有: 2+13192+321+11204+1173+4+32+4956=20884次
 
  注:從第2行都可以得到,也就是每小時107次查詢請求,每秒不到2次,可見負載還是比較小的。

Copyright © Linux教程網 All Rights Reserved