歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> 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/messagegrep 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