系统日志
进程和内核都会记录日志,有助于进行故障排除
系统日志保存在
/var/log
目录中,使用
less
和
tail
命令可以查看
RHEL
日志基于
Syslog
协议,
systemd-journald
和
rsyslog
服务处理 syslog 日志
systemd-journald
是日志架构核心,记录几乎所有事件消息并存放到带索引的数据库中,包括内核、引导过程早期的输出;守护进程的标准输出及标准错误等
systemd-journald
默认将日志记录在内存中
rsyslog
从数据库中读取
systemd-journald
的日志,按照配置文件的定义进行存放。rsyslog
对日志按照优先级进行分类存放
日志文件类型
将事件记录到系统
日志记录具有 8 个优先级
/etc/rsyslog.conf 是全局配置文件,/etc/rsyslog.d/*.conf 为个性化配置文件
在 /etc/rsyslog.d/
目录中,可以有多个以 .conf
结尾的文件,每个文件可以包含特定模块或功能的配置。这种方式可以使配置更加清晰,方便管理和维护。
以 /etc/rsyslog.d/*.conf
表示的文件模式意味着匹配 /etc/rsyslog.d/
目录下的所有以 .conf
结尾的文件。
日志文件轮转
logrotate
工具轮转日志文件,防止
/var/log
空间被占满
轮转时,重命名日志文件(添加时间戳),并创建新的日志文件
轮转若干次(默认
4
次),丢弃最旧的日志文件,释放磁盘空间
每天都会计划运行
logrotate
程序,轮转频率依据配置文件定义
分析 syslog 条目
日志文件在末尾显示最新的信息,信息记录采用标准格式,以 /var/log/secure 举例:
1.
日志条目的时间戳
2.
发送信息的主机
3.
发送信息的程序名称和
PID
编号
4.
具体信息
监控日志
使用命令
tail -f /path/to/file 输出指定文件的最后10行,并在新行写入文件时继续输出它们
可以边运行命令,边监控日志
查找事件
systemd-journald
将日志存放在带索引的结构化二进制
journal
文件中,存放在 /run/log
目录中
journalctl
命令可用于检索日志信息,以
root
用户执行对日志具有完全访问权限,普通用户访问可能被限制查看某些消息
error
及以上的日志显示为红色文本
journalctl -n
指定显示最后
10
条日志,也可以指定条目数量
journalctl -f
刷新日志
journalctl -p
debug
、
info
、
notice
、
warning
、
err
、
crit
、
alert
和
emerg
分
别显示该级别及其之上的日志
journalctl --since --until
"YYYY-MM-DDhh:mm:ss” yesterday
、
today
和 tomorrow 可以指定日志时间段
# 列出今天记录中的所有日志条目
# 列出从2019-2-10 20:30:00 到2019-02-13 12:00:00 的所有日志条目
# 列出上一小时的所有条目
journalctl -o verbose
显示更加详细的日志信息
journalctl
配合以下字段,可以搜索特定内容的日志:
_COMM
是命令的名称
_EXE
是进程的可执行文件的路径
_PID
是进程的
PID
_UID
是运行该进程的用户的
UID
_SYSTEMD_UNIT
是启动该进程的
systemd
单元 (环境变量)
#显示PID为1182的sshd.service文件的systemd进程单元相关的所有日志条目
永久保存 system journal
永久保存系统日志
默认情况下,
system journal
保存在内存
/run/log/journal
目录中,系统重启会被清除
修改
/etc/systemd/journald.conf
中
Storage
参数可以设置日志永久保存:
- persistent
:永久保存在
/var/log/journal
目录中
- voltile
:临时保存在
/run/log/journal
目录中
- auto
(默认):如果有
/var/log/journal
目录存在,则永久保存,如果没有则临时保存
日志大小受到轮转机制限制:默认情况下,日志的大小不能超过所处文件系统的 10%
,也不能造成文件系统的可用空间低于
15%
,此值可以在 /etc/systemd/journald.conf 中设置
日志空间占用情况可以参考:
配置文件修改完毕记得
重启 systmed-journald
服务
设置本地时钟和时区
保证系统的准确时间,并及时同步时间非常重要
时间同步采用
NTP
协议
timedatectl
命令显示系统时钟信息
timedatectl list-timezones
可以列出时区数据库,
tzselect
命令可以协助选择正确的时区
timedatectl set-timezone 可以设置时区 timedatectl set-time 可以设置时间
timedatectl set-ntp true | false 命令可开启或禁用 NTP(自动调整时间)
配置和监控 chronyd
chronyd
服务通过与配置的
NTP
服务器进行同步,使通常不准确的本地硬件时钟 (RTC)
保持正确运行。如果没有可用的网络连接,
chronyd
将计算 RTC
的时钟漂移,并记录在
/etc/chrony.conf
配置文件指定的
driftfile 变量中
修改配置后,需要
systemctl restart chronyd
使用 chronyc sources -v 查看是否进行时钟同步包含额外说明的更详细输出