BIND日志相关(一)

来源:互联网 发布:惠普x360 pavilion知乎 编辑:程序博客网 时间:2024/04/30 14:38
  对于排除DNS故障来说,日志文件是极其重要的工具,DNS日志可以记录服务器CPU占用时间,查询统计信息以及配置中存在的问题。经常分析日志可以了解服务器的负荷,性能安全性,从而及时采取措施纠正错误。BIND在默认情况下,日志是写到/var/log/messages文件中,由于这个文件是系统中的日志信息由syslog生成,所以不全是BIND的日志,要详细分类BIND的日志,需要修改配置文件named.conf,使用logging语句来定制自己 所需要的日志记录,logging语句的语法为:
logging {
        channel <string>; {
            file <logfile>;;
            syslog <optional_facility>;;
            null;
            stderr;
            severity <logseverity>;;
            print-time <boolean>;;
            print-severity <boolean>;;
            print-category <boolean>;;
       };
       category <string>; { <string>;; ... };
};

在 日志中主要有两个概念:通道(channel)和类别(category)。通道指定了应该向哪里发送日志数据:是发送给syslog,还是写在一个文件里,或是发送给named的标准错误输出,还是发送到位存储桶(bit bucket)。类别则规定了哪些数据需要记录。下面我们主要介绍一下文件通道和类别。

在定义通道的语句中,severity是指定记录消息的级别。在bind中主要有以下几个级别(按照严重性递减的顺序):

critical
error
warning
notice
info
debug [ level ]
dynamic

定义了某个级别后,系统会记录包括该级别以及比该级别更严重的级别的所有消息。比如定义级别为error,则会记录critical和error两个级别 的信息。一般情况下,我们记录到info级别就可以了。print-time是设定在日志中是否需要写入时间,print-severity是设定在日志 中是否需要写入消息级别,print-category是设定在日志中是否需要写入日志类别。

category语句是指定哪一种类别的数据使用哪个或者哪几个已经定义了的通道。在bind9中类别有:

default
default类别匹配所有未明确指定通道的类别,但是不匹配不属于任何类别的消息。这些不属于任何类别的消息属于下面列出的这些类别。
general
包括所有未明确分类的BIND消息。
client
处理客户端请求。
config
配置文件分析和处理。
database
同BIND内部数据库相关的消息,用来存储区数据和缓存记录。
dnssec
处理DNSSEC签名的响应。
lame-servers
发现错误授权。
network
网络操作
notify
异步区变动通知。
queries
查询日志
resolver
名字解析,包括对来自解析器的递归查询的处理。
security
认可/非认可的请求。
update
动态更新事件。
xfer-in
从远程名字服务器到本地名字服务器的区传送。
xfer-out
从本地名字服务器到远程名字服务器的区传送。

例如要记录queries消息,就可以如下配置(把以下语句添加到named.conf中就可以了):
CODE:
   logging {
             channel query_log {
                  file "query.log" versions 3 size 20m;
                  severity info;
                  print-time yes;
                  print-category   yes;
             };
             category queries {
                  query_log;
             };
   };

这样服务器会在工作目录(directory语句所指定的目录,通常为:/var/named)下创建query.log这个文件,并把运行过程产生的queries消息写如到query.log文件中,如下:

Nov    28   16:04:55.516   queries: client 192.168.0.113#32770: query: dns.andy.com IN A

另外解释一下“file "query.log" versions 3 size 20m;”语句中“version”和“size”的意义:

version是指定允许同时存在多少个版本的该文件,比如指定3个版本(version 3),bind9会保存query.log、query.log0、query.log1和query.log2。

Size是指定文件大小的上限,如果只设定了size而没有设定version的话,当文件达到指定的文件大小上限时,服务器停止写入该文件。如果设定了 version的话,服务器会进行循环,比如把query.log变成query.log1,query.log1变成query.log2等,然后建立一个新的query.log进行写入。
 
      DNS日志应该根据实际需要多设置几个通道,将日子信息分类记录,在多看多分析的原则下发现各类问题,以便及时解决。例如:
/var/named/dns-default.log文件发现多条警告信息“Nov 02 15:15:34.647 client:warning 10.2.2.36#1036:no more recursive clients:quota reached” 。通过分析得知BIND客户端数量默认是1000,瞬间请求超过这个值就会出现这个警告,所以修改named.conf。添加语句“recursive-clients 10000”,即解决问题。 

本文出自 “流星 ” 博客,请务必保留此出处http://lsscto.blog.51cto.com/779396/158746

原创粉丝点击