systemd-journal(四)之systemd-journald.service

文章目录

  • 写在前面
  • 概述
  • 描述
  • 流日志记录(Stream logging)
  • 日志命名空间(Journal Namespaces)
  • 信号 Signals
    • SIGUSR1
    • SIGUSR2
    • SIGRTMIN+1
  • 内核命令行 Kernel Command Line
    • systemd.journald.forward_to_syslog=
    • systemd.journald.forward_to_kmsg=
    • systemd.journald.forward_to_console=
    • systemd.journald.forward_to_wall=
  • 访问控制 Access Control
  • 文件 Files
    • /etc/systemd/journald.conf
    • /dev/kmsg, /dev/log, /run/systemd/journal/dev-log, /run/systemd/journal/socket, /run/systemd/journal/stdout

写在前面

本文主要是详细介绍了systemd-journald.service,主要翻译自英文原文文档(develop版本,截止到文章记录,最新版本是systemd 255)。linux系统服务管理器systemd在日志journal部分的systemd-journald.service。

主要是以下页面的翻译:
https://www.freedesktop.org/software/systemd/man/latest/systemd-journald.service.html#
其他相关文档请参考:systemd专栏
在这里插入图片描述
在这里插入图片描述

概述

systemd-journald.service

systemd-journald.socket

systemd-journald-dev-log.socket

systemd-journald-audit.socket

systemd-journald@.service

systemd-journald@.socket

systemd-journald-varlink@.socket

/usr/lib/systemd/systemd-journald

描述

systemd-journald 是收集和存储日志记录数据的系统服务。

它根据从各种来源收到的日志记录信息创建和维护结构化的索引日志:

  • Kernel log messages, via kmsg
    内核日志消息,通过 kmsg
  • Simple system log messages, via the libc syslog(3) call
    简单的系统日志消息,通过 libc syslog(3) 调用
  • Structured system log messages via the native Journal API, see sd_journal_print(3) and Native Journal Protocol
    通过本机日志 API 的结构化系统日志消息,参见 sd_journal_print(3) 和本机日志协议
  • Standard output and standard error of service units. For further details see below.
    服务单元的标准输出和标准误差。有关详细信息,请参见下文。
  • Audit records, originating from the kernel audit subsystem
    源自内核审计子系统的审计记录

守护程序将以安全且不可伪造的方式隐式收集每个日志消息的大量元数据字段。参见 systemd.journal-fields(7) 来获取有关所收集元数据的更多信息

日志收集的日志数据主要基于文本,但必要时也可以包括二进制数据。

构成日志中存储的日志记录的单个字段的大小可能高达2⁶⁴-1字节。

日志服务将日志数据永久存储在 /var/log/journal 下,或者以易失性的方式存储在 /run/log/journal/ 下(在后一种情况下,日志数据在重新启动时会丢失)。

默认情况下,如果启动期间 /var/log/journal/ 存在,则日志数据将永久存储,否则隐式回退到易失性存储。使用journald.conf(5) 中的Storage= 配置日志数据的放置位置,与/var/log/journal/ 是否存在无关。

请注意,journald 最初将使用易失性存储,直到调用journalctl --flush(或向journald 发送SIGUSR1 )将导致其切换到持久日志记录(在上述条件下)。这是通过“systemd-journal-flush.service” 在启动时自动完成的。

/var/log/journal/ 尚不存在但需要持久日志记录(并且使用默认的 Journald.conf )的系统上,创建目录就足够了,并确保它具有正确的访问模式和所有权:

mkdir -p /var/log/journal
systemd-tmpfiles --create --prefix /var/log/journal

流日志记录(Stream logging)

默认情况下,systemd 服务管理器使用连接到日志的标准输出和标准错误来调用所有服务进程。

此行为可以通过 StandardOutput= 或者StandardError= 单元文件设置进行更改,有关详细信息,请参阅 systemd.exec(5) 。日志将以这种方式接收到的日志字节流转换为单独的日志记录,并在换行符(“\n”,ASCII 10)和 NUL 字节 处分割流。

如果 systemd-journald.service 停止,则与所有服务关联的流连接将终止。服务进一步写入这些流将导致 EPIPE 错误。

为了在这种情况下做出适当的反应,建议记录到标准输出/错误的程序忽略此类错误。

如果 SIGPIPE UNIX 信号处理程序 未被阻止或关闭,此类写入尝试也将导致生成此类进程信号,请参阅 signal(7)

为了缓解此问题,systemd 服务管理器默 认显式关闭所有调用进程的 SIGPIPE 信号 (可以通过IgnoreSIGPIPE= 选项单独更改每个单元的 SIGPIPE 信号,有关详细信息,请参阅 systemd.exec(5) )。

标准输出/标准错误流终止后,它们可能无法恢复,直到与其关联的服务重新启动为止。

请注意,在正常操作期间,systemd-journald.service 在服务管理器中存储这些流的文件描述符的副本。如果使用 systemctl restart 或等效操作而不是一对单独的systemctl stopsystemctl start 命令(或等效操作)重新启动 systemd-journald.service ,则这些流连接不会终止并在重新启动后继续存在。因此,重新启动systemd-journald.service 是安全的,但不建议停止它。

请注意,通过此类标准输出/错误流传输的记录的日志记录元数据反映了最初为其创建流的对等方的元数据。如果将流连接传递到其他进程(例如从主服务进程分叉出来的其他子进程),则日志记录将不会反映其元数据,但将继续描述原始进程。这与上面列出的其他日志记录传输不同,后者本质上是基于记录的,并且元数据始终与单个记录相关联。

目前,将接受的 systemd-journald 并行日志流数量限制为 4096 。当达到此限制时,可能会建立进一步的日志流,但将从一开始就接收 EPIPE

日志命名空间(Journal Namespaces)

日志“命名空间”既是一种机制,用于从逻辑上将包含一个或多个服务的项目的日志流与系统的其余部分隔离开来,也是一种用于提高性能的机制。

多个日志命名空间可以同时存在,每个命名空间都定义自己的独立日志流,由自己的 systemd-journald 实例管理。命名空间在数据存储和IPC 接口 中都是相互独立的。

默认情况下,仅存在一个“默认”命名空间,由 systemd-journald.service (及其关联的套接字单元)管理。

通过启动 systemd-journald@.service 服务模板的实例来创建其他命名空间。

实例名称是命名空间标识符,它是用于引用日志命名空间的短字符串。

可以通过 LogNamespace= 单元文件设置将服务单元分配给特定的日志命名空间,详见 systemd.exec(5)。

journalctl(1) --namespace= 的开关可用于查看特定命名空间的日志流。

如果未使用该开关,则会显示默认命名空间的日志流,例如,来自其他命名空间的log数据不可见。

与特定日志命名空间关联的服务可以通过 syslog(日志的本机日志记录协议)和 stdout/stderr 进行日志记录;所有三个传输的日志记录都与命名空间相关联。

默认情况下,只有默认命名空间会收集内核和审核日志消息。

默认命名空间的systemd-journald 实例是通过 /etc/systemd/journald.conf (见下文)配置的,而其他实例是通过 /etc/systemd/journald@NAMESPACE.conf 配置的。

默认命名空间的日志数据位于 /var/log/journal/MACHINE_ID (见下文),而其他命名空间的数据位于 /var/log/journal/MACHINE_ID.NAMESPACE

信号 Signals

SIGUSR1

请求将日志 /run/ 数据刷新到 /var/ ,以使其持久化(如果启用此功能)。

这必须在挂载 /var/ 后使用,否则无论配置如何,来自 /run/ 的日志数据都不会刷新到 /var/ 。使用journalctl --flush 命令请求刷新日志文件,并等待操作完成。详细信息请参见journalctl(1)

SIGUSR2

请求立即轮换日志文件。使用 journalctl --rotate 命令请求日志文件轮换,并等待操作完成。

SIGRTMIN+1

请求将所有未写入的日志数据写入磁盘。使用 journalctl --sync 命令触发日志同步,并等待操作完成。

内核命令行 Kernel Command Line

在内核命令行上可以覆盖一些 journald.conf 配置参数:

systemd.journald.forward_to_syslog=

启用/禁用将收集的日志消息转发到 syslog

systemd.journald.forward_to_kmsg=

启用/禁用将收集的日志消息转发到 内核日志缓冲区

systemd.journald.forward_to_console=

启用/禁用将收集的日志消息转发到 系统控制台

systemd.journald.forward_to_wall=

启用/禁用将收集的日志消息转发到 wall

访问控制 Access Control

默认情况下,日志文件由“ systemd-journal ” 系统组拥有和读取,但不可写。

因此,将用户添加到此组使他们能够读取日志文件。

默认情况下,每个用户(超出系统用户的UID 动态服务用户nobody 用户 )将在 /var/log/journal/ 获取他们自己的日志文件集合。但是,这些日志文件将不归用户所有,以避免用户可以直接写入它们。相反,文件系统 ACLs 用于确保用户仅获得读取访问权限。

其他用户和组可以通过文件系统访问控制列表 (ACL) 被授予对日志文件的访问权限。发行版和管理员可以选择使用如下命令授予对 “ wheel ” 和 “ adm ” 系统组的所有成员的读取访问权限:

setfacl -Rnm g:wheel:rx,d:g:wheel:rx,g:adm:rx,d:g:adm:rx /var/log/journal/

请注意,此命令将更新现有日志文件和未来在/var/log/journal/ 目录中创建的日志文件的ACL

文件 Files

/etc/systemd/journald.conf

配置 systemd-journald 行为

/run/log/journal/machine-id/*.journal
/run/log/journal/machine-id/*.journal~

/var/log/journal/machine-id/*.journal
/var/log/journal/machine-id/*.journal~

systemd-journald 将记录写入 /run/log/journal/machine-id//var/log/journal/machine-id/ 中带有“.journal” 后缀的文件。如果守护进程不正常停止,或者发现文件已损坏,则会使用“.journal~” 后缀重命名它们,并且 systemd-journald 开始写入新文件。当 /var/log/journal 不可用或在journald.conf(5) 配置文件中设置 Storage=volatile 时,使用 /run/
当停止写入日志文件时 systemd-journald ,它将重命名为“ original-name@suffix.journal ” (或“ original-name@suffix.journal~ ” )。此类文件已“存档”,不会再写入任何内容。

通常,读取或复制任何日志文件(活动或存档)都是安全的。

journalctl(1)sd-journal(3) 库中的函数应该能够读取所有已完全写入的记录。

systemd-journald 将自动删除最早的存档日志文件以限制磁盘使用。参见 SystemMaxUse= journald.conf(5) 中的相关设置。

/dev/kmsg, /dev/log, /run/systemd/journal/dev-log, /run/systemd/journal/socket, /run/systemd/journal/stdout

/dev/kmsg
/dev/log
/run/systemd/journal/dev-log
/run/systemd/journal/socket
/run/systemd/journal/stdout

systemd-journald 将侦听并在文件系统中可见的套接字和其他文件节点路径。除此之外,systemd-journald 还可以使用 netlink(7) 监听审核事件, 这取决于是否启用了 “ systemd-journald-audit.socket ”

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/494153.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Xilinx IDDR及ODDR使用和仿真

平台:Vivado2018 官方相关文档,ug471_7Series_SelectIO.pdf 关于IDDR与ODDR Input DDR Resource(IDDR) 外部的数据在时钟的上下沿同时传输数据,我们可以使用IDDR原语将输入的单bit数据转化为2bit的数据输出。同时数据速率变为原来的二分之一…

gopher伪协议

基础知识 基本格式 基本格式&#xff1a;URL:gopher://<host>:<port>/<gopher-path>web也需要加端口号80gophert协议默认端口为70gopheri请求不转发第一个字符 get请求 问号&#xff08;&#xff1f;)需要转码为URL编码&#xff0c;也就是%3f回车换行要变…

【Linux】进程状态(R运行状态、S睡眠状态、D磁盘休眠状态、T停止状态、X死亡状态)

目录 01.运行状态 02.睡眠状态 03.磁盘睡眠状态 04.停止状态 05.死亡状态 进程的状态会随着操作系统的调度和外部事件的发生而不断地发生转换。例如&#xff0c;一个新创建的进程经过初始化后会进入就绪态&#xff0c;等待被调度执行&#xff1b;当调度器分配处理器资源给…

什么是物联网监控平台?部署物联网平台有什么作用?

随着物联网技术的飞速发展&#xff0c;越来越多的企业开始关注并投入到这一领域。物联网监控平台作为连接物理世界与数字世界的桥梁&#xff0c;正逐渐成为企业数字化转型的关键组件。今天&#xff0c;我们将深入探讨物联网监控平台的定义、部署物联网平台的作用&#xff0c;以…

OSPF-区域间路由计算

一、概述 前面学习了我们学习了Router-LSA和Network-LSA&#xff0c;它们都只能在区域内进行泛洪&#xff0c;而且我们之前一直主要是单区域学习。OSPF的核心是骨干区域Area 0&#xff0c;其它都为非骨干区域。但是在大型网络中&#xff0c;单区域OSPF会存在一定的问题&#xf…

数据处理库Pandas数据结构DataFrame

Dataframe是一种二维数据结构&#xff0c;数据以表格形式&#xff08;与Excel类似&#xff09;存储&#xff0c;有对应的行和列&#xff0c;如图3-3所示。它的每列可以是不同的值类型&#xff08;不像 ndarray 只能有一个 dtype&#xff09;。基本上可以把 DataFrame 看成是共享…

libVLC 视频抓图

Windows操作系统提供了多种便捷的截图方式&#xff0c;常见的有以下几种&#xff1a; 全屏截图&#xff1a;通过按下PrtSc键&#xff08;Print Screen&#xff09;&#xff0c;可以截取整个屏幕的内容。截取的图像会保存在剪贴板中&#xff0c;可以通过CtrlV粘贴到图片编辑工具…

【数据结构和算法初阶(c语言)】二叉树系列oj题目图文详解

目录 1.单值二叉树 2.判断两颗二叉树是否相同 3.二叉树的前序遍历 接口了解 4.判断一棵树是不是另外一棵树的子树 5.判断一棵树是不是对称二叉树 6.二叉树遍历 1.单值二叉树 . - 力扣&#xff08;LeetCode&#xff09; 如果二叉树每个节点都具有相同的值&#xff0c;那么该二…

Pillow教程07:调整图片的亮度+对比度+色彩+锐度

---------------Pillow教程集合--------------- Python项目18&#xff1a;使用Pillow模块&#xff0c;随机生成4位数的图片验证码 Python教程93&#xff1a;初识Pillow模块&#xff08;创建Image对象查看属性图片的保存与缩放&#xff09; Pillow教程02&#xff1a;图片的裁…

uniapp流浪动物救助小程序Java宠物领养小程序springboot

uniapp流浪动物救助小程序Java宠物领养小程序springboot 代码40块&#xff0c;需要的私聊 前台基于uniapp小程序 后台管理基于springbootvue前后端分离项目 开发语言&#xff1a;Java 框架&#xff1a;springboot vue JDK版本&#xff1a;JDK1.8&#xff08;或11&#xf…

Sentinel源码解析

核心源码都在客户端,服务端只是个Dashboard!!! 在服务端配置好规则后,服务端会把规则推到客户端里去【存在客户端内存里】 服务端记录客户端对外提供的一些接口 客户端引用了依赖并启动后,会定时把自己的信息注册到Sentinel服务端去,并且定时发信息保持心跳 主线 注解…

vue2项目设置浏览器标题title及图标logo

工作中肯定会遇到要修改网页的标题title及图标logo 一、固定设置标题方案 方法一&#xff1a;在vue.config.js文件&#xff0c;添加如下代码&#xff1a; chainWebpack: config > {// 配置网页标题config.plugin(html).tap((args) > {args[0].title 标题return args})…

CV领域 交叉注意力(Cross Attention)中QKV的含义理解

交叉注意力公式&#xff1a; 注意力的输入&#xff1a; &#xff08;1&#xff09;KV&#xff1a;图像的全局特征 &#xff08;2&#xff09;Q&#xff1a;告诉attention需要关注哪些重要特征 公式计算过程理解&#xff1a; &#xff08;1&#xff09;&#xff1a;Q和K相乘…

【C++入门】 初见,单推,与C++的第一次约会

关注小庄 顿顿解馋(ᕑᗢᓫ∗)˒ 引言&#xff1a;本篇博客我们开始与C的第一次约会&#xff0c;C是兼容c的&#xff0c;本篇博客我们将了解到C关键字有哪些&#xff0c;C命名空间&#xff0c;C输入与输出和缺省参数的内容&#xff0c;请放心食用 ~ 文章目录 一 &#x1f3e0; C…

k8s入门到实战(七)—— 回顾:使用yaml文件配置pv、pvc、configmap部署mysql服务

实战&#xff1a;部署 mysql 服务 回顾加深 pv、pvc、configmap 删除所有 deployment、pv、pvc、configmap、StorageClass创建一个 nsf 挂载目录给 mysql mkdir -p /nfs/data/mysql创建 yaml 文件mysql-server.yaml # 创建pv apiVersion: v1 kind: PersistentVolume metadat…

【深度学习】最强算法模型之:潜在狄利克雷分配(LDA)

潜在狄利克雷分配 1、引言2、潜在狄利克雷分配2.1 定义2.2 原理2.3 算法公式2.4 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 给我讲一讲LDA 小鱼&#xff1a;LDA&#xff1f; 你指的是&#xff1f; 小屌丝&#xff1a;就是算法模型的LDA啊&#xff0c; 你…

剑指Offer题目笔记19(二分查找)

面试题68&#xff1a; 问题&#xff1a; ​ 输入一个排序的整形数组nums和一个目标值t&#xff0c;如果数组nums中包含t&#xff0c;则返回在数组中的下标&#xff0c;否则返回按照顺序插入到数组的下标。 解决方案&#xff1a; ​ 使用二分查找。每次二分查找都选取位于数组…

【学习】软件科技成果鉴定测试有何作用

软件科技成果鉴定测试是针对软件进行项目申报、科技成果鉴定等相关目的进行的测试。软件测试报告可作为项目申报、科技成果鉴定等工作的依据之一。软件类科技成果鉴定测试从软件文档、功能性、使用技术等方面对软件系统进行符合性测试。其测试结果证明软件的质量是否符合技术合…

[DS]Polar靶场web(一)

静以养心&#xff0c;宽以养气。 跟着Dream ZHO大神学专升安的一天 swp 直接dirb扫出.index.php.swp的目录 function jiuzhe($xdmtql){return preg_match(/sys.*nb/is,$xdmtql);//如果包含以 "sys" 开始&#xff0c;后跟任意字符直到 "nb" 的字符串&…

基于Rflysim平台的无人机拦截三维比例导引算法仿真

【后厂村路钢铁侠出品】 一、Rflysim简介 RflySim是一套专为科研和教育打造的Pixhawk /PX4 和MATLAB/Simulink生态系统或工具链&#xff0c;采用基于模型设计&#xff08;Model-Based Design&#xff0c; MBD&#xff09;的思想&#xff0c;可用于无人系统的控制和安全测试。…