Linux日志管理
对运维人员来说,无论管理什么系统,对日志文件的监控、调用、管理都是其中重要的一部分。服务器问题的解决都是从查看系统(错误)日志开始的。本篇文章,我们就来了解一下Linux系统中的日志管理。
日志管理简介
日志简介
系统日志是记录系统硬件检查、内核动作、软件启动、用户动作等各项信息的文件。通过系统日志可以判断系统健康状态、检测系统问题、查找攻击证据等。
Linux系统中的日志服务
较老的系统日志主要由syslog
服务完成,较新的系统中由功能更强的rsyslog
服务代替了syslog
,但两者的操作方法基本相同。
查看日志服务是否开启,使用systemctl
命令查看并启动服务
#查看服务是否启动systemctl list-units | grep rsyslog#若没有启动,则启动服务systemctl start rsyslog.service
常见日志及其作用
Linux的系统日志主要保存在/var/log
目录中,各个主要文件及其作用在下表中列出,
另外,某些系统安装的应用服务默认将日志记录在这个目录下,但不是使用rsyslog
服务管理,应用有自己的日志管理服务。通过源码包安装的应用服务日志记录在其安装目录下
日志文件格式
基本日志格式主要包含四种内容
事件发生时间发生事件的主机名发生事件的服务或程序(或内核),包含进程PID事件内容
日志管理服务 rsyslog 配置
日志管理服务的配置格式
rsyslog
服务的配置文件为/etc/rsyslog.conf
配置文件格式:服务名称[连接符号]日志等级 日志记录位置
其中:
服务名称为系统安装的服务的名称,多个服务名称如果使用同一等级,可用逗号分隔
两个规则之间(主要用于排除情况),使用分号分隔,详见样例
连接符号在下面给出,日志等级也在下面给出
日志记录位置不只是文件绝对路径,有以下方式
日志服务管理的主要服务名称
日志服务配置文件的连接符
日志等级
日志等级从上到下依次变高
另外,.none表示不记录日志,一般在排除情况下使用
日志服务配置举例
auth,authpriv.* /var/log/auth.log #逗号分隔表示两个服务同样等级,都为所有*.*;auth,authpriv.none-/var/log/syslog #所有服务的所有信息,但排除了上面两个服务
日志轮替
如果从一开始的所有记录都记录在一个文件中,势必会造成读写变慢、占用增加,甚至增加由于单个文件损坏导致所有日志丢失的风险。为了解决这个问题,Linux系统采用日志轮替方式,将一段时间以前的记录切割打包到另外的存档文件中,而主日志文件从全新重新开始记录。
日志文件的命名(轮替)规则
如果配置文件中有"dateext"参数,那么日志会用日期来作为文件后缀,日志文件名不会重叠,就不会发生旧文件改名当没有这个参数,日志文件会发生改名。当启用新的文件时例如messages
,旧的文件会改为messages.1
,原来的messages.1
文件会变为messages.2
,以此类推,过早的文件可能会被压缩,超过最大序号的旧文件会被删除。日志轮替的配置文件为/etc/logrotate.conf
,同时具体信息也可以保存在/etc/logrotate.d
目录中,在其中可以设置日志轮替信息,参数具体man logrotate
查看帮助
针对具体文件的设置要用特殊语法包含,例如,
# no packages own wtmp -- we'll rotate it here/var/log/wtmp {missingokmonthlycreate 0664 root utmpminsize 1Mrotate 1}
具体文件名后用大括号包含设置,以下设置仅对一个文件生效。