免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 17179 | 回复: 18

[DNS] BIND9详解之日志篇 [复制链接]

论坛徽章:
0
发表于 2003-11-30 16:27 |显示全部楼层
前几天一直有网友询问关于DNS的日志问题。今天我刚好有空,整理了一下分享给大家

在默认情况下,BIND把日志消息写到/var/log/messages文件中,而这些日志消息是非常少的,主要就是启动,关闭的日志记录和一些严重错误的消息,所以要详细记录服务器的运行状况,需要自己配置服务器的日志行为。也就是要在配置文件named.conf中使用logging语句来定制自己所需要的日志记录,logging语句的语法为:
  1. logging {
  2.                 channel <string>; {
  3.                 file <logfile>;;
  4.                         syslog <optional_facility>;;
  5.                 null;
  6.                 stderr;
  7.                         severity <logseverity>;;
  8.                         print-time <boolean>;;
  9.                         print-severity <boolean>;;
  10.                         print-category <boolean>;;
  11.         };
  12.         category <string>; { <string>;; ... };
  13. };
复制代码

在日志中主要有两个概念:通道(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中就可以了):
  1.       logging {
  2.               channel query_log {
  3.                       file "query.log"        versions 3 size 20m;
  4.                       severity        info;
  5.                       print-time        yes;
  6.                       print-category  yes;
  7.               };
  8.               category queries {
  9.                       query_log;
  10.               };
  11.       };
复制代码

这样服务器会在工作目录(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进行写入。

论坛徽章:
0
发表于 2003-12-01 12:14 |显示全部楼层

BIND9详解之日志篇

good

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2003-12-04 09:01 |显示全部楼层

BIND9详解之日志篇

简单明了! 顶一下!

论坛徽章:
0
发表于 2005-05-11 14:26 |显示全部楼层

BIND9详解之日志篇

我按照上面的要求写了,文件是产生了。但是,里面没有日志。什么原因呢。谢谢!

论坛徽章:
0
发表于 2006-01-07 16:54 |显示全部楼层
人品问题!!
:)
开个玩笑。

论坛徽章:
0
发表于 2006-01-07 21:55 |显示全部楼层

回复 4楼 sunnycn 的帖子

no client query?

论坛徽章:
0
发表于 2006-01-08 14:08 |显示全部楼层
不错,不过这样定义之后, named 的  -d 参数好像就不起作用了. 不论 -d 指定的 debug 级别为多少,都只

能看到 debug 1 级别的信息.我也不知道为什么?

[ 本帖最后由 ailms 于 2006-1-8 14:12 编辑 ]

论坛徽章:
0
发表于 2006-12-10 21:58 |显示全部楼层
不错的文章,谢谢!参考中……

论坛徽章:
0
发表于 2006-12-11 11:10 |显示全部楼层
logging {
              channel query_log {
                      file "query.log"        versions 3 size 100m;
                      severity        info;
                      print-time        yes;
                      print-category  yes;
              };
              category queries {
                      query_log;

              };
              category client {
                      query_log;
              };


        };

我的配置文件,但没生成日志,请指教

论坛徽章:
0
发表于 2007-04-23 17:23 |显示全部楼层

回复 1楼 yfhe 的帖子

我的logging配置文件如下:
logging {
channel default_syslog { syslog daemon; severity info; };
channel audit_log { file "/var/log/named.log" versions 3 size 20m; severity info; print-time yes; };

但有2个疑问:
1。设置size 20m,但日志文件却是2G,如下:
      [root@NS4 log]# ll -h named.log*
      -rw-r--r--    1 named    named        939M  4月 23 17:07 named.log
      -rw-r--r--    1 named    named         2.0G  4月 19 15:13 named.log.1
2。以上2文件为什么没有named.log.0,而且/var/log/messages有如下错误:
Apr 23 17:22:26 NS4 named[24734]: unable to rename log file '/var/log/named.log' to '/var/log/named.log.0': permission denied
Apr 23 17:22:27 NS4 named[24734]: unable to rename log file '/var/log/named.log.1' to '/var/log/named.log.2': permission denied

请各位帮我看看,确定原因及如何处理。谢谢!

[ 本帖最后由 gaochong 于 2007-4-23 17:25 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP