全国业务电话:
9.8 日志系统
9.8 日志系统
 
  系统日志是操作系统安全事件的重要记录机制。CGSL 操作系统提供了完善的系统日志体系,日志记录内容涵盖常规日志、用户登录日志、用户操作日志、系统性能日志、系统审计日志等,为操作系统安全事件的记录、分析、追踪提供了有力的支撑。
 
9.8.1 定位日志文件
 
  大多数日志文件都位于目录/var/log/目录下。一些应用程序,如 httpd,samba 等,这些应用程序会就在目录/var/log 下生成一个存放对应应用程序日志文件的目录。
 
  在存放日志文件的目录中,我们会注意到每个日志文件后面都有一个数字编号,这些编号是在每个轮换周期结束的时候,有一个脚本或者工具程序更改每个文件的名字,然后把较早的数据向文件链的结尾推。例如,假设某个日志文件的名字叫做 logfile,则它的备份文件可能叫做 logfile.1、logfile.2,依此类推。如果每周轮换一次,并且保存 8 周的数据,那么就会有一个 logfile.8 文件但没有 logfile.9 文件。每周随着 logfile.7 文件覆盖 logfile.8 文件,logfile.8 中原来的数据就没了。由于日志文件在不停得轮转使用,所以每个日志文件都不会很大。日志文件轮转里有一个 cron 守护线程,它能依照/etc/logrotate.conf 配置文件和/etc/logrotate.d/目录下的配置文件在各日志文件之间进行轮转。默认情况下,轮转周期为一周,日志保存周期为 4 周。
 
  大多数日志文件都是文本文件的格式,我们可以直接使用文本阅读器进行查看,例如 Vi、Emaces 工具等。某些日志文件可供系统中的所有用户查看,管理员权限的 root 帐户可以查看绝大多数的日志文件。

9.8.2 重要日志说明
 
  /var/log/messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,可以在 messages 文件中观察它的活动。通常,/var/log/messages 是在做故障诊断时首先要查看的文件。
 
  /var/log/secure 日志是用户登录信息日志文件。它包含用户登录登出信息。
 
  /var/log/maillog 日志是系统的邮件日志。它包含邮件服务器的发送和接收邮件信息。
 
  /var/log/dmesg 日志是系统硬件的日志。
 
  /var/log/mcelog 日志是记录系统运行过程中发现的硬件错误信息,包含内存错误,io 错误等日志。
 
9.8.3 rsyslog
 
  rsyslog 是 CGSL V5 版本默认的日志管理软件,rsyslog 是一个 syslogd 的多线程增强版,它提供了 MySQL 和完全可配置的输出格式(包括大时间戳)的支持。
 
9.8.3.1 rsyslog 配置
 
  rsyslog 的配置文件是</etc/rsyslog.conf>,如下介绍其基本配置。
 
  /etc/rsyslog.conf 根据如下的格式定义规则:
 
    facility.level action  
 
    设备.优先级 动作  
 
  facility.level 字段也被称为 seletor(选择条件),选择条件和动作之间用空格或 tab 分割开。#号开头的是注释,空白行会自动跳过。
 
  ■ facility(设备)
 
  facility 定义日志消息的范围,其可使用的 key 有:
 
  auth -由 pam_pwdb 报告的认证活动
 
  authpriv -包括特权信息如用户名在内的认证活动
 
  cron -与 cron 和 at 有关的计划任务信息
 
  daemon -与 inetd 守护进程有关的后台进程信息
 
  kern -内核信息,首先通过 klogd 传递

  lpr -与打印服务有关的信息
 
  mail -与电子邮件有关的信息
 
  mark - syslog 内部功能用于生成时间戳
 
  news -来自新闻服务器的信息
 
  syslog -由 syslog 生成的信息
 
  user -由用户程序生成的信息
 
  uucp -由 uucp 生成的信息
 
  local0-local7 -与自定义程序使用
 
  * 通配符代表除了 mark 以外的所有功能
 
  ■ level 级别(优先级)
 
  level 定义消息的紧急程度。按严重程度由高到低顺序排列为:
 
  emerg -该系统不可用,等同 panic
 
  alert -需要立即被修改的条件
 
  crit -阻止某些工具或子系统功能实现的错误条件
 
  err -阻止工具或某些子系统部分功能实现的错误条件,等同 error
 
  warning -预警信息,等同 warn
 
  notice -具有重要性的普通条件
 
  info -提供信息的消息
 
  debug -不包含函数条件或问题的其他信息
 
  none -没有重要级,通常用于排错
 
  * 所有级别,除了 none
 
  ■ selector 选择条件
 
  通过小数点符号“.”把 facility 和 level 连接在一起则成为 selector(选择条件)。
 
  可以使用分号“;”同时定义多个选择条件。也支持三个修饰符:
 
  * - 所有日志信息
 
  = - 等于,即仅包含本优先级的日志信息

  ! - 不等于,本优先级日志信息除外
 
  ■ action(动作)
 
  由前面选择条件定义的日志信息,可执行下面的动作:
 
  file-指定日志文件的绝对路径
 
  terminal 或 print -发送到串行或并行设备标志符,例如/dev/ttyS2
 
  @host -远程的日志服务器
 
  username -发送信息本机的指定用户信息窗口中,但该用户必须已经登陆到系统中
 
  named pipe -发送到预先使用 mkfifo 命令来创建的 FIFO 文件的绝对路径
 
  例如:

     
  *.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
 
  #把除邮件、新闻组、授权信息、计划任务等外的所有通知性消息都写入 messages 文件中。
 
  mail,news.=info /var/adm/info
 
  #把邮件、新闻组中仅通知性消息写入 info 文件,其他信息不写入。
 
  mail.*;mail.!=info /var/adm/mail
 
  #把邮件的除通知性消息外都写入 mail 文件中。
 
  mail.=info /dev/tty12
 
  #仅把邮件的通知性消息发送到 tty12 终端设备
 
  *.* @finlandia
 
  #把所有信息都导向到 finlandia 主机(通过/etc/hosts 或 dns 解析其 IP 地址)



















 
♣  提示:默认的配置文件在多数情况下应该可以胜任。如果要进行更细致的定制,请阅读 rsyslog 的手册页。
 
9.8.3.2 设置 rsyslog 接收远程日志
 
  默认情况下,rsyslog 进程是不能接受其他日志服务器发过来的消息的。而通过修改其启动参数,可实现远程日志接收功能。
 
  修改/etc/sysconfig/rsyslog 文件中的 SYSLOGD_OPTIONS 配置,其中:
 
  -r :打开接受外来日志消息的功能;

  -x :关闭自动解析对方日志服务器的 FQDN 信息,这能避免 DNS 不完整所带来的麻烦;
 
  -m :修改 syslog 的内部 mark 消息写入间隔时间(0 为关闭),例如 240 为每隔 240 分钟写入一次“--MARK--”信息;
 
  -c :打开兼容模式
 
  CGSL 默认情况下,/etc/sysconfig/rsyslog 实际配置文件参数为:
 
    SYSLOGD_OPTIONS="-c2 -r -x"  
 
  修改配置并保存后,重启服务即可使其生效:
 
    #systemctl restart rsyslog  
 
  客户机只要通过修改 rsyslog.conf,定义动作为@主机或IP,即可发送日志信息到本服务器中。
 
9.8.4 Logrotate
 
  logrotate 是 CGSL 系统日志的管理工具。它可以轮换,压缩,邮件系统日志文件。默认的 logrotate 被加入 cron 的/etc/cron.daily 中作为每日任务执行。
 
  /etc/logrotate.conf 为其默认配置文件指定每个日志文件的默认规则。/etc/logrotate.d/* 为/etc/logrotate.conf 默认包含目录其中文件也会被 logrotate 读取。指明每个日志文件的特定规则。var/lib/logrotate.status 中默认记录 logrotate 上次轮换日志文件的时间。
 
  logrotate 的配置文件是 /etc/logrotate.conf。主要参数如下表:

  参数
 
  功能描述
 
  compress
 
  通过gzip 压缩转储以后的日志
 
  nocompress
 
  不需要压缩时,用这个参数
 
 copytruncate
 
  用于还在打开中的日志文件,把当前日志备份并截断
 
  nocopytruncate
 
   备份日志文件但是不截断
 
  create mode owner group
 
  转储文件,使用指定的文件模式创建新的日志文件
 
  nocreate
 
  不建立新的日志文件
 
  delaycompress
 
  与compress 一起使用时,转储的日志文件到下一次转储时才压缩
 
  nodelaycompress
 
  覆盖 delaycompress 选项,转储同时压缩。
 
  errors address
 
  专储时的错误信息发送到指定的Email 地址
 
  ifempty
 
  即使是空文件也转储,这个是 logrotate 的缺省选项。
 
  notifempty
 
  如果是空文件的话,不转储
 
  mail address
 
  把转储的日志文件发送到指定的E-mail 地址
 
  missingok
 
  如果日志不存在则忽略该警告信息
 
  nomail
 
  转储时不发送日志文件
 
  olddir directory   转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
 
  noolddir
 
  转储后的日志文件和当前日志文件放在同一个目录下
 
  prerotate/endscript   在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
 
  postrotate/endscript   在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
 
  daily
 
  指定转储周期为每天
 
  weekly
 
  指定转储周期为每周
 
  monthly
 
  指定转储周期为每月
 
  rotate count   指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
 
  tabootext [+] list   不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig .rpmsave size size当日志文件到达指定的大小时才转储,可以指定bytes(缺省)以及K或者M
 
  dateext
 
  使用日期作为命名格式
 
  dateformat   配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数

  CGSL 中 logrotate 缺省的配置如下

    
  # see "man logrotate" for details
 
  # rotate log files weekly
 
  weekly
 
  # keep 4 weeks worth of backlogs
 
  rotate 4
 
  # create new (empty) log files after rotating old ones
 
  create
 
  # use date as a suffix of the rotated file
 
  dateext
 
  # uncomment this if you want your log files compressed
 
  #compress
 
  # RPM packages drop log rotation information into this directory
 
  include /etc/logrotate.d
 
 
  # no packages own wtmp and btmp -- we'll rotate them here
 
  /var/log/wtmp {
 
    monthly
 
    create 0664 root utmp
 
      minsize 1M
 
    rotate 1
 
  }
 
  /var/log/btmp {
 
    missingok
 
    monthly
 
    create 0600 root utmp
 
    rotate 1
 
  }
 
  # system-specific logs may be also be configured here.
 





















































 
  ■ 默认参数解析:

  weekly:指定所有的日志文件每周转储一次
 
  rotate 4:指定转储文件的保留 4 份
 
  create:指定 logrotate 自动建立新的日志文件,新的日志文件具有和原来的文件一样的权限。
 
  dateext:使用日期作为命名格式
 
  include /etc/logrotate.d:选项允许系统管理员把分散到/etc/logrotate.d 目录下几个文件的转储信息,集中到一个主要的配置文件。、
 
  ■为指定的文件配置转储参数:
 
  经常需要为指定文件配置参数,一个常见的例子就是每月转储/var/log/wtmp。为特定文件而使用的参数格式是:

 
  /full/path/to/file
 
  {
 
  option(s)
 
  }







 
  下面的例子就是每月转储/var/log/wtmp 一次:

  
  #Use logrotate to rotate wtmp
 
  /var/log/wtmp
 
  {
 
  monthly
 
  rotate 1
 
  }
 









 
 
  Logrotate 默认是按天执行,任务计划存放在/etc/cron.daily/logrotate 文件里,如果需要修改 logrotate 立即生效,可执行以下命令:
 
    #logrotate /etc/logrotate.conf  

  • 操作系统微信公众号

  • CPI微信公众号

© 2004-2020 广东中兴新支点技术有限公司  版权所有  (www.gd-linux.com)  粤ICP备15061780号-2

新支点OS业务:

QQ客服