systemd-journal(三)之systemd.journal-fields

文章目录

  • 写在前面
  • 概述
  • 用户日志字段(User Journal Fields)
    • MESSAGE=
    • MESSAGE_ID=
    • PRIORITY=
    • CODE_FILE=, CODE_LINE=, CODE_FUNC=
    • ERRNO=
    • INVOCATION_ID=, USER_INVOCATION_ID=
    • SYSLOG_FACILITY=, SYSLOG_IDENTIFIER=, SYSLOG_PID=, SYSLOG_TIMESTAMP=
    • DOCUMENTATION=
    • TID=
    • UNIT=, USER_UNIT=
  • 可信日志字段(Trusted Journal Fields)
    • _PID=, _UID=, _GID=
    • _COMM=, _EXE=, _CMDLINE=
    • _CAP_EFFECTIVE=
    • _CAP_EFFECTIVE=
    • _AUDIT_SESSION=, _AUDIT_LOGINUID=
    • _SYSTEMD_CGROUP=, _SYSTEMD_SLICE=, _SYSTEMD_UNIT=, _SYSTEMD_USER_UNIT=, _SYSTEMD_USER_SLICE=, _SYSTEMD_SESSION=, _SYSTEMD_OWNER_UID=
    • _SELINUX_CONTEXT=
    • _SOURCE_REALTIME_TIMESTAMP=
    • _BOOT_ID=
    • _MACHINE_ID=
    • _SYSTEMD_INVOCATION_ID=
    • _HOSTNAME=
    • _TRANSPORT=
      • audit
      • driver
      • syslog
      • journal
      • stdout
      • kernel
    • _STREAM_ID=
    • _LINE_BREAK=
    • _NAMESPACE=
    • _RUNTIME_SCOPE=
  • 内核日志字段 (Kernel Journal Fields)
    • _KERNEL_DEVICE=
    • _KERNEL_SUBSYSTEM=
    • _UDEV_SYSNAME=
    • _UDEV_DEVNODE=
    • _UDEV_DEVLINK=
  • 代表其他程序登录的字段(Fields to log on behalf of a different program)
    • systemd-coredump ,coredump 内核帮助程序使用的字段:
      • COREDUMP_UNIT=
    • 特权程序(当前为 UID 0)可能会附加 OBJECT_PID= 到消息。这将指示 systemd-journald 代表调用方附加其他字段:
      • OBJECT_PID=PID
      • OBJECT_UID=, OBJECT_GID=, OBJECT_COMM=, OBJECT_EXE=, OBJECT_CMDLINE=, OBJECT_AUDIT_SESSION=, OBJECT_AUDIT_LOGINUID=, OBJECT_SYSTEMD_CGROUP=, OBJECT_SYSTEMD_SESSION=, OBJECT_SYSTEMD_OWNER_UID=, OBJECT_SYSTEMD_UNIT=, OBJECT_SYSTEMD_USER_UNIT=
  • 地址字段 (Address Fields)
    • __CURSOR=
    • __REALTIME_TIMESTAMP=
    • __MONOTONIC_TIMESTAMP=
    • __SEQNUM=, __SEQNUM_ID=

写在前面

本文主要是详细介绍了systemd.journal-fields ,主要翻译自英文原文文档(develop版本,截止到文章记录,最新版本是systemd 255)。以及增加了一些使用示例。
主要是以下页面的翻译:
https://www.freedesktop.org/software/systemd/man/latest/systemd.journal-fields.html#
其他相关文档请参考:systemd专栏
在这里插入图片描述
在这里插入图片描述

概述

systemd.journal-fields ---- 特殊日志字段

日志中的记录(由 systemd-journald.service(8) 编写)在语法上类似于 UNIX 进程环境块,但字段值可能包含二进制数据,并且允许使用非唯一字段名称。

字段值主要是格式化的 UTF-8 文本字符串 —— 二进制编码仅在格式化为 UTF-8 文本字符串没有意义的情况下使用。新字段可以由应用程序自由定义,但少数字段具有特殊含义,如下所示。

通常,每个日志记录的字段可能只出现一次,但也有特殊的例外情况:某些字段可能每个记录出现多次,在这种情况下,下面明确提到这一点。

尽管日志记录子系统对接受非唯一值的字段没有限制,但强烈建议避免对下面列出的字段依赖此值(除非另有说明,如前所述),以避免与其他应用程序不必要的不兼容。

用户日志字段(User Journal Fields)

用户字段是直接从客户端传递并存储在日志中的字段。

MESSAGE=

此记录是人类可读消息字符串。这应该是向用户显示的主要文本。它通常不会被翻译(但在某些情况下可能会翻译),并且不应该被解析为元数据。

为了在单个日志记录中对多行进行编码,请用换行符(ASCII 代码 10)分隔它们,但将它们编码为单个 MESSAGE= 字段。

不要将此字段类型的多个值添加到同一记录(另请参阅上文),因为使用应用程序通常不会期望这样做,并且在这种情况下不太可能显示所有值。

MESSAGE_ID=

用于识别某些消息类型的 128 位消息标识符 ID(如果需要)。

这应该包含一个 128 位 ID,格式为小写十六进制字符串,没有任何分隔破折号或类似内容。

建议将其设置为与 UUID 兼容的 ID,但不会强制执行,并且格式不同。

开发人员可以使用 systemd-id128 new 生成一个新 ID。

PRIORITY=

介于 0 (“ emerg ”)7 (“ debug ”) 之间的优先级值,格式为十进制字符串。此字段与 syslog 的优先级概念兼容。

CODE_FILE=, CODE_LINE=, CODE_FUNC=

生成此消息的代码位置(如果已知)。包含源文件名、行号和函数名称。

ERRNO=

导致此记录的低级 Unix 错误号(如果有)。包含 errno(3) 的数值,格式为十进制字符串。

INVOCATION_ID=, USER_INVOCATION_ID=

一个随机的、唯一的 128 位 ID,用于标识设备的每个运行时周期。这与_SYSTEMD_INVOCATION_ID 不同之处在于,它仅用于来自 systemd 代码的消息(例如,来自系统/用户管理器的日志或来自执行 systemd 相关设置的分叉进程的日志)。

SYSLOG_FACILITY=, SYSLOG_IDENTIFIER=, SYSLOG_PID=, SYSLOG_TIMESTAMP=

Syslog 兼容性字段包含设施(格式为十进制字符串)、标识符字符串(即“标签”)、客户端 PID 和原始数据报中指定的时间戳。 (请注意,该标记通常派生自 glibc 的program_invocation_short_name 变量,请参阅program_invocation_short_name(3)。)

请注意,日志服务不会验证名称未以下划线为前缀的任何结构化日志字段的值,这包括任何与系统日志相关的字段,例如这些字段。因此,提供设施、PID 或日志级别的应用程序应正确格式化,即格式化为十进制字符串的数字整数。

DOCUMENTATION=

包含有关日志消息主题的详细信息的文档 URL。journalctl 等工具将在其输出中包含指向以这种方式指定的 URL 的超链接。应为“ http:// ”, “ https:// ”, “ file:/ ”, “ man: ” 或 “ info: ” URL

TID=

日志消息源的线程 ID (TID),为数字。

UNIT=, USER_UNIT=

UNIT单元的名称。由系统和用户管理器在记录特定单元时使用。
当 或 --user-unit=namejournalctl(1) 一起使用时 --unit=name , 将生成包含 “ UNIT=name.service ”“ USER_UNIT=name.service的匹配模式。

可信日志字段(Trusted Journal Fields)

以下划线为前缀的字段是受信任字段,即由日志隐式添加且无法由客户端代码更改的字段。

_PID=, _UID=, _GID=

日志记录源自的进程的进程、用户和组 ID,格式为十进制字符串。请注意,通过分叉进程的 “ stdout ”“ stderr获得的记录将包含对父进程(启动与 systemd-journald 的连接)有效的凭据。

_COMM=, _EXE=, _CMDLINE=

日志记录源自的进程的名称、可执行文件路径和命令行。

_CAP_EFFECTIVE=

日志记录来源的进程的会话和登录 UID,由内核审核子系统维护。

_CAP_EFFECTIVE=

日志记录来源的流程的有效能力(7)

The effective capabilities(7) of the process the journal entry originates from.

_AUDIT_SESSION=, _AUDIT_LOGINUID=

日志记录来源的进程的会话和登录 UID,由内核审核子系统维护。

_SYSTEMD_CGROUP=, _SYSTEMD_SLICE=, _SYSTEMD_UNIT=, _SYSTEMD_USER_UNIT=, _SYSTEMD_USER_SLICE=, _SYSTEMD_SESSION=, _SYSTEMD_OWNER_UID=

systemd 层次结构中的控制组路径、systemd 切片单元名称、systemd 单元名称、systemd 用户管理器中的单元名称(如果有)、systemd 会话 ID(如果有)以及日志记录来源的进程的 systemd 用户单元或 systemd 会话(如果有)的所有者 UID。

_SELINUX_CONTEXT=

日志记录源自的进程的 SELinux 安全上下文(标签)。

_SOURCE_REALTIME_TIMESTAMP=

消息的最早受信任时间戳(如果已知有)与日志的接收时间不同。这是自纪元 UTC 以来以微秒为单位的时间,格式为十进制字符串。

_BOOT_ID=

生成消息的启动的内核启动 ID,格式为 128 位十六进制字符串。

_MACHINE_ID=

原始主机的机器 ID,在 machine-id(5) 中可用。

_SYSTEMD_INVOCATION_ID=

生成消息的单元的运行时周期的调用 ID,可供单元的进程使用 $INVOCATION_ID (参见 systemd.exec(5))。

_HOSTNAME=

原始主机的名称。

_TRANSPORT=

日志服务如何接收日志记录。有效的传输方式包括:

audit

用于那些从内核审计子系统读取的用户

driver

对于内部生成的消息

syslog

对于通过本地 syslog 套接字和 syslog 协议接收的那些

journal

对于通过Native Journal Protocol接收的那些

stdout

对于从服务的标准输出或错误输出读取的用户

kernel

对于那些从内核中读取的人

_STREAM_ID=

仅适用于 “ _TRANSPORT=stdout ” 记录:指定在首次创建流连接时分配给流连接的随机 128 位 ID。此 ID 可用于从日志记录中重建单个日志流:具有相同流 ID 的所有日志记录都源自同一流。

_LINE_BREAK=

仅适用于 “ _TRANSPORT=stdout ” 记录:表示标准输出/错误流中的日志消息未以普通换行符(“ \n ”,即 ASCII 10)结尾。

具体来说,当设置时,此字段是( nul 如果行以 NUL 字节终止)line-max(如果达到最大日志行长度,如 journald.conf(5) 中配置)、 LineMax= eof (如果这是流的最后一个日志记录,并且流结束时没有最后一个换行符)或 pid-change (如果生成日志输出的进程在行中间发生更改)之一。

请注意,当使用普通换行符标记日志行结束时,不会生成此记录。

_NAMESPACE=

如果此文件是由管理非默认日志命名空间的 systemd-journald 实例编写的,则此字段包含命名空间标识符。参见 systemd-journald.service(8) 来了解日志命名空间的细节。

_RUNTIME_SCOPE=

一个字符串字段,该字段指定记录消息的运行时范围。如果是“ initrd ”,则当系统在 initrd 中运行时处理日志消息。如果 是 system ”,则日志消息是在系统切换到主机根文件系统执行后生成的。

内核日志字段 (Kernel Journal Fields)

内核字段是由源自内核并存储在日志中的信息使用的字段。

_KERNEL_DEVICE=

内核设备名称。

如果记录与块设备相关联,则包含设备节点的主要和次要编号,以“ : ” 分隔,并以“ b ” 为前缀。与字符设备类似,但以“ c ” 为前缀。

对于网络设备,这是以“ n ” 为前缀的接口索引。

对于所有其他设备,这是以 “ + ” 为前缀的子系统名称,后跟 “ : ” ,后跟内核设备名称。

_KERNEL_SUBSYSTEM=

内核子系统名称。

_UDEV_SYSNAME=

内核设备名称,显示在下面/sys/的设备树中。

_UDEV_DEVNODE=

此设备在 中的 /dev/ 设备节点路径。

_UDEV_DEVLINK=

指向 中 /dev/ 设备节点的其他符号链接名称。每个记录通常设置此字段不止一次。

代表其他程序登录的字段(Fields to log on behalf of a different program)

程序使用本节中的字段来指定它们代表另一个程序或单元进行日志记录。

systemd-coredump ,coredump 内核帮助程序使用的字段:

COREDUMP_UNIT=

用于注释包含来自系统和会话单元的核心转储的消息。参见 coredumpctl(1)
Used to annotate messages containing coredumps from system and session units. See coredumpctl(1).

特权程序(当前为 UID 0)可能会附加 OBJECT_PID= 到消息。这将指示 systemd-journald 代表调用方附加其他字段:

OBJECT_PID=PID

此消息所属程序的 PID。

OBJECT_UID=, OBJECT_GID=, OBJECT_COMM=, OBJECT_EXE=, OBJECT_CMDLINE=, OBJECT_AUDIT_SESSION=, OBJECT_AUDIT_LOGINUID=, OBJECT_SYSTEMD_CGROUP=, OBJECT_SYSTEMD_SESSION=, OBJECT_SYSTEMD_OWNER_UID=, OBJECT_SYSTEMD_UNIT=, OBJECT_SYSTEMD_USER_UNIT=

这些是 systemd-journald 自动添加的附加字段。它们的含义与_UID= 、 _GID= 、 _COMM= _EXE= _CMDLINE= _AUDIT_SESSION= _AUDIT_LOGINUID= _SYSTEMD_CGROUP= _SYSTEMD_SESSION= _SYSTEMD_UNIT= _SYSTEMD_USER_UNIT= _SYSTEMD_OWNER_UID=和 如上所述 相同,只是描述的是 标识的 PID 进程,而不是记录消息的进程。

地址字段 (Address Fields)

在序列化为外部格式(如日志导出格式或日志 JSON 格式)期间,日志记录的地址将序列化为以双下划线为前缀的字段。请注意,当存储在日志中时,这些字段不是正确的字段,而是用于处理记录的元数据。它们不能通过调用(如 sd_journal_send(3)作为结构化日志记录的一部分写入。它们也不能用作sd_journal_add_match(3) 的匹配项。

__CURSOR=

__CURSOR=   #前面是两个下划线

记录的光标。游标是一个不透明的文本字符串,它唯一地描述了记录在日志中的位置,并且可以跨计算机、平台和日志文件进行移植。

__REALTIME_TIMESTAMP=

__REALTIME_TIMESTAMP=  #前面是两个下划线

日志收到记录时的挂钟时间 ( CLOCK_REALTIME ),自 UTC 纪元以来的微秒数,格式为十进制字符串。这与“ _SOURCE_REALTIME_TIMESTAMP= ” 具有不同的属性,因为它通常稍晚一些,但更有可能是单调的。

__MONOTONIC_TIMESTAMP=

__MONOTONIC_TIMESTAMP=  #前面是两个下划线

日志接收记录的时间点的单调时间 CLOCK_MONOTONIC 以微秒为单位,格式为十进制字符串。为了用作日志记录的地址,应将其与“ _BOOT_ID= ” 中的引导 ID 结合使用。

__SEQNUM=, __SEQNUM_ID=

__SEQNUM=, __SEQNUM_ID=  #前面是两个下划线

此日志记录源自的日志文件中的序列号(和关联的序列号 ID)。详见sd_journal_get_seqnum(3)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

成都克鲁斯机器人电路板故障维修攻略,快来了解一下!

一、克鲁斯机器人电路板维修步骤 断开电源:在进行电路维修前,务必断开机器人的电源,确保安全。 拆卸电路板:根据电路图或维修手册,小心拆卸故障电路板。注意记录拆卸过程中的细节,以便后续重新安装。 更换损…

基于javaweb(springboot+mybatis)网上家具商城项目设计和实现以及文档报告

基于javaweb(springbootmybatis)网上家具商城项目设计和实现以及文档报告 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞…

Selenium三大等待详解

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 一、强制等待 1.设置完等待后不管有没有找到元素,都…

目前可用的免费云服务器整理汇总

随着云计算技术的飞速发展,越来越多的企业和个人开始关注并使用云服务器。为了吸引用户上云,各大云服务商纷纷推出了免费云服务器,供用户免费试用。本文将为大家整理汇总目前市场上可用的免费云服务器,以便大家更好地选择适合自己…

Cisco防火墙

ASA系列 1、防火墙工作原理(状态化防火墙) 2、在防火墙上配置ACL(基本都是命名的ACL) 3、在防火墙上配置NAT(防火墙设备一般放在局域网出口) 一、工作原理 1、系列 ASA550系列 2、ASA防火墙状态化防…

Kubernetes超详细教程,一篇文章帮助你从零开始学习k8s,从入门到实战

k8s 概述 k8s github地址:https://github.com/kubernetes/kubernetes 官方文档:https://kubernetes.io/zh-cn/docs/home/ k8s,全程是 kubernetes,这个名字源于希腊语,意为"舵手"或"飞行员” k8s 这…

C#学生信息成绩管理系统

一、系统功能描述 本系统包括两类用户:学生、管理员。管理员可以通过系统来添加管理员信息、修改管理员信息、添加学生信息、修改学生信息;开设课程、查询课程、录入成绩、统计成绩、修改成绩、修改个人密码等,而学生则可以通过系统来选择课…

Matlab基础入门

基础操作: matlab命令行操作: matlab可以使用命令行执行程序,例如下图运行后在右边工作区会产生响应的变量,如不写分号,则会直接运行。 clear命令:clear用于清除变量。clc命令:clc用于清屏。 m…

VMware和Xshell连接

1.开启虚拟机 2.使用管理员账户,点击未列出 3.输入用户名密码 4.点击编辑虚拟网络编辑器 5.记住自己的网关和IP地址 6.打开终端 7.输入命令,vim / etc / sysconfig / network -scripts / ifcfg-ens33 回车 8.修改图中两处按“ I ”键进入编辑 d…

3-iperf3 使用什么工具可以检测网络带宽、延迟和数据包丢失率等网络性能参数呢?

(1)iperf3简介 1.iperf3简介 2.用途(特点) 3.下载iperf3地址 (2)实战 1.iperf3参数 (1)通用参数(客户端和服务器端都是适用的) (2)客户端参数 实验1&…

对下载软件/文件进行校验的工具(Checksum and GPG)

前言 之前装软件一直都没有验证安装文件的习惯,信息安全意识不高,碰巧最近没啥事,微微写篇文章记录下校验工具(互联网http、https、ftp 服务并没有那么安全,是可以被劫持篡改。老装软件选手了,是该养成个校…

MySQL连接与存储

目录 一.连接查询 1.内连接 2.左连接 3.右连接 二.存储过程 1.定义 2.优点 (1)执行一次后,会将生成的二进制代码驻留缓冲区,提高执行效率 (2)SQL语句加上控制语句的集合,灵活性高 &am…