RHEL7.0日志分析记录

背景

最近一个客户服务老挂,检查服务器,无法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
2
3
4
5
6
7
8
9
10
11
12
13
# journalctl [-nrpf] [--since TIME] [--until TIME] _optional 
选项与参数:
预设会show出全部的log 内容,从旧的输出到最新的日志
-n :show出最近的几行的意思~找最新的日志相当有用
-r :反向输出,从最新的输出到最旧的资料
-p :show出后面所接的日志重要性排序!
-f :类似tail -f 的功能,持续显示journal 日志的内容(即时监测时相当有帮助!)
--since --until:设定开始与结束的时间,让在该期间的资料输出而已
_SYSTEMD_UNIT=unit.service :只输出unit.service 的日志而已
_COMM=bash :只输出与bash 有关的日志
_PID=pid :只输出PID 号码的日志
_UID=uid :只输出UID 为uid 的日志
SYSLOG_FACILITY=[0-23] :使用syslog.h 规范的服务相对序号来呼叫出正确的资料!

例子:

查看特定优先级日志

1
# journalctl -p err

查看特定时间日志

1
# journalctl --since "2017-12-17" --until "2017-12-19"

显示本次启动后日志

1
# journalctl -b [-0/-1/-2] #-0表本次启动信息,-1表上次启动

永久保存记录办法

1
2
3
4
[root@binlv ~]# mkdir /var/log/journal
[root@binlv ~]# chown root:systemd-journal /var/log/journal/
[root@binlv ~]# chmod 2755 /var/log/journal/
[root@binlv ~]# killall -USR1 systemd-journald

注:默认情况下,日志大小不能超过所处文件系统的10%,也不可使所处文件系统空间低于15%。在 /etc/systemd/journald.conf 可进行大小容量上的调节;而在 /etc/logrotate.conf 则定义了那些日志文件记录、怎么记录、记录多少。

参考

© 2019 lvbin's Blog All Rights Reserved.
Theme by hiero