Linux syslog详解

1 什么是syslogd
  syslogd可以简单地被称为记录系统活动的一个daemons。比如可以记录谁,在什么时 间,在哪里,做了什么事情(像是在写记叙文啊);也可以记录您的系统曾经发生过什么事情,比如什么时候重新引导过、软硬件的错误信息等;当然也记录着您系 统上运行着的服务的信息。
  很多时候,有朋友上来就问,“我的X不能启动了是怎么回事啊?!”问号和叹号这样使用在语文规范上是不允许的,但 是我们可以获知,他的心情是急迫的。可是为什么您不先考虑一下您做了什么更改,为什么不先看看是否有错误输出,为什么不看看日志文件?起码,日志为解决问题提供了很好的参考啊。很多人讲自己的某个设备不工作,dmesg的信息您是否认真参考了?
  syslogd做的是琐碎的工作,但却是相当重要的工作。很多朋友为了提高系统的性能,节省那一点点资源就决定把这个daemons停掉。我认为,这是不可取的。
  syslogd记录的日志一般在/var/log/下,当然也有存储在另外的服务器上的。因为syslogd记录的信息实在是太重要了,所以还要涉及日志安全的问题。
  一般系统中日志信息:
  代码:
  
    /var/log/secure:记录系统的安全信息,比如ssh、ftp、pop3等;
    /var/log/wtmp:记录谁曾经登陆过系统,由于本日志被编码过,所以只能用last命令查看;
    /var/log/boot.log: 顾名思义,记录开启或者关闭系统及武夫的信息;
    /var/log/message:系统发生的错误信息都会记录在这个日志中,比如iptables中您使用log功能的日志;
    /var/log/mail:
    /var/log/httpd/
    /var/log/mysqld.d等,记录的就是这些服务的日志。
    
  2 配置syslogd的说明
  2.1 启动syslogd服务
  首先,您要确定您的系统是否运行着这个服务。
  代码:
  servicesyslog status
  
  或者:
  代码:
  ps -aux|grepsyslog
  
  如果您的系统中并没有运行这个服务,您可以打开它。方法很多啦。
  代码:
  
    servicesyslog start
  
   如果您希望系统在下次启动的时候就运行syslogd,您可以在setup中的服务中添加。如果确定您的默认引导级别,比如3,那么您也可以在/etc/rc.d/rc3.d/下添加以 S 开头的软连接。或者,您使用chkconfig 2345 syslogon来添加。
  2.2 syslogd服务的配置文件
  syslogd的配置文件一般在/etc/syslog.conf中。这个文件依然遵循你所见过的其它配置文件的规则,比如 # 是注释。您可以看看您的syslogd都在帮助您记录着什么。这是我的syslog.conf中的一部分:
  引用:
  
  # Log allkernel messages to the console.
  # Loggingmuch else clutters up the screen.
  #kern.*/dev/console
  
  # Loganything (except mail) of level info or higher.
  # Don't logprivate authentication messages!
  *.info;mail.none;authpriv.none;cron.none/var/log/messages
  
  # Theauthpriv file has restricted access.
  authpriv.*/var/log/secure
  
  # Log allthe mail messages in one place.
  mail.*/var/log/maillog
  
  
  # Log cronstuff
  cron.*/var/log/cron
  
  2.3syslog.conf的配置规则
  代码:
  服务名称.信息等级  存放或者显示地点
  
  这个语法很简单呢。呵呵。逐个解释一下。
  
  服务名称
  mail http atcron kern 等等。
  
  信息等级
  代码:
  
    info: 一些提示信息资料;
    notice: 需要您注意的信息;
    warn或者waring: 警告信息;
    上面三个信息虽然是提醒您注意,但是却还没有到错误的情况。下面的信息就要注意了。
    error或者err: 错误信息。您需要仔细检查发生错误的原因了;
    crit: 很严重的错误,到达临界点了;
    alert: 警告! 是否想起了“Red Alert”?不过,在这里这可是相当严重的错误啊;
    emerg或者panic:系统混乱,重做吧;
    
    特别的:
    debug: 将显示很多信息;
    none: 顾名思义,什么信息也不记录。
    
  存放或者显示地点
  代码:
  
    日志的绝对路径: 比如/var/log;
    您的一个用户 ;
    网络上的主机:@log.company.com
    打印机:/dev/lp0
    
  2.4 应用举例
  代码:
  
    mail.info  /var/log/maillog
  
  大于等于info的信息都会写到/var/log/maillog中。
  
  代码:
  
    mail.*;cron.*/var/log/mailcron mail.=warn;cron.=warn /var/log/mailcronwarn
  
  等级为warn的信息,写进/var/log/mailcronwarn,其它的信息写进/var/log/mailcron。
  
  代码:
  
    *.*;mail,cron.none/var/log/message
  
  代码:
  
    *.*;mail.none;cron.none/var/log/message
  
  记录除去mail和cron之外的所有服务的所有信息。
  
  3 syslogd和系统中服务配置中日志的关系
  上面已经说了,syslogd是为系统提供日志服务的。那么,我们在配置文件中定义的日志信息和syslog.conf有什么关系呢?
  或者您也注意到了这段:
  代码:
  
  # Loganything (except mail) of level info or higher.
  # Don't logprivate authentication messages!
  *.info;mail.none;authpriv.none;cron.none        /var/log/messages
  
   这段话是什么意思呢?我认为是在/var/log/messages中记录除去mail、authpriv和cron之外的所有系统信息。也就是说它会记录您自己的http信息。是否这样呢?我自己安装了一个httpd,并且指定日志到另外一个文件,比如/usr/website/log/httplog。我虽然可以在/usr/website/log/httpdlog中看到我的httpd的日志信息,但是我执行
  代码:
  # cat/var/log/messages|grep HTTP
  
  却得到空。
   另外,就这个问题我曾经请教一个朋友。他说syslogd不会记录你没有要求它记录的信息,虽然有上面的*.info但是这个*是不包括你自己的服务 的。我问,那么iptables也没有在我的syslog.conf中要求,那为什么它会记录到/var/log/messages呢?或者是 iptables自己定义了吧。
  所以,关于这段的理解我只有这样的认识。如果有错误,请您指出。
  
  4 什么是logrotate
   logrotate是对日志文件做轮换。就是把现在的log命名为log.1,然后继续写log。如果存在log.1就命名log.1为log.2然后命名log为log.1,依此类推,但并非没有尽头。这个尽头就是您在logrotate的配置文件中的定义,我的系统默认的是到4。那么对log.4做 什么操作呢?删除。
  
  syslogd是daemons方式运行的;
  logrotate是按计划运行的。
  
  5 配置logrotate的说明
  5.1 配置文件的位置
  
  /etc/logrotate.conf
  /etc/logrotate.d
  
   其中,/etc/logrotate.conf是主要配置文件,/etc/logrotate.d中的文件会被/etc/logrotate.conf 读取。如果您在/etc/logrotate.d中的配置文件没有规定具体的参数,则这些参数由/etc/logrotate来决定。
  5.2logrotate的配置规则
   正如在上面5.1中所说的,logrotate的主要配置在/etc/logrotate.conf中设置,而/etc/logrotate.d中的文件是对/etc/logrotate.conf的补充。或者可以看作为了不使/etc/logrotate.conf过大而设置。logrotate的写 法:
  代码:
  
    把logfile(s)写在前面,包含文件的绝对路径,可以使用空白字元分隔多个log,也可以使用统配符置换;用 { } 包含所有设定;一般包括:
    prerotate 在启动 logrotate 之前执行的命令,比如 /usr/bin/charrt -a/var/log/logfile;
    postrotate在执行了 logrotate之后执行的命令,比如/usr/bin/charrt +a /var/log/logfile;
    您可以设定执行如上两个动作,也可以不设定,这依赖于您的需要。
    
    在prerotate与postrotate之间的动作有:
weeky#每个星期执行一次
rotate 4 #保留四个日志
create#logratoe之后再建立日志
compress #rotate之后的日志是否压缩
include /etc/logrotate.d#包含/etc/logrotate.d目录下面的轮换设置
    
  如果您自己在/etc/logrotate.d下写了自己的轮换设置可以使用
  代码:
  logrotate -fyourfile 
  
  来测试。
  
  5.3 鉴于这个文档的设置比较明了所以不在此举例。您可以参考您的/etc/logrotate.conf 和 /etc/logrotate.d 下面的文档看看。

 

 

常见的Linux操作系统登录文件有如下几个:
1)/var/log/secure:记录登录系统存取数据的文件;
例如pop3,ssh,telnet,ftp等都会记录在此.

2)/ar/log/wtmp:记录登录这的信息记录,被编码过,所以必须以last解析;

3)/var/log/message:jihu所有的开机系统发生的错误都会在此记录;

 4)/var/log.boot.log:记录一些开机或者关机启动的一些服务显示的启动或者关闭的信息;

5)/var/log/maillog:记录邮件的存取和往来;

6)/var/log/cron:用来记录crontab这个服务的内容;

7)/var/log/httpd,/var/log/mysqld.log等等文件,记录几个不同的网络服务的记录文件;

8)/var/log/acpid ,   ACPI -Advanced Configuration and Power Interface,表示高级配置和电源管理接口。
后面的 d 表示 deamon 。 acpid 也就是 the ACPI event daemon 。 也就是 acpi 的消息进程。用来控制、获取、管理 acpi 的状态的服务程序。

9)/var/run/utmp 记录着现在登录的用户;
10)/var/log/lastlog 记录每个用户最后的登录信息;
11)/var/log/btmp 记录错误的登录尝试;
12)/var/log/dmesg内核日志;
13)/var/log/cpus CPU的处理信息;
14)/var/log/syslog事件记录监控程序日志;
15)/var/log/auth.log用户认证日志;
16)/var/log/daemon.log系统进程日志;
17)/var/log/mail.err邮件错误信息;
18)/var/log/mail.info邮件信息;
19)/var/log/mail.warn邮件警告信息;
20)/var/log/daemon.log 系统监控程序产生的信息;
21)/var/log/kern 内核产生的信息;
22)/var/log/lpr   行打印机假脱机系统产生的信息;


转载请注明文章转自:良玉的博客 [http://blog.uouo123.com]

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值