zoukankan      html  css  js  c++  java
  • BIND9详解之日志篇

    在默认情况下,BIND把日志消息写到/var/log/messages文件中,而这些日志消息是非常少的,主要就是启动,关闭的日志记录和一些严重错误的消息,所以要详细记录服务器的运行状况,需要自己配置服务器的日志行为。也就是要在配置文件named.conf中使用logging语句来定制自己所需要的日志记录,logging语句的语法为:
    logging {

             channel ; {

                    file ;;

                     syslog ;;

                    null;

                    stderr;

                     severity ;;

                     print-time ;;

                     print-severity ;;

                     print-category ;;

            };

            category ; { ;; ... };

    };

    在日志中主要有两个概念:通道(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中就可以了):
          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

    另外解释一下“[color=blue]file "query.log" versions 3 size 20m;[/color]”语句中“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进行写入。

  • 相关阅读:
    BGP deterministic-med & compare-med
    BGP Always-compare-med & Deterministic-med
    BGP实验 MED , Cyrus
    BGP Lab AS-path prepend last-as
    详解C/C++中volatile关键字
    38、hashtable中解决冲突有哪些方法?
    37、STL中unordered_map和map的区别和应用场景
    36、set和map的区别,multimap和multiset的区别
    35、STL中map的实现
    34、STL中set的实现?
  • 原文地址:https://www.cnblogs.com/fjping0606/p/4428736.html
Copyright © 2011-2022 走看看