log文件是记录系统活动信息的几个文件,通过它可以帮助快速定位问题,常见的有
路径/var/log/下 | 用途 |
---|---|
boot.log | 记录开机过程 |
cron | 记录crontab定时任务 |
dmesg | 记录开机时核心监测过程中所产生的信息 |
lastlog | 记录用户上一次登陆的信息 |
maillog或mail | 记录邮件来往信息 |
messages | 记录系统错误信息 |
secure | 记录登陆信息 |
wtmp / faillog | 记录 正确 / 错误 登陆时的账号信息 |
服务rsyslog.service用于记录上述的log文件,而其daemon为rsyslogd,配置文件为 /etc/rsyslog.conf
如上格式为 服务名称.[=!]信息等级 记录位置,如cron的所有等级信息都记录到/var/log/cron.log
rsyslogd通过syslog内的规定来对资料分类,常见的有
服务类别 | 说明 |
---|---|
kernel | kernel产生的信息 |
user | 用户产生的信息 |
邮件有关的信息 | |
daemon | 系统服务产生的信息 |
auth | 认证授权有关的信息 |
syslog | syslogd程序产生的信息 |
等级从小到大为none、debug、info、notice、warning、error、crit、alert、emerg(panic)
服务名称和信息等级的连接符号有 . .= .! ,表示大于/等级/小于(包含)该等级的信息会被记录
这里的记录位置不仅仅是系统内的文件,还可以是设备(打印机)、用户、远程主机
log文件如果一直增加则会越来越大,而有些陈旧的信息也未必还有用,所以需要定期清理和更替log
程序 logrotate 用于对log更替,原理是将旧的log文件移动,并建立一个新的空的文件记录log
如上,文件 /etc/logrotate.conf 是 logrotate 的配置文件,上面表示每周创建空文件更替一次,共保留4个被更替旧文件
/etc/logrotate.conf是默认的更替规则,如上还可对指定文件自定义规则,但未避免/etc/logrotate.conf内容过多,额外有/etc/logrotate.d 放置自定义规则
可通过如下方式在更替前后加入命令
sharedscripts
prerotate
command
endscript
sharedscripts
postrotate
command
endscript
如log文件已设置chattr +a避免其被修改或删除,需要在更替前chattr -a,更替后chattr +a
命令 logrotate [-vf] /etc/logrotate.conf加上参数 -f 可直接进行更替,-v 启动预览模式,会显示更替过程(可查看是否需要更替)
如上是未执行时的时间,执行完 logrotate -f /etc/logrotate.conf后如下,可看到文件已被更替
rsyslog.service在开机后启动并记录log,开机过程中的log则由journald.service记录,其记录在内存中
换句话说journald管理和查询这次开机后的log(一次性的),而rsyslog则记录以前及现在的log(永久的)
命令 journalctl 用于查询systemd-journald.service的资料,不加参数从旧到新列出,-n列出最近几行,-r从新到旧列出,-p按信息等级排序,-f持续显示,–since/–until设置开始/结束时间
如上列出今天的log,journald.service存在于内存(/run/log),若要让其存储到文件,则应该新建/var/log/journal目录
命令 logger [-p service.level] msg 可将资料存储到log文件中
如上,将信息以info等级存储到user的log文件
软件 logwatch 是用于分析log的工具,会每天分析一次log文件,并将资料以email的形式发送给root
如上,安装完后会在cron.daily下,运行后将会收到邮件