在本章中,我们将详细讨论Unix中的系统日志记录.
Unix系统具有非常灵活和强大的日志记录系统,使您能够记录几乎任何您能想象到的内容然后操纵日志以检索所需的信息.
许多版本的Unix提供了一个名为 syslog 的通用日志记录工具.需要记录信息的各个程序,将信息发送到syslog.
Unix syslog 是一个可由主机配置的统一系统日志记录工具.系统使用集中式系统日志记录过程来运行程序/etc/syslogd 或/etc/syslog .
操作系统记录器非常简单.程序将其日志条目发送到 syslogd ,该文件参考配置文件/etc/syslogd.conf 或/etc/syslog ,并在匹配时找到,将日志消息写入所需的日志文件.
有四个基本的syslog术语你应该理解和减去;
Sr.No. | 术语&描述 |
---|---|
1 | Facility 用于描述提交日志消息的应用程序或进程的标识符.例如,mail,kernel和ftp. |
2 | Priority 指示消息的重要性.级别在系统日志中定义为指导,从调试信息到关键事件. |
3 | Selector 一个或多个设施的组合水平.当传入事件与选择器匹配时,将执行操作. |
4 | Action 与选择器匹配的传入消息会发生什么 - 操作可以将消息写入日志文件,将消息回显给控制台或其他设备,将消息写入登录用户,或将消息发送到另一个系统日志服务器. |
现在我们将了解syslog工具.以下是选择器的可用设施.并非所有版本的Unix都存在所有工具.
Facility | 描述 |
---|---|
1 | auth 与请求相关的活动姓名和密码(getty,su,登录) |
2 | authpriv 与auth相同但记录到只能读取的文件由选定的用户 |
3 | console 用于捕获通常定向到系统控制台的消息 |
4 | cron 来自cron系统调度程序的消息 |
5 | daemon 系统da emon catch-all |
6 | ftp 与ftp守护程序相关的消息 |
7 | kern 内核消息 |
8 | local0.local7 每个站点定义的本地设施 |
9 | lpr 来自行式打印系统的消息 |
10 | 与邮件系统有关的消息 |
11 | mark 用于生成时间戳的伪事件在日志文件中 |
12 | news 与网络相关的消息工作新闻协议(nntp) |
13 | ntp 与网络时间协议相关的消息 |
14 | user 常规用户流程 |
15 | uucp UUCP子系统 |
系统日志优先级是总结在下表 :
Sr.No. | 优先级&描述 |
---|---|
1 | emerg 紧急情况,例如即将发生的系统崩溃,通常会向所有用户广播 |
2 | alert 应立即纠正的情况,例如系统数据库损坏 |
3 | crit 严重情况,例如硬件错误 |
4 | err 普通错误 |
5 | Warning 警告 |
6 | notice 不是错误的条件,但可能应以特殊方式处理 |
7 | info 信息性消息 |
8 | debug 调试程序时使用的消息 |
9 | none 用于指定不记录消息的伪等级 |
设施和级别的组合使您能够辨别记录的内容和信息的位置.
当每个程序将其消息尽职地发送到系统记录器时,记录器会做出决定根据选择器中定义的级别跟踪和丢弃的内容.
当您指定级别时,系统将跟踪该级别及更高级别的所有内容.
/etc/syslog.conf 文件控制记录消息的位置.典型的 syslog.conf 文件可能如下所示;
*.err;kern.debug;auth.notice /dev/console daemon,auth.notice /var/log/messages lpr.info /var/log/lpr.log mail.* /var/log/mail.log ftp.* /var/log/ftp.log auth.* @prep.ai.mit.edu auth.* root,amrood netinfo.err /var/log/netinfo.log install.* /var/log/install.log *.emerg * *.alert |program_name mark.* /dev/console
该文件的每一行包含两部分 :
消息选择器,指定要记录的消息类型.例如,来自内核的所有错误消息或所有调试消息.
操作字段,说明应该如何处理信息.例如,将其放在文件中或将消息发送到用户的终端.
以下是上述配置的显着点和减号;
消息选择器包含两部分:设施和优先级.例如, kern.debug 选择内核(工具)生成的所有调试消息(优先级).
消息选择器 kern.debug 选择所有大于调试的优先级.
代替设施或优先级的星号表示"所有".例如, * .debug 表示所有调试消息,而 kern.* 表示内核生成的所有消息.
您还可以使用逗号指定多个设施.可以使用分号将两个或更多选择器组合在一起.
action字段指定五个操作之一 :
将消息记录到文件或设备.例如,/var/log/lpr.log 或/dev/console .
发送给用户的消息.您可以通过用逗号分隔多个用户名来指定它们;例如,root,amrood.
向所有用户发送消息.在这种情况下,action字段由星号组成;例如,*.
将消息传递给程序.在这种情况下,程序在Unix管道符号(|)之后指定.
将消息发送到另一台主机上的syslog.在这种情况下,action字段由一个主机名组成,前面带有一个at符号;例如,@ it1352.com.
Unix提供 logger 命令,这是一个非常有用的命令来处理系统日志记录. logger 命令将日志消息发送到syslogd守护程序,从而引发系统日志记录.
这意味着我们可以随时从命令行进行检查 syslogd 守护程序及其配置. logger命令提供了一种从命令行向系统日志文件添加单行条目的方法.
命令的格式为 :
logger [-i] [-f file] [-p priority] [-t tag] [message] ...
以下是参数的详细信息 :
Sr.No. | Option&描述 |
---|---|
1 | -f filename 使用文件filename的内容作为要记录的消息. |
2 | -i 用每一行记录记录器进程的进程ID. |
3 | -p priority 输入具有指定优先级的消息(指定的选择器条目);消息优先级可以用数字指定,也可以作为facility.priority对指定.默认优先级是user.notice. |
4 | -t tag 使用指定的标记标记添加到日志中的每一行. |
5 | message 字符串参数,其内容按指定顺序连接在一起,以空格分隔. |
你可以使用手册页帮助检查此命令的完整语法.
日志文件具有增长的倾向快速并消耗大量磁盘空间.要启用日志轮换,大多数发行版都使用 newsyslog 或 logrotate 等工具.
应使用 cron守护程序在频繁的时间间隔内调用这些工具.有关详细信息,请查看 newsyslog 或 logrotate 的手册页.
所有系统应用程序都在 /var/log 及其子目录中创建日志文件.以下是一些重要的应用程序及其相应的日志目录 :
应用程序 | 目录 |
---|---|
httpd | /var/log/httpd |
samba | /var/log/samba |
cron | /var/log/ |
/var/log/ | |
mysql | /var/log/ |