ubuntu日志的设置
日志用于帮助系统出错后的排查。在ubuntu server版本中,syslog命令用于设置日志。
设置syslog
ubuntu server中,由syslogd进程处理日志。通过ps命令输出的syslogd进程信息:
syslog 4275 1 0 2008 ? 00:00:02 /sbin/syslogd -u syslog
该进程读取配置文件:
/etc/syslog.conf
该配置文件指定记录哪些日志并记录到哪个位置。比如:日志可以记录到文件或者终端,或者记录一到多个用户登录时刻信息。
该配置文件预定义的设施(facility):
- auth:认证进程相关的主要信息;
- authpriv:见auth;
- cron:与cron和atd进程相关的信息;
- daemon:没有自己日志设施的守护进程用来记录信息;
- kern:所有内核相关日志。记录这些信息,供一个名为辅助进程klogd使用。该进程确保boot期间记录日志。
- lpr:有关打印子系统信息;
- mail:和邮件系统相关的所有内容。特别注意,如果错误的设置该部分,可能记录过多的信息;
- mark:自动周期性的写入日志文件;
- news:所有和新闻服务器相关的事件;
- syslog:syslogd进程内部使用;
- user:用于用户相关的事件;
- uucp:有关遗留的uucp系统的信息;
- local0-7:本地日志设施,用于自定义使用。
每个设施,需要设置特定的优先级(priority),有以下优先级可供使用:
- none:不关联信息;
- debug:只用于排错目的。将记录尽可能多的信息。
- info:记录类别为信息的日志内容。不要将该优先级设置为默认,因为会产生大量的信息。
- notice:记录普通的系统信息。该优先级帮助跟踪根据日期指定的服务。
- warning:该优先级用于大多数服务的默认设置。记录于服务相关的警告。
- err:用于记录中断进程功能的严重的错误。
- crit:记录与程序相关的危险信息。
- alert:记录需要立即操作来保持系统运行的信息。
- emerg:用于系统不在可用情况下记录日志。
以上优先级由上到下递增。
syslog设置的最后部分,是日志的目标(destination)。大多数进程记录默认日志到文件,不过还有其他可能的目标:
- 记录到文件,指定文件的名字。如果估计会产生大量日志信息,可通过连字号“-”指定日志在写日志文件前缓存,这将减少负载,但是如果系统崩溃,缓存无法写入日志文件中。
- 记录到设备,比如记录到控制台。
- 发送警告给已登录的用户。
- 发送日志信息到指定的日志服务器。
- 严重情况下,使用*确保信息立即发送给所有已登录的用户。
默认情况,syslog将日志文件写入到/var/log目录下。一个最重要的日志文件是/var/log/messages。
以下日志文件取决于相关服务是否已经安装:
- apache2:该子目录用于apache的访问和错误日志。
- auth.log:认证事件列表,比如可以看到root用户何时通过了服务器的认证。
- dmesg:内核生成的信息列表,比如,分析内核在启动过程中何时发生了什么。
- faillog:这是二进制文件,包含登录失败的信息,使用faillog命令检查内容。
- mail.*:邮件服务器信息。
- udev:硬件plug-and-play管理器所有事件信息。
其他方式的日志
很多进程使用syslog,但是一些重要的服务有自己的日志设置。比如apache web server使用自己的日志。所以,作为管理员,要仔细查看每个特定服务的日志处理方式。
可以在脚本中使用logger命令,将日志信息直接写入到syslog。
日志文件的轮换
记录日志是好的,但是过多的日志文件可能带来问题。日志文件如果一直增长会填满服务器的硬盘。可以通过设置logrotate服务解决这个问题。它作为每日执行的cron作业。在它的配置文件中,可以设置何时打开新的日志文件,怎样处理旧的日志文件,比如是压缩还是删除。另外,如果压缩,保留多少就的日志文件。
该配置文件为:/etc/logrotate.conf。
默认的文件中设置为:
- 每周创建一个新的日志文件;
- 保留四周的日志文件;
- 使用新的空的日志文件;
- 不压缩;
- 如果压缩,使用bzip2作为压缩命令,bunzip2作为解压缩命令;
- 包含其他日志的配置文件的目录,在/etc/logrotate.d
syslog 4275 1 0 2008 ? 00:00:02 /sbin/syslogd -u syslog
/etc/syslog.conf