作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210928957081/
相关话题:https://www.cnsre.cn/tags/故障集/
前言
线上服务器磁盘告警
登录服务器检查磁盘发现一个叫做 journal
的文件夹占用了大量空间。
问题分析
Journald是什么
journal
是 centos7
中 systemd
的一个组件,由 journald
处理。捕获系统日志信息、内核日志信息,以及来自原始RAM磁盘的信息,早期启动信息以及所有服务中写入 STDOUT
和 STDERR
数据流的信息。可以说是为 Linux
服务器打造的一种新系统日志方式,这些日志信息写入到二进制文件,使用 journalctl
阅读,默认存放在 /run/log/
下。
Journald系统主要由三个主要的系统日记服务组件组成:
- 守护程序:
systemd
日志服务由 systemd-journald
守护程序处理。
- 配置文件:日志服务的配置在
/etc/systemd/journald.conf
里面设置。
- 日志搜索程序:用于搜索日记日志文件的程序是
journalctl
。
journalctl使用
journalctl 常用命令
1
2
3
4
5
6
7
8
9
10
11
|
journalctl #查看所有日志
journalctl -n 5 #查看最后5条日志
journalctl -p err #查看err类型的日志
journalctl -f #不断输出最后10条日志
journalctl --since today #查看今天的日志
journalctl --since "2021-9-28 08:00:00" --until "2021-9-28 09:00:00"
journalctl -o verbose #查看日志详细信息
journalctl --disk-usage #检查当前journal使用磁盘量
journalctl --vacuum-time=2d #只保存2天的日志
journalctl --vacuum-size=500M #最大500M
journalctl --verify #检查journal是否运行正常以及日志文件是否完整无损坏
|
持久保存日志
由于 journald
默认是保存在内存中,一旦服务器重启,就会丢失,作为生成环境,管理员必须保证系统任何日志不能丢失,通过修改配置文件做持久保存。
同时,systemd-journald.service
的配置文件主要参考 /etc/systemd/journald.conf
的内容,详细的参数可以参考如下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
[Journal]
#日志存储到磁盘
Storage=persistent
#压缩日志
Compress=yes
#为日志添加序列号
Seal=yes
#每个用户分别记录日志
SplitMode=uid
#日志同步到磁盘的间隔,高级别的日志,如:CRIT、ALERT、EMERG 三种总是实时同步
SyncIntervalSec=1m
#即制日志的最大流量,此处指 30s 内最多记录 100000 条日志,超出的将被丢弃
RateLimitInterval=30s
#与 RateLimitInterval 配合使用
RateLimitBurst=100000
#限制全部日志文件加在一起最多可以占用多少空间,默认值是10%空间与4G空间两者中的较小者
SystemMaxUse=64G
#默认值是15%空间与4G空间两者中的较大者
SystemKeepFree=1G
#单个日志文件的大小限制,超过此限制将触发滚动保存
SystemMaxFileSize=128M
#日志滚动的最大时间间隔,若不设置则完全以大小限制为准
MaxFileSec=1day
#日志最大保留时间,超过时限的旧日志将被删除
MaxRetentionSec=100year
#是否转发符合条件的日志记录到本机的其它日志管理系统,如:rsyslog
ForwardToSyslog=yes
ForwardToKMsg=no
#是否转发符合条件的日志到所有登陆用户的终端
ForwardToWall=yes
MaxLevelStore=debug
MaxLevelSyslog=err
MaxLevelWall=emerg
ForwardToConsole=no
#TTYPath=/dev/console
#MaxLevelConsole=info
#MaxLevelKMsg=notice
|
处理过程
知道了这些,就可以轻松的处理这些日志了。
检查当前journal使用磁盘量
1
|
journalctl --disk-usage
|
清理方法可以采用按照日期清理,或者按照允许保留的容量清理,只保存2天的日志,最大500M
1
2
|
journalctl --vacuum-time=2d
journalctl --vacuum-size=500M
|
要启用日志限制持久化配置,可以修改
1
2
3
4
5
6
|
vim /etc/systemd/journald.conf
SystemMaxUse=16M
ForwardToSyslog=no
# 重启
systemctl restart systemd-journald.service
|
检查journal是否运行正常以及日志文件是否完整无损坏
作者:SRE运维博客
博客地址:https://www.cnsre.cn
文章地址:https://www.cnsre.cn/posts/210928957081/
相关话题:https://www.cnsre.cn/tags/故障集/