Linux: journal日志文件维护

[复制链接]
lele 发表于 2022-10-26 13:26:11 | 显示全部楼层 |阅读模式
本帖最后由 lele 于 2022-10-26 13:34 编辑

Linux: journal日志文件维护


清空 /var/log/journal 文件的方法
1、用echo命令,将空字符串内容重定向到指定文件中
echo "" > system.journal
说明:此方法只会清空一次,一段时间后还要再次手动清空很麻烦,这里可以用以下命令让journalctl 自动维护空间

2、journalctl 命令自动维护文件大小
1)只保留近一周的日志
journalctl --vacuum-time=1w

2)只保留500MB的日志
journalctl --vacuum-size=500M

3)直接删除 /var/log/journal/ 目录下的日志文件
rm -rf /var/log/journal/**



centos7 用system-journal,代替了原来的syslog,并由rsyslog负责写入message等日志文件
systemctl restart systemd-journald.service    ##重启
systemctl status systemd-journald.service     ##查看状态

cat /var/log/messages

随着journal日志文件越来越大,需要优化处理下:
CentOS系统中有两个日志服务,分别是传统的 rsyslog 和 systemd-journal
systemd-journald是一个改进型日志管理服务,可以收集来自内核、系统早期启动阶段的日志、系统守护进程在启动和运行中的标准输出和错误信息,还有syslog的日志。该日志服务仅仅把日志集中保存在单一结构的日志文件/run/log中,由于日志是经历过压缩和格式化的二进制数据,所以在查看和定位的时候很迅速。默认情况下并不会持久化保存日志,只会保留一个月的日志。另外,一些rsyslog无法收集的日志也会被journal记录到。
rsyslog作为传统的系统日志服务,把所有收集到的日志都记录到/var/log/目录下的各个日志文件中。

1 常见的日志文件如下:
/var/log/messages 绝大多数的系统日志都记录到该文件
/var/log/secure 所有跟安全和认证授权等日志都会记录到此文件
/var/log/maillog 邮件服务的日志
/var/log/cron crond计划任务的日志
/var/log/boot.log 系统启动的相关日志

曾经有人说:Linux没有垃圾文件,Windows才有垃圾文件,实际上不是这样的,两者都会有垃圾文件。
操作系统,就是操作各种文件的系统,它不可能没有日志文件,更不可能不产生临时文件,就像剪纸一样,临时产生一些废料是再自然不过的事情。
journalctl 命令自动维护文件大小

查看日志大小
# journalctl --disk-usage

只保留1周日志
journalctl --vacuum-time=1w

journalctl–日志查看
在Systemd出现之前,Linux系统及各应用的日志都是分别管理的,Systemd开始统一管理了所有Unit的启动日志,
systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务,
这样带来的好处是只用一个journalctl命令,就可以查看所有内核和应用的日志。
systemd-journald 服务收集到的日志默认保存在 /run/log 目录中,重启系统会丢掉以前的日志信息。

journalctl 命令格式为:journalctl [OPTIONS…] [MATCHES…]
journalctl 命令的路径为:/bin/journalctl

2 journalctl基本用法
journalctl -h 查看基本用法参数说明;
journalctl [-b] 查看所有日志,默认显示本次启动的所有日志,基本不用,因为太多了;
journalctl -k 查看内核日志;
journalctl -u 查看指定服务的日志;
journalctl --since --until 查看指定时间的日志,时间格式为"2020-05-13 13:14:00";
journalctl -n 指定显示最近的多少行,默认为10行;
journalctl -f 持续监控日志输出;
journal --no-pager 设置不分页显示;
journalctl -p 查看指定级别的日志;
  操作系统提供了从0 (emerg) 到 7 (debug) 一共7个级别的日志,含义如下:
  0: emerg
  1: alert
  2: crit
  3: err
  4: warning
  5: notice
  6: info
  7: debug

journal -o 设置输出格式,支持的各种格式如下:
  cat: 只显示信息字段本身。
  export: 适合传输或备份的二进制格式。
  json: 标准JSON,每行一个条目。
  json-pretty: JSON格式,适合人类阅读习惯。
  json-sse: JSON格式,经过打包以兼容server-sent事件。
  short: 默认syslog类输出格式。
  short-iso: 默认格式,强调显示ISO 8601挂钟时间戳。
  short-monotonic: 默认格式,提供普通时间戳。
  short-precise: 默认格式,提供微秒级精度。
  verbose: 显示该条目的全部可用journal字段,包括通常被内部隐藏的字段。

除了以上参数外,我们可以通过 “FIELD=VALUE” 的格式来匹配具体的日志记录,如_PID=1,也可以指定多个field或相同field的多个值来限制筛选;
日志信息的定义也类似一个实体类型,具体的信息被保存在各个对应的字段中,比如 MESSAGE、MESSAGE_ID、_PID、_UID 、_HOSTNAME、_SYSTEMD_UNIT 等等,
通过 man systemd.journal-fields 查看所有可以用来过滤的字段,对于用来筛选的字段,可以使用-F参数来查看所有可以用来过滤的值,例如 journalctl -F _PID。

维护和配置
journalctl --disk-usage 查看日志占用的磁盘空间;
journalctl --vacuum-size=500M 设置日志占用的空间;
journalctl --vacuum-time=1month 设置日志保存的时间;
上面的一些维护动作,也可以通过配置参数设置,配置文件为/etc/systemd/journald.conf,常用参数如下:
SystemMaxUse=:指定journal所能使用的最高持久存储容量。
SystemKeepFree=:指定journal在添加新条目时需要保留的剩余空间。
SystemMaxFileSize=:控制单一journal文件大小,符合要求方可被转为持久存储。
RuntimeMaxUse=:指定易失性存储中的最大可用磁盘容量(/run文件系统之内)。
RuntimeKeepFree=:指定向易失性存储内写入数据时为其它应用保留的空间量(/run文件系统之内)。
RuntimeMaxFileSize=:指定单一journal文件可占用的最大易失性存储容量(/run文件系统之内)
通过设置上述值,大家可以控制 systemd-journald 服务对服务器空间的消耗及保留方式。


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|RuZhuo ( 鄂ICP备16015978号-8 )

GMT+8, 2024-5-15 18:32 , Processed in 0.039908 second(s), 35 queries .

Powered by RuZhuo

快速回复 返回顶部 返回列表