背景
最近一个客户服务老挂,检查服务器,无法ping通且登录界面黑屏,只能强行重启,尝试检查日志发现默认日志为重启删除,坑。
服务器信息
- Red Hat Enterprise Linux Server release 7.0 (Maipo)
日志相关回顾
一般位置:/var/log
常见日志:
/var/log/boot.log
顾名思义,系统启动日志,仅保留本次开机
/var/log/cron
所有
crontab
计划任务日志/var/log/lastlog
记录系统所有账号最后登录信息
/var/log/maillog & /var/log/mail/*
往来邮件日志记录
/var/log/messages
系统重要信息基本都在这,为必看日志
/var/log/secure
凡是需要账号密码的日志都在里面
主要进程服务(daemon)
- systemd-journald.service 7系列版本新增,默认存在内存中,重启即失效,本次日志分析主要用的
- rsyslog.service 记录系统和网络的信息,配置文件
/etc/rsyslog.conf
- logrotate 用于日志自动化处理的服务,配置文件
/etc/logrotate.conf
日志等级
- debug
- info
- notice
- warning(warn)
- err(error) 重大错误信息
- crit
- alert
- emerg(panic)
注:在讯息等级之前还有.[=!] 的连结符号,代表的意思是这样的:
- .:代表『比后面还要严重的等级(含该等级)都被记录下来』的意思,例如: mail.info代表只要是mail的资讯,而且该资讯等级严重于info (含info本身)时,就会被记录下来的意思。
- .=:代表所需要的等级就是后面接的等级而已,其他的不要!
- .!:有点反向选择的感觉,代表忽略大于等于这个等级的讯息!亦即是低于这个等级的才会被纪录的意思!
使用journalctl查看日志
journalctl命令
1 | # journalctl [-nrpf] [--since TIME] [--until TIME] _optional |
例子:
查看特定优先级日志
1 | # journalctl -p err |
查看特定时间日志
1 | # journalctl --since "2017-12-17" --until "2017-12-19" |
显示本次启动后日志
1 | # journalctl -b [-0/-1/-2] #-0表本次启动信息,-1表上次启动 |
永久保存记录办法
1 | [root@binlv ~]# mkdir /var/log/journal |
注:默认情况下,日志大小不能超过所处文件系统的10%,也不可使所处文件系统空间低于15%。在 /etc/systemd/journald.conf 可进行大小容量上的调节;而在 /etc/logrotate.conf 则定义了那些日志文件记录、怎么记录、记录多少。