第七十三讲——日志系统:syslog 本文共有36634个字,关键词: 根据记录的详细程度可以划分日志的级别,一般来讲不同的日志系统所支持的日志级别是不一样的。 日志的子系统:facility(设施等等) 动作:一是将产生的信息记录到文件,二是将记录的信息发送给其它主机,并由其它主机记录,三是通过管道送给其他命令,由其它命令来进行处理。 linux上的日志系统有:syslog、syslog-ng(g代表第几代next generation) syslog比较古老,在红帽5及以前的版本使用 redhat 6 以后使用的是syslog-ng 我们需要注意的是,在linux上,任何一个程序都可以自己产生日志,自己负责记录,指定记录位置 这样一来,每一个程序的日志记录就会不一样,很难识别其中的内容。于是linux操作系统创建了一个程序,负责记录各程序产生的日志信息,这个程序就是syslog,syslog是一个服务,专门用于提供记录日志的功能,可以为各程序记录日志,每一个程序都可以理解为syslog的子系统,但是一些web服务并不是使用syslog记录日志,因为它们可以定义更具体、更详细、更容易定制的格式。 也就是说,syslog固然是一个接口,但是未必所有人都使用,一般来说系统中常见的固定在系统和欣赏的facility(设施),它们所产生的日志才交由syslog处理。 syslog有两个进程: syslogd:系统,专门记录非内核所产生的日志 klogd:内核,专门记录内核所产生的日志 syslogd与klogd记录的日志详细程度有很大的不同 我们在开机的时候,最先看到的信息是输出到物理终端上的,然后切换到虚拟终端(login界面),ssh登录的为伪终端。 因此:kernel ---->物理终端(/dev/console) kernel在初始化的时候会探测各硬件类型,这些信息都会记录下来,在/var/log/dmesg中查看,我们可以直接#cat /var/log/dmesg文件,也可以直接调用#demesg命令查看。 #cat /var/log/dmesg 记录内核的操作 #dmesg 命令查看 这些为启动init程序之前产生的日志 init启动后所有的记录有syslogd完成,非内核日志。 /var/log/messges: 系统标准错误日志信息 大多数子系统产生的错误日志都存放于该文件当中。 init所产生的信息都在/var/log/messages中,因此在/var/log/messages中并不完全是错误的信息 /var/log/messages文件是记录信息最多的文件,当随着时间的推移,文件会变得越来越大,因此日志文件需要滚动。 日志的滚动:每隔一段时间将一个旧的日志文件更名,并打开一个新的messages进行记录。 日志的滚动可以按照日期进行滚动,也可以按照文件的大小进行滚动,日志的滚动我们也称为日志的切割,可以将日期和文件的大小结合起来使用,即先满足那一个条件就先进行切割。 #logrotate 日志的滚动命令 在/etc/cron.daily/下有一个logrotate脚本 /etc/logratate.conf为logrotate的配置文件。 rotate #(number) #为数字,意为保留几个分割。 在logrotate脚本中,包含了/etc/logrotate.d下的所有的文件,各子系统的定义,如果我们需要进行定义,也可以在/etc/logrotate/目录下参照其他文件来定义日志如何滚动,只需要将配置文件写入相应的目录,无需复杂的脚本。 /var/log/maillog 邮件系统产生的日志信息,邮件由谁发送给谁都有相应的记录。 /var/log/secure 这个文件的权限比较独特,一般不允许随意查看,里面记录了用户登录的所有信息,谁尝试登录过该主机,由哪个主机登录,我们可对此文件进行分析,从而判断是否被入侵。 syslogd和klogd属于进程。 配置文件:centOS 5以前:/etc/syslogconf centOS 6开始:/etc/rsyslog.conf 配置文件的定义格式为: facility(子系统) priority(日志级别) action(动作) facility。可以理解为日志的来源或者设备,目前常用的facility有一下几种: auth 认证相关 authpriv 权限,授权相关 cron 计划任务相关 daemon 守护进程相关 kern 内核相关 lpr 打印相关 mail 邮件相关 mark 标记相关 news 新闻相关 security 安全相关,与auth相似 syslog syslog自己的,即日志系统产生的日志信息 user 用户相关 uucp unix to unix to cp相关 local 0 – local 7 用户自定义 *表示所有的facility priority 日志级别(log level)一般有以下几种级别,由低到高 debug 程序或者系统的调试信息 info 一般信息 notice 不影响正常功能,但是需要注意的信息 warning/warn 可能影响系统功能,需要提醒用户的重要事件 err/error 错误信息 crit 比较严重的 alert 必须马上处理 emerg/oanic 会导致系统不可用 *表示所有的日志级别 none 跟*相反,表示什么也没有,什么都不记录。 从日志的级别可以看出,级别越低记录的信息越详细。 一般来说,我们定义一个日志级别后,比我们定义的级别高的内容都会被记录 action动作,即日志的记录位置 系统上的绝对路径 普通文件,如/var/log/* | 管道,通过管道送给其他命令处理 终端 如/dev/console @HOST 远程主机例如@10.0.0.1 用户 系统用户,如root *登录到系统上的所有用户,一般emerg级别的日志是这样定义的。 定义日志级别的格式: mail.info /var/log/maillog 表示将mail相关的日志级别定义为info,并记录到/var/log/maillog中。 auth.=info @10.0.0.1 只记录info级别的信息,并发送到10.0.0.1主机 user.!=info 表示只记录user相关的info之外的所有信息 user.!error 表示只记录比error级别低的信息 *.info 记录所有可能产生日志子系统info级别以上的信息。 mail.* 表示记录mail级别所产生的所有级别的信息。 cron.info;mail.info 多个日志来源使用分号隔开 cron,mail.info 等价于 cron.info,mail.info mail.*;mail.!=info 表示记录除了info级别外的所有信息。 日志信息是同步写入磁盘的。 重新修改配置文件后不会立即生效,但是重启服务的过程中有日志需要处理rsyslog是接收不到的,我们可以借助一个命令实现不重启服务读取配置文件的信息 #reload service rsyslog reload 向rsyslog程序发送1信号 在/etc/sysconfig/rsyslog中写入 SYSLOGD_OPTION=”-c 5” 我们在引号中加入-r选项可以启用远程日志服务,可以接受其他主机的日志。 buybox中也有klogd/syslogd,因此,我们只需要一个配置文件就可以定义需要记录的日志信息,在redhat系列6.0以后,使用的都是syslog.ng,syslog.ng同syslog的风格不尽相同,但是红帽尽可能的使两者的风格统一。 「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」 赞赏 × 几人行 (๑>ڡ<)☆谢谢老板~ 2元 5元 10元 50元 100元 任意金额 2元 使用微信扫描二维码完成支付 版权声明:本文为作者原创,如需转载须联系作者本人同意,未经作者本人同意不得擅自转载。 给自己讲linux 2017-02-11 评论 2438 次浏览