IT猫扑网:您身边最放心的安全下载站! 最新更新| 软件分类| 专题汇总| 手机版

您当前所在位置:IT猫扑网 > 操作系统 > LINUX > Sysklogd系统日志记录器

Sysklogd系统日志记录器

时间:2015-06-28 00:00 来源:IT猫扑网|http://www.itmop.com/ 作者:网管联盟 我要评论(0)

  概述

  日志对于系统的重要性不言而喻,比如对于故障诊断和入侵检测,没有日志几乎寸步难行。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_LARGEFILE64_SOURCE

  # $(shell getconf LFS_SKFLAGS)

  LDFLAGS= -s

  # 指定 install 程序的位置

  INSTALL = /usr/bin/install

  # 安装目录

  BINDIR = $(prefix)/usr/sbin

  MANDIR = $(prefix)/usr/share/man

  # 有bug报告说在一个纯 ELF 系统上需要明确指定连接到 libresolv.a 库。

  # 如果你在连接 syslogd 时失败,可以试一试取消下面的注释。

  # LIBS = /usr/lib/libresolv.a

  # 如果你在 ALPHA 平台上连接失败,可以试一试取消下面的注释。

  # LIBS = ${LIBS} -linux

  # 取消下面的注释可以让 klogd 实现启动延迟,这在 klogd 和 syslogd 并行启动或启动顺序靠的非常近的时候很有用。

  # KLOGD_START_DELAY = -DKLOGD_DELAY=5

  # 下面的定义表示文件位置遵守FSSTND标准。

  FSSTND = -DFSSTND

  # 下面的定义指定了 man page 的宿主和权限。

  MAN_USER = root

  MAN_GROUP = root

  MAN_PERMS = 644

  # 下面的定义指定了 syslogd 守护进程的 .pid 文件名,

  # 源代码(paths.h)中默认的文件名是&syslog.pid&,但很多人认为应当叫&syslogd.pid&。

  # 你可以在这里指定你喜欢的名字。

  SYSLOGD_PIDNAME = -DSYSLOGD_PIDNAME=&syslogd.pid&

  syslog.conf

  syslog.conf 是 syslogd 进程的配置文件,将在程序启动时读取,默认位置是 /etc/syslog.conf 。它指定了一系列日志记录规则。规则的格式如下:

  facility.level    action

  这个配置文件中的空白行和以&#&开头的行将被忽略。&facility.level&部分也被称为选择符(seletor)。 seletor 和 action 之间使用一个或多个空白分隔。

  选择符(seletor)

  选择符由 facility 和 level 两部分组成,之间用一个句点(.)连接。这两部分将在后面 syslogd 小节中详细描述。下面提到的名字和 /usr/include/syslog.h 中的 LOG_-values 相一致。

  facility 指定了产生日志的子系统,可以是下面的关键字之一:

  auth由 pam_pwdb 报告的认证活动。

  authpriv包括私有信息(如用户名)在内的认证活动

  cron与 cron 和 at 有关的信息。

  daemon与 inetd 守护进程有关的信息。

  ftp与 FTP 有关的信息

  kern内核信息,首先通过 klogd 传递。

  lpr与打印服务有关的信息。

  mail与电子邮件有关的信息

  marksyslog 内部功能用于生成时间戳

  news来自新闻服务器的信息

  syslog由 syslog 生成的信息

  user由用户程序生成的信息

  uucp由 uucp 生成的信息

  local0 ~ local7由自定义程序使用,例如使用 local5 做为 ssh 功能

  *通配符代表除了 mark 以外的所有功能

  在大多数情况下,任何程序都可以通过任何 facility 发送日志消息,但是一般都遵守约定俗成的规则。比如,只有内核才能使用&kern& facility 。

  level 指定了消息的优先级,可以是下面的关键字之一(降序排列,严重性越来越低):

  emerg系统不可用

  alert需要立即被修改的条件

  crit阻止某些工具或子系统功能实现的错误条件

  err阻止工具或某些子系统部分功能实现的错误条件

  warning预警信息

  notice具有重要性的普通条件

  info提供信息的消息

  debug不包含函数条件或问题的其他信息

  none没有优先级,通常用于排错

  *除了none之外的所有级别

  facility 部分可以是用逗号(,)分隔的多个子系统,而多个 seletor 之间也可以通过分号(;)组合在一起。需要注意的是,多个组合在一起的选择符,后面的会覆盖前面的,这样就允许从模式中排除一些优先级。

  默认将对指定级别以及更严重级别的消息进行操作,但是可以通过下面2个操作符进行修改。

  等于操作符(=)表示仅对这个级别的消息进行操作,不等操作符(!)表示忽略这个级别以及更严重级别的消息。这两个操作符可以同时使用,不过&!&必须出现在&=&的前面。

  动作(action)

  这个字段定义了对符合条件的消息进行何种操作,可以选择下列操作之一:

  普通文件

  将消息记录到这个文件中,必须使用绝对路径。如果在文件名之前加上减号(-),则表示不将日志信息同步刷新到磁盘上(使用写入缓存),这样可以提高日志写入性能,但是增加了系统崩溃后丢失日志的风险。

  命名管道

  在绝对路径表示的FIFO文件(使用mkfifo命令创建)前加上管道符号(|)即可。通常用于调试。比如:|/usr/adm/debug

  终端或者控制台

  比如:/dev/tty1 或 /dev/console

  远程主机

  syslogd 能够将消息发送到远程主机或从远程主机接收消息,不过默认并不转发接收到的消息。要将消息发送到远程主机,可以在主机名前加一个&@&即可。

  逗号分隔的用户名列表

  critical 级别的消息除了记录到日志之外,通常还转发到root用户。

  所有当前登录的用户

  如果写上一个星号(*)则表示向

关键词标签:Sysklogd,系统日志

相关阅读 安装红帽子RedHat Linux9.0操作系统教程 Tomcat9.0如何安装_Tomcat9.0环境变量配置方法 多种操作系统NTP客户端配置 Linux操作系统修改IP Linux实现SCSI硬盘热插拔及在线识别 Linux下用CDMA modem拨号上网

文章评论
发表评论

热门文章 安装红帽子RedHat Linux9.0操作系统教程 安装红帽子RedHat Linux9.0操作系统教程 Linux服务器:设计高性能网站架构-LLMP Linux服务器:设计高性能网站架构-LLMP 使用Clonezilla迁移到虚拟Linux环境 使用Clonezilla迁移到虚拟Linux环境 Linux上的MRTG流量监控中心 Linux上的MRTG流量监控中心 Linux 双网卡绑定一个IP原理及实现 Linux 双网卡绑定一个IP原理及实现 linux和windows等系统远程控制ubuntu桌面 linux和windows等系统远程控制ubuntu桌面

相关下载

人气排行 Linux下获取CPUID、硬盘序列号与MAC地址 dmidecode命令查看内存型号 linux tc实现ip流量限制 安装红帽子RedHat Linux9.0操作系统教程 linux下解压rar文件 lcx.exe、nc.exe、sc.exe入侵中的使用方法 Ubuntu linux 关机、重启、注销 命令 查看linux服务器硬盘IO读写负载 linux命令行浏览器的使用方法 Linux NFS服务固定端口及防火墙配置 U盘安装Ubuntu 10.04 Linux清除用户登录记录和命令历史方法