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

摘要:
概览systemd-journald系统Journald系统主要由三个主要的系统日记服务组件组成:守护程序:systemd日志服务由systemd-journald守护程序处理。本文主要介绍systemd-journald日志相关的重要配置选项:主要包括systemd-journaldlogrotate和存储类型选择功能。auto值意味着把日志数据存储在/var/log/journal/目录中。以System开头的选项用于限制磁盘使用量,也就是/var/log/journal的使用量。RuntimeMaxUse/SystemMaxUse=控制日志最大可使用多少磁盘空间,然后对日志文件执行systemd-journaldlogrotate。默认为分配给节点的总物理内存的10%RuntimeKeepFree/SystemKeepFree=控制systemd-journald将为其他用途保留多少磁盘空间,之后将对日志文件执行systemd-journaldlogrotate。

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/目录中。但是该目录必须已经存在并且设置了适当的权限。如果不存在,则日记数据将存储在易失性/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 14days 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 1754entries.
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.

免责声明:文章转载自《Systemd日志管理服务:Journald以及重要配置选项》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇vue父子组件传参之refpython标准库介绍——32 Queue 模块详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

消息队列之 ActiveMQ

简介 ActiveMQ 特点 ActiveMQ 是由 Apache 出品的一款开源消息中间件,旨在为应用程序提供高效、可扩展、稳定、安全的企业级消息通信。 它的设计目标是提供标准的、面向消息的、多语言的应用集成消息通信中间件。ActiveMQ 实现了 JMS 1.1 并提供了很多附加的特性,比如 JMX 管理、主从管理、消息组通信、消息优先级、延迟接收...

K8S 上部署 Redis-cluster 三主三从 集群

介绍 Redis代表REmote DIctionary Server是一种开源的内存中数据存储,通常用作数据库,缓存或消息代理。它可以存储和操作高级数据类型,例如列表,地图,集合和排序集合。 由于Redis接受多种格式的密钥,因此可以在服务器上执行操作,从而减少了客户端的工作量。 它仅将磁盘用于持久性,而将数据库完全保存在内存中。Redis是一种流行的数据...

iOS 各种控件默认高度

1.状态栏 状态栏一般高度为20像素,在打手机或者显示消息时会放大到40像素高,注意,两倍高度的状态栏在好像只能在纵向的模式下使用。如下图   用户可以隐藏状态栏,也可以将状态栏设置为灰色,黑色或者半透明的黑色。   如果需要隐藏状态栏可以使用调用: [[UIApplication sharedApplication] setStatusBarHidde...

钉钉开发系列(十二)机器人

钉钉的每个群都可以建若干个机器人,有默认的比如github,也可以自定义。我们使用自定义,建立自己的机器人,然后得到一串的URL,只要向这个URL进行POST请求后,就能将消息通知到对应的群中。机器人的创建可以参照官方的文档。 发送通知的代码如下 private string WEB_HOOK = "https://oapi.dingtalk.com/...

wParam与lParam的区别

wParam与lParam的区别 lParam 和 wParam 是宏定义,一般在消息函数中带这两个类型的参数,通常用来存储窗口消息的参数。 LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam);wParam 通常用来存储小段信息,如,标志lParam...

C# 委托实例(跨窗体操作控件)

今天研究了一下,在C#里面却是可以不用自定义消息这么复杂的方法来实现跨窗体调用控件,C#有更好的办法就是委托。 效果描述:有两个窗体,FORM1(一个名为“打开form2”的button控件)和FORM2(一个名为“改变form1颜色“的button控件)。启动时,FORM1中点击button控件“打开form2””使FORM2显示出来。点击FORM2中的...