Sysklogd系统日志记录器
概述 日志对于系统的重要性不言而喻,比如对于故障诊断和入侵检测,没有日志几乎寸步难行.Linux系统当中最流行的日志记录器是 Sysklogd ,当前最新版本是 1.5 . Sysklogd 日志记录器由两个守护进程(klogd syslogd)和一个配置文件(syslog.conf)组成.klogd 不使用配置文件,它负责截获内核消息,它既可以独立使用也可以作为 syslogd 的客户端运行.syslogd 默认使用 /etc/syslog.conf 作为配置文件,它负责截获应用程序消息,还可以截获 klogd 向其转发的内核消息.支持 internet/unix domain sockets 的特性这两个工具可以用于记录本地和远程的日志. 重要信息 syslogd 守护进程默认情况下并不从 syslog/udp 端口接受任何消息,除非在命令行上使用了"-r"选项.此外,你还应当仔细看看"-l"和"-s"命令行选项. syslogd 守护进程默认情况下并不转发任何来自远程主机的消息,这是为了避免可能导致的日志无限循环."-h"选项可以开启转发功能. syslogd 会剥除来自同一个域范围内的主机中的每条消息中的本地域(local domain)信息.如果你使用了日志分析程序,请将这一特性牢记在心. syslogd 不会更改任何文件的属性,由它创建的文件将是全局可读的.如果你不想这样(比如"auth.*"被进行了记录),你手动事先创建这些文件并设置相应的权限. 如果某些程序发送了大量的日志消息并且导致硬盘非常忙碌,你可以考虑在每一行后面关闭fsync()特性.不过这样可能会导致系统崩溃以后丢失一些日志消息. 如果你使用 init 来直接启动 klogd 或 syslogd ,那么需要在命令行上使用"-n"选项. 如果 System.map 文件存在并且在 klogd 命令行上使用了"-k"的话,那么它可以解码 EIP 地址.这个特性对于诊断系统崩溃非常有用,但是你确保 System.map 文件正确无误. 这两个守护进程都会尝试在收到退出信号时删除他们的 .pid 文件,不过如果系统崩溃或者进程被"kill -9"结束,那么可能就会来不及清理.这样,下次启动时就有可能会获得与以前残留的 .pid 文件中的进程号相同的PID,从而导致无法启动(进程号冲突).解决这个问题的最佳方案是系统的启动脚本(rc.*)自身能够在系统启动的最初就对这些 .pid 文件进行清理(通常是清空 /var/run 目录). 大文件支持(可以写入大于 2 GB 的日志)并不是 syslogd 的功能,而是 glibc 的功能(使用不同的内核API进行调用).要启用大文件支持,你将 Makefile 中的相应注释取消(两个含有"-D_FILE_OFFSET_BITS"的行中的一个). 内核的控制台日志等级 内核的控制台日志等级控制哪些内核消息会在控制台上显示.有两种途径可以修改这个等级,不过建议的途径是通过 sysctl 来控制,通常这个设置位于 /etc/sysctl.conf 中.比如: kernel/printk = 4 4 1 7 安装注意事项 仔细阅读 README 和 man page 会减少你不少痛苦.目前所有文档都已经放在man page中了. 按照你的需求修改 Makefile 然后再进行编译.如果你没有认真对待第一步,那么可能会编译出不合格的二进制程序. FSSTND(Linux文件系统标准)要求二进制文件和其配置文件位于不同的目录.这个包默认情况下遵守FSSTND的约定.你可以通过修改 Makefile 文件和源代码来修改配置文件的位置. 建议让这两个守护进程都以root身份运行,如果你想了解更多安全方面的问题,请阅读 man page . 下面是 Makefile 文件开头的一部分节选,这部分是在安装是可能需要改动的: CC= gcc SKFLAGS= $(RPM_OPT_FLAGS) -O3 -DSYSV -fomit-frame-pointer -Wall -fno-strength-reduce # 启用大文件支持,根据你的系统是32位还是64位进行选择 # -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE # -D_FILE_OFFSET_BITS=64 -D |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |