Unix和Linux系统日志介绍和详细操作教程

上一章Unix和Linux教程请查看:Unix和Linux系统性能组件和性能工具
在本章中我们将详细讨论Unix中的系统日志记录。Unix系统有一个非常灵活和强大的日志系统,它使你能够记录几乎任何你能想到的东西,然后操作日志来检索你需要的信息。
【Unix和Linux系统日志介绍和详细操作教程】许多Unix版本都提供了一种名为syslog的通用日志记录工具,需要记录信息的各个程序将信息发送到syslog。Unix syslog是一种可配置主机的统一系统日志记录工具,系统使用一个集中的系统日志记录进程,该进程运行程序/etc/syslogd或/etc/syslogd。
系统日志记录器的操作非常简单,程序将它们的日志条目发送到syslogd, syslod会参考配置文件/etc/ syslod .conf或/etc/syslog,当找到匹配的时候,就会将日志消息写入所需的日志文件。
这里有四个基本的系统术语首先需要了解:

编号 术语 & 描述
1 Facility 用于描述提交日志消息的应用程序或进程的标识符,例如邮件、内核和ftp。
2 Priority 信息重要性的指示器。级别在syslog中定义为指导原则,从调试信息到关键事件。
3 Selector 一个或多个设施和水平的组合,当传入的事件与选择器匹配时将执行一个操作。
4 Action 匹配选择器的传入消息会发生什么情况—操作可以将消息写入日志文件、将消息回显到控制台或其他设备、将消息写入登录用户或将消息发送到另一个syslog服务器。
1、syslog工具现在我们将了解syslog工具,以下是用于选择器的可用工具,并不是所有版本的Unix上都提供了所有的功能。
编号 描述
1 auth 与请求名称和密码相关的活动(getty, su, login)
2 authpriv 与auth相同但记录到一个文件,该文件只能被选定的用户读取
3 console 用于捕获通常指向系统控制台的消息
4 cron 来自cron系统调度器的消息
5 daemon 系统全方位守护进程
6 ftp 与ftp守护进程相关的消息
7 kern 内核消息
8 local0.local7 每个站点定义的本地设施
9 lpr 来自行打印系统的消息
10 mail 与邮件系统相关的消息
11 mark 用于在日志文件中生成时间戳的伪事件
12 news 与网络新闻协议(nntp)有关的讯息
13 ntp 与网络时间协议相关的消息
14 user 普通用户进程
15 uucp UUCP子系统
2、syslog优先级下表总结了syslog的优先级:
编号 优先级 & 描述
1 emerg 紧急情况例如即将发生的系统崩溃,通常向所有用户广播
2 alert 应该立即纠正的条件,例如损坏的系统数据库
3 crit 临界状态如硬件错误
4 err 普通错误
5 Warning 警告
6 notice 这不是一个错误,但可能应该以一种特殊的方式来处理
7 info 信息消息
8 debug 调试程序时使用的消息
9 none 用于指定不记录消息的伪级别
功能和级别的组合使你能够识别日志记录的内容和信息的去向。当每个程序将其消息忠实地发送给系统日志记录器时,日志记录器根据选择器中定义的级别来决定跟踪哪些内容和放弃哪些内容。当你指定一个级别时,系统将跟踪该级别及更高级别的所有内容。
3、/etc/syslog.conf文件conf文件控制记录消息的位置,典型的syslog.conf文件可能是这样的:
*.err; kern.debug; auth.notice /dev/console lpr.info/var/log/lpr.log mail.*/var/log/mail.log ftp.*/var/log/ftp.log netinfo.err/var/log/netinfo.log install.*/var/log/install.log *.emerg* *.alert|program_name mark.*/dev/console

文件的每一行包含两个部分:
  • 消息选择器,它指定要记录哪种消息。例如来自内核的所有错误消息或所有调试消息。
  • 一个操作字段,表示应该对消息执行什么操作。例如将其放入文件或将消息发送到用户的终端。
以下是上述配置的注意事项:
  • 消息选择器有两部分:设施和优先级。例如kern.debug选择由内核(设备)生成的所有调试消息(优先级)。
  • 消息选择器kernel .debug选择所有大于debug的优先级。
  • 用星号代替设施或优先级表示“全部”。例如*.debug表示所有调试消息,而kern表示所有调试消息,*表示内核生成的所有消息。
  • 还可以使用逗号来指定多个功能,可以使用分号将两个或多个选择器分组在一起。
4、日志记录操作Action操作字段指定五个操作中的一个:
  • 将消息记录到文件或设备中,例如/var/log/lpr.log或/dev/console. Log
  • 向用户发送消息。你可以用逗号分隔多个用户名如root, user。
  • 向所有用户发送消息。在这种情况下action字段包含一个星号如*。
  • 将消息传送到程序中。在本例中程序是在Unix管道符号(|)之后指定的。
  • 将消息发送到另一台主机上的syslog。在这种情况下action字段由一个主机名组成,主机名前面有一个at符号。
5、logger命令Unix提供了logger命令,这是一个非常有用的命令,用于处理系统日志记录。logger命令将日志消息发送到syslogd守护进程,从而触发系统日志记录。
这意味着我们可以在任何时候从命令行检查syslogd守护进程及其配置。logger命令提供了从命令行向系统日志文件添加单行条目的方法,命令的格式是:
logger [-i] [-f file] [-p priority] [-t tag] [message]...

以下是参数的详细信息:
编号 选项 & 描述
1 -f filename 使用文件名的内容作为要记录的消息。
2 -i 用每一行记录logger进程的进程ID。
3 -p priority 输入具有指定优先级的消息(指定的选择器项); 消息优先级可以指定为数字形式,也可以指定为facility.priority,默认的优先级是user.notice。
4 -t tag 用指定的标记标记添加到日志中的每一行。
5 message 内容按指定顺序连接在一起的字符串参数,用空格分隔。
6、日志轮替日志文件有快速增长和消耗大量磁盘空间的倾向,为了支持日志轮替大多数发行版使用newsyslog或logrotate等工具,应该使用cron守护进程定期调用这些工具。
7、重要的日志位置所有的系统应用程序都在/var/log及其子目录中创建它们的日志文件。下面是一些重要的应用程序及其相应的日志目录:
应用程序 目录
httpd /var/log/httpd
samba /var/log/samba
cron /var/log/
mail /var/log/
mysql /var/log/

    推荐阅读