6

清理systemd日志

 2 years ago
source link: https://luckymrwang.github.io/2022/09/04/%E6%B8%85%E7%90%86systemd%E6%97%A5%E5%BF%97/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

systemd journal 之于 systemd 犹如 syslog 之于 init,其日志文件保存在 /var/log/journal 目录下。随着时间的流逝,该目录下会积累大量日志文件,占用不少的磁盘空间。如果硬盘容量较小或可用空间紧张,可以考虑清理过期日志释放占用的空间。

本文介绍清理systemd日志的方法。

开启 kubelet 详情日志:

/var/lib/kubelet/kubeadm-flags.env 文件追加 --v=4

KUBELET_KUBEADM_ARGS=--cgroup-driver=cgroupfs --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --v=4

重启 kubelet 服务:

systemctl restart kubelet

清理systemd日志

清理之前,可查看一下 systemd 日志所占用的磁盘空间。既可以用常用的 du 命令:

sudo du -sh /var/log/journal/
# 示例输出
# 3.9G /var/log/journal/

但更推荐使用systemd日志管理专用命令 journalctl

journalctl --disk-usage
# 示例输出
# Archived and active journals take up 3.9G on disk.

知道了日志占用的磁盘空间,接下来便可以清理过期日志。开始之前,建议 rotate 当前日志(rotate是日志操作中的一个术语,其归档旧日志,后续日志写入新创建的日志文件中):

sudo journalctl --rotate

journalctl 提供了三种清理 systemd 日志的方式。第一种是清理指定时间之前的日志:

# 清理7天之前的日志
sudo journalctl --vacuum-time=7d
# 清理2小时之前的日志
sudo journactl --vacuum-time=2h
# 清理10秒之前的日志
sudo journalctl --vacuum-time=10s
# 上述命令示例输出:
# Vacuuming done, freed 3.7G of archived journals on disk.

第二种是限制日志占用的空间大小:

# 限制systemd日志占用不超过1G空间
sudo journalctl --vacuum-size=1G
# 限制systemd日志占用不超过100M
sudo journalctl --vacuum-size=100M
# 输出与第一种类似

第三种是保留日志文件个数:

# 保留最近的5个日志文件
sudo journalctl --vacuum-files=5
# 输出与第一种类似

不知道 journalctl 管理日志功能之前,本人用过 find 配合 exec (或者管道加xargs)的土办法清理过期日志:

# 删除7天前的日志
find /var/log/journal -mtime +7 -exec rm -rf {} \;

一劳永逸的办法

上文介绍的清理systemd日志方法适合一次性手动管理,重复做就没意思了。一劳永逸的办法是配置systemd journal,让其自动管理日志,不占用过多磁盘空间。

方法是编辑 /etc/systemd/journald.conf 文件,对其中的参数进行设置。例如限制日志最大占用1G空间:

[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitInterval=30s
#RateLimitBurst=1000
SystemMaxUse=1G
#SystemKeepFree=
#SystemMaxFileSize=
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=

保存配置文件后记得重新加载:sudo systemctl restart systemd-journald


Recommend

  • 92

    8点1氪 | 银监会将清理整顿现金贷平台;特斯拉全球最大超级充电站在沪正式启用张淇·2017-11-23 00:32根据规划,2018年前,特斯拉计划将在华的超级充电桩数...

  • 93

    北京清理整顿行动影响大量人群

  • 25
    • tlanyan.me 4 years ago
    • Cache

    清理systemd日志 - tlanyan

    systemd journal之于systemd犹如syslog之于init,其日志文件保存在 /var/log/journal 目录下。随着时间的流逝,该目录下会积累大量日志文件,占用不少的磁盘空间。如果硬盘容量较小或...

  • 15

    明明有自动清理,日志还是把我的服务干爆了!-HollisChuang's BlogGitHub 17k Star 的Java工程师成神之路,不来了解一下吗! 本文要介绍的是一个发生在我们线上环境的真实案例,...

  • 3
    • www.lujun9972.win 3 years ago
    • Cache

    使用journalctl查看systemd日志

    systemd-journald.service systemd本身使用 systemd-journald.service 来提供日志服务. 它默认以二进制的格式将日志文件存在 /var/log/journal/ 目录中. ls -R /var/log/journal/

  • 7

    基于 bash find 命令执行 log 日志备份和清理的实践find 作为最基础的 bash shell 命令之一我就不多做介绍了,由于每月压缩后的日志增长量已经超过 20TB,和 PB 相比应该还不算很大,选择的日志归档同步方案是

  • 5
    • segmentfault.com 2 years ago
    • Cache

    linux自动清理Docker标准输出日志

    使用docker logs 查看容器日志太多,非常不方便,每次手动清理很麻烦,写了一个批量清理的shell脚本二、处理方法docker容器的日志都存储在 /data/docker/lib/docker/containers/目录,我们把对应的日志删除即可,这里可以新建一个...

  • 3
    • www.myfreax.com 2 years ago
    • Cache

    如何清除Systemd journald日志

    本快速教程向您展示了两种从Linux系统中清除systemd日志的方法。journald是systemd自己的日志系统。它相当于init 系统中的syslog。它为各种systemd服务收集和存储内核日志数据、系统日志消息、标准输出和错误。具有systemd的Linux机器将日志写入/var/l...

  • 7
    • syxdevcode.github.io 1 year ago
    • Cache

    Sql-Server数据库日志清理

    Sql-Server数据库日志清理 2022-10-12...

  • 5

    Docker 日志自动轮转和清理配置 设置 Docker 日志大小和自动删除旧日志:通过配置 Docker 使用 json-file 日志驱动,同时使用 lo...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK