磁盘空间打爆以后恢复 journal日志,及用户手册

Systemd日志管理服务:Journald以及重要配置选项  https://www.cnblogs.com/morgan363/p/13957565.html

Linux 日志管理介绍  https://blog.csdn.net/m0_49864110/article/details/129175745

linux下的系统日志管理  https://blog.csdn.net/chitung_hsu/article/details/104301049

journald.conf(5) — Linux manual page  https://www.man7.org/linux/man-pages/man5/journald.conf.5.html

journald.conf 中文手册  https://www.jinbuguo.com/systemd/journald.conf.html

  https://blog.csdn.net/liukuan73/article/details/52484380

===================================

Systemd日志管理服务:Journald以及重要配置选项

  https://www.cnblogs.com/morgan363/p/13957565.html

       Journald是systemd引入的用于收集和存储日志数据的系统服务。它试图使系统管理员可以在越来越多的日志消息中更轻松地找到有趣且相关的信息。为了实现此目标,日记中的主要更改之一是用为日志消息优化的特殊文件格式替换简单的纯文本日志文件。这种文件格式使系统管理员可以更有效地访问相关消息。它还为单个系统带来了数据库驱动的集中日志记录实现的某些功能。

概览systemd-journald系统

Journald系统主要由三个主要的系统日记服务组件组成:

  • 守护程序:systemd日志服务由systemd-journald守护程序处理。
  • 配置文件:日志服务的配置在/etc/systemd/journald.conf里面设置。
  • 日志搜索程序:用于搜索日记日志文件的程序是journalctl。

       本文主要介绍systemd-journald日志相关的重要配置选项:主要包括systemd-journald logrotate和存储类型选择功能。

Journald支持的不同类型的存储

       我们可以通过修改 /etc/systemd/journald.conf文件控制存储类型值,在[Journal]字符串下面可以修改存储类型。

[Journal]
#Storage=auto

Storage支持的值为volatile,persistent,auto和none,默认是auto,所有值的含义如下

  • 如果为volatile,则日志数据将仅存储在内存中,即在 /run/log/journal目录下(根据需要创建)。
  • 如果是persistent,则数据将会存储在磁盘上,即 /var/log/journal目录下,并且在早期引导阶段磁盘不可写的时候把数据保存到 /run/log/journal目录下。
  • auto值意味着把日志数据存储在 /var/log/journal/目录中 (22.04 初始官方默认位置?)。但是该目录必须已经存在并且设置了适当的权限。
    如果不存在,则日记数据将存储在易失性 /run/log/journal/目录中,并且在系统关闭时会删除该数据
  • none 关闭所有存储,所有接收到的日志数据将被丢弃。


对日志文件执行logrotate

       systemd-journald日志文件的logrotate将基于以下值执行:

#SystemMaxUse=
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
#RuntimeMaxUse=
#RuntimeKeepFree=
#RuntimeMaxFileSize=
#RuntimeMaxFiles=100
#MaxRetentionSec=
#MaxFileSec=1month

       这些设置将会限制日志文件的大小上限。 以System开头的选项用于限制磁盘使用量, 也就是  /var/log/journal 的使用量。 以 Runtime开头的选项用于限制内存使用量, 也就是 /run/log/journal 的使用量。

  • RuntimeMaxUse/SystemMaxUse= 控制日志最大可使用多少磁盘空间,然后对日志文件执行systemd-journald logrotate。默认为分配给节点的总物理内存的10%
  • RuntimeKeepFree/SystemKeepFree= 控制systemd-journald将为其他用途保留多少磁盘空间,之后将对日志文件执行systemd-journald logrotate。默认为分配给节点的总物理内存的15%
  • SystemMaxFileSize=/RuntimeMaxFileSize= 限制单个日志文件的最大体积, 到达此限制后日志文件将会自动滚动。 默认值是对应的 SystemMaxUse=/RuntimeMaxUse= 值的1/8 , 这也意味着日志滚动 默认保留7个历史文件。
  • SystemMaxFiles/RuntimeMaxFiles= 限制最多允许同时存在多少个日志文件, 超出此限制后, 最老的日志文件将被删除, 而当前的活动日志文件 则不受影响。 默认值为100个。
  • MaxRetentionSec=日志滚动的时间间隔。通常并不需要使用基于时间的日志滚动策略, 因为由SystemMaxFileSize/RuntimeMaxFileSize= 控制的基于文件大小的日志滚动策略已经可以确保日志文件的大小不会超标。 默认值是一个月, 设为零表示禁用基于时间的日志滚动策略。
  • MaxRetentionSec=日志文件的最大保留期限。 当日志文件的最后修改时间(mtime)与当前时间之差,大于此处设置的值时,日志文件将会被删除。 通常并不需要使用基于时间的日志删除策略。

如果我们检查systemd-journald的状态,那么我们可以看到它的报告日志已轮换:

$ systemctl status systemd-journald
● systemd-journald.service - Journal Service
   Loaded: loaded (/lib/systemd/system/systemd-journald.service; static; vendor preset: enabled)
   Active: active (running) since Sat 2019-11-23 08:34:43 CST; 3 months 14 days ago
     Docs: man:systemd-journald.service(8)
           man:journald.conf(5)
 Main PID: 404 (systemd-journal)
   Status: "Processing requests..."
    Tasks: 1 (limit: 9484)
   CGroup: /system.slice/systemd-journald.service
           └─404 /lib/systemd/systemd-journald

Nov 23 08:34:43 ubuntu systemd-journald[404]: Journal started
Nov 23 08:34:43 ubuntu systemd-journald[404]: Runtime journal (/run/log/journal/0bc1c3fec0b84c47ac1b0ea61a9db220) is 8.0M, max 79.5M, 71.5M free.
Nov 23 08:34:43 ubuntu systemd-journald[404]: Time spent on flushing to /var is 46.023ms for 1754 entries.
Nov 23 08:34:43 ubuntu systemd-journald[404]: System journal (/var/log/journal/0bc1c3fec0b84c47ac1b0ea61a9db220) is 504.0M, max 4.0G, 3.5G free.
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

linux下的系统日志管理

  https://blog.csdn.net/chitung_hsu/article/details/104301049

  1.systemd-journald.service日志采集查看服务

指令:

#journalctl

配置文件:

/etc/systemd/journald.conf

默认日志存放路径:

/run/log/journal

日志在内存中重启会消失

journal常用命令(Linux: systemd)

journalctl --list-boots
journalctl -b
journalctl -p
journalctl -k
journalctl -u ssh.service
journalctl --since yesterday --until now
journalctl -o json-pretty

/etc/systemd/journal.conf

原文链接:https://blog.csdn.net/nakano_azusa/article/details/115793715

补充:

systemctl status systemd-journald

Linux journal日志文件维护

  https://blog.csdn.net/icanflyingg/article/details/126928918

前言

系统空间占用排查过程中,发现 /var/log/journal目录占用空间较大,我们来看一下这个 journal 目录下的文件是否真的可以删除。

journal 目录是什么?

journalctl 用来查询 systemd-journald 服务收集到的日志,是 systemd init 系统提供的收集系统日志的服务。

systemd-journald是一个改进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。

只要你不需要日志进行任何调试,可以删除 /var/log/journal/* 内的所有内容,但不要删除 /var/log/journal目录本身。你应该看看/etc/systemd/journald.conf,有一个设置可以限制系统存储的日志量(下文有介绍),因此旧的日志会被轮换出来。

一、查询 journalctl 消耗了多少磁盘空间

journalctl --disk-usage

root@c190:/var/log# journalctl --disk-usage
Archived and active journals take up 4.3G in the file system.

二、只保留500MB的日志

journalctl --vacuum-size=500M


 三、清理现有的日志到1个周以下

journalctl --vacuum-time=1w

 四、控制 journal 目录大小

修改/etc/systemd/journald.conf中的此参数控制此目录的大小

SystemMaxUse=500M

重新加载配置

systemctl restart systemd-journald

原文链接:https://blog.csdn.net/icanflyingg/article/details/126928918

磁盘空间打爆以后恢复journal日志

  https://cloud-atlas.readthedocs.io/zh-cn/latest/linux/redhat_linux/systemd/journal_recovery_out_of_space.html

遇到一个线上问题,根目录磁盘空间被打爆以后, journal 日志文件损坏了:

  • 检查磁盘硬件应该是正常的,因为能够独立删除 /var/log 目录下文件,并且也能够写文件

  • 但是执行任何 journalctl 命令都会报错 Error was encountered while opening journal files: Input/output error :

无法操作journal日志文件,始终报错

#journalctl --verify
Error was encountered while opening journal files: Input/output error

#journalctl -e
Error was encountered while opening journal files: Input/output error

#journalctl --vacuum-size=10M
Error was encountered while opening journal files: Input/output error

已经手工清理了 /var/log 目录下 的一些 sar 文件,也就是空出了根目录大约几百兆

  • 尝试校验journal日志文件

DEBUG模式校验journal日志文件

SYSTEMD_LOG_LEVEL=debug journalctl --verify

但是还是不行

  • 实在找不出解决的方法,似乎没有 repair 命令参数,所以最后还是清理掉所有历史日志重新开始:

无法修复jouranl日志文件,所以清理掉所有日志重新开始

#journalctl
Error was encountered while opening journal files: Input/output error

#systemctl stop systemd-journald.service
Warning: Stopping systemd-journald.service, but it can still be activated by:
  systemd-journald.socket

#systemctl stop systemd-journald.socket

#rm -f /var/log/journal/0eef22fd6e9d4b3da022179e6b831d26/*

#ls

#systemctl start systemd-journald.service

#ls
system.journal

#journalctl
-- Logs begin at Wed 2023-12-27 21:54:01 CST, end at Wed 2023-12-27 21:54:03 CST. --
Dec 27 21:54:01 gpuxdn033188212154.ea133 systemd-journal[347367]: Permanent journal is using 8.0M (max allowed 4.0G, trying to leave 4.0G free of 4.4G available → current limit 488.5M).
Dec 27 21:54:01 gpuxdn033188212154.ea133 systemd-journald[341770]: Received SIGTERM from PID 1 (systemd).
Dec 27 21:54:01 gpuxdn033188212154.ea133 systemd-journal[347367]: Journal started
Dec 27 21:54:01 gpuxdn033188212154.ea133 polkitd[199757]: Unregistered Authentication Agent for unix-process:347362:2498725326 (system bus name :1.1430, object path /org/freedesktop/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8) (disconnected from bu
Dec 27 21:54:01 gpuxdn033188212154.ea133 admin[347378]: alicmd:root:systemctl start systemd-journald.service:admin pts/0 2023-12-27 21:22 (33.189.253.79)
Dec 27 21:54:02 gpuxdn033188212154.ea133 admin[347542]: alicmd:root:ls:admin pts/0 2023-12-27 21:22 (33.189.253.79)
Dec 27 21:54:03 gpuxdn033188212154.ea133 su[347621]: (to root) root on none
Dec 27 21:54:03 gpuxdn033188212154.ea133 su[347621]: pam_unix(su:session): session opened for user root by (uid=0)
Dec 27 21:54:03 gpuxdn033188212154.ea133 su[347621]: pam_unix(su:session): session closed for user root

参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值