文章目录
写在前面
本文主要是详细介绍了linux系统中systemd管理器中的journal相关的日志管理相关的服务,systemd-journal-upload.service,systemd-journal-remote.service, systemd-journal-gatewayd.service主要翻译自英文原文文档(develop版本,截止到文章记录,最新版本是systemd 255)。
主要是以下页面的翻译:
systemd-journal-upload.service:
https://www.freedesktop.org/software/systemd/man/latest/systemd-journal-upload.service.html#
systemd-journal-remote.service:
https://www.freedesktop.org/software/systemd/man/latest/systemd-journal-remote.service.html#
systemd-journal-gatewayd.service:
https://www.freedesktop.org/software/systemd/man/latest/systemd-journal-gatewayd.service.html#
其他相关文档请参考:systemd专栏
systemd-journal-upload.service
概述
systemd-journal-upload.service
, systemd-journal-upload
通过网络发送日志消息
systemd-journal-upload.service
/usr/lib/systemd/systemd-journal-upload [OPTIONS...] [-u/--url=URL] [SOURCES...]
/usr/lib/systemd/systemd-journal-upload [选项...][-u/--url= URL ][来源...]
描述
systemd-journal-upload
会将日志记录上传到 --url=
指定的 URL
。
该程序从一个或多个日志文件中读取日志记录,类似于journalctl(1)
。除非受到下面指定的选项之一的限制,否则程序运行的用户可以访问的所有日志记录都将被上传,然后程序将等待并在新记录可用时发送它们。
systemd-journal-upload
传输日志文件的原始内容,并使用 HTTP
作为传输协议。
systemd-journal-upload.service
是使用 systemd-journal-upload
将日志记录上传到服务器的系统服务。它使用 journal-upload.conf(5)
中的配置。至少必须指定 URL=
选项。
选项
-u, --url=[https://]URL[:PORT]
--url=[http://]URL[:PORT]
上传到指定地址。 URL 可以只指定主机名,也可以同时指定协议和主机名。 https 是默认值。 端口号可以在冒号 (“ : ”) 后指定,否则将默认使用端口号为 19532 。
–system, --user
--system, --user
将上传的日志记录限制为来自系统服务和内核的日志记录,或来自当前用户服务的日志记录。这与 journalctl(1)
的含义 --system
和 --user
选项相同。如果两者都未指定,则上传所有可访问的日志记录。
-m, --merge
-m, --merge
上传所有可用日志(包括其他机器)中交错的条目。这与 Journalctl(1)
的 --merge
选项具有相同的含义。
–namespace=NAMESPACE
--namespace=NAMESPACE
将日志命名空间标识符字符串作为参数。从指定的日志命名空间 NAMESPACE 而不是默认命名空间上传条目。这与 Journalctl(1) 的 --namespace=
选项具有相同的含义。
-D, --directory=DIR
-D, --directory=DIR
将目录路径作为参数。从指定的日志目录 DIR (而不是默认运行时和系统日志路径)上传条目。这与 journalctl(1) --directory=
的选项具有相同的含义。
–file=GLOB
--file=GLOB
将文件 glob 作为参数。从匹配 GLOB 的指定日志文件中上传条目,而不是默认运行时和系统日志路径。可以多次指定,在这种情况下,文件将适当地交错。这与 journalctl(1) --file=
的选项具有相同的含义。
–cursor=
--cursor=
从传递的游标指定的日志记录中的位置上传条目。这与 journalctl(1) --cursor= 的选项具有相同的含义。
–after-cursor=
--after-cursor=
从日志记录中此光标指定位置之后的位置上传条目。这与 journalctl(1) --after-cursor= 的选项具有相同的含义。
–save-state[=PATH]
--save-state[=PATH]
从日志中光标指定位置之后的位置上传条目,该位置保存在 PATH 下的文件中(默认为 /var/lib/systemd/journal-upload/state
)。成功上传条目后,用该条目的光标更新此文件。
–follow[=BOOL]
--follow[=BOOL]
如果设置为 yes,则 systemd-journal-upload
等待输入。
–key=
--key=
采用 PEM 格式的 SSL 密钥文件的路径,或-
。如果 设置为-
,则将禁用客户端证书身份验证检查。默认值为 /etc/ssl/private/journal-upload.pem
。
–cert=
--cert=
采用 PEM 格式的 SSL 证书文件的路径,或 - 。如果 设置为-,则将禁用客户端证书身份验证检查。默认值为 /etc/ssl/certs/journal-upload.pem 。
–trust=
--trust=
采用 PEM 格式的 SSL CA 证书文件的路径,或 -
/ all
。如果设置为 -
/ all
,则证书检查将被禁用。默认值为 /etc/ssl/ca/trusted.pem
。
-h, --help
打印简短的帮助文本并退出。
–version
--version
打印一个简短的版本字符串并退出。
systemd-journal-remote.service
概述
systemd-journal-remote.service, systemd-journal-remote.socket, systemd-journal-remote
通过网络接收日志信息
systemd-journal-remote.service
systemd-journal-remote.socket
/usr/lib/systemd/systemd-journal-remote [OPTIONS...] [-o/--output=DIR|FILE] [SOURCES...]
/usr/lib/systemd/systemd-journal-remote [选项...][-o/--输出= DIR | FILE ] [来源...]
描述
systemd-journal-remote
是一个命令,用于接收序列化的日志事件并将其存储到日志文件中。输入流采用日志导出格式,即类似于 journalctl --output=export
的输出。对于通过网络传输,此序列化流通常通过 HTTPS 连接传输。
systemd-journal-remote.service
是使用 systemd-journal-remote
侦听连接的系统服务。 systemd-journal-remote.socket
配置 systemd-journal-remote.service
侦听的网络地址。默认情况下,使用端口 19532。接受哪些连接以及如何存储接收到的数据 可以通过 journal-remote.conf(5)
配置文件进行配置。
来源
源可以是“主动的”(systemd-journal-remote
请求并提取数据),也可以是“被动的”(systemd-journal-remote
等待连接,然后接收另一端推送的事件)。
systemd-journal-remote
一次可以读取多个事件流。它们将在输出文件中交错。在“主动”连接的情况下,每个“源”是一个流,在“被动”连接的情况下,每个连接都可以产生一个单独的流。套接字可以配置为“接受”模式(即只有一个连接)或“侦听”模式(即多个连接,每个连接产生一个流)。
当没有更多的连接,并且无法创建更多连接(没有侦听套接字)时,systemd-journal-remote 将退出。
可以通过以下方式指定活动源:
[SOURCES...]
当作为位置参数给出-
时 ,将从标准输入中读取事件。其他位置参数将被视为要打开和读取的文件名。
–url=ADDRESS
--url=ADDRESS
使用该 --url=ADDRESS
选项,将使用 HTTP 从 ADDRESS 检索事件。这个 URL 应该引用远程 systemd-journal-gatewayd(8) 实例的根目录,例如 http://some.host:19531/ 或 https://some.host:19531/。
–getter=‘PROG [OPTIONS…]’
--getter='PROG [OPTIONS...]'
为了检索数据而调用的程序。必须在标准输出上生成日志事件流。
举例:
--getter='curl "-HAccept: application/vnd.fdo.journal" https://some.host:19531/'
--getter='wget --header="Accept: application/vnd.fdo.journal" -O- https://some.host:19531/'
可以通过以下方式指定被动源:
--listen-raw=ADDRESS
--listen-raw=ADDRESS
--listen-http=ADDRESS, --listen-https=ADDRESS
ADDRESS
必须是负整数,在这种情况下,它将被解释为(否定的)文件描述符编号,或者是适合于 ListenStream= (c.f. systemd.socket(5))
的地址。在第一种情况下,服务器默认侦听端口 19532,并且必须通过 $LISTEN_FDS / $LISTEN_PID
继承匹配的文件描述符。在第二种情况下,将在此端口上生成一个 HTTP 或 HTTPS 服务器,分别为 --listen-http=
和 --listen-https=
。目前,仅支持 /upload
对带有“ Content-Type: application/vnd.fdo.journal ”
的 POST 请求。
$LISTEN_FDS
systemd-journal-remote
支持 $LISTEN_FDS / $LISTEN_PID
协议。通过套接字激活继承的打开套接字的行为与上述打开 --listen-raw=
的套接字类似,除非它们在或 --listen-http=-n --listen-https=-n
上面指定为参数。在后一种情况下,将使用此描述符生成 HTTP 或 HTTPS 服务器,并且必须通过 HTTP 协议建立连接。
–key=
--key=
采用 PEM 格式的 SSL 密钥文件的路径。默认值为 /etc/ssl/private/journal-remote.pem
。此选项可与 --listen-https=
一起使用。如果路径引用文件系统中的 AF_UNIX 流套接字,则会与该套接字建立连接,并从中读取密钥。
–cert=
--cert=
采用 PEM 格式的 SSL 证书文件的路径。默认值为 /etc/ssl/certs/journal-remote.pem
。此选项可与 --listen-https=
一起使用。如果路径引用文件系统中的 AF_UNIX 流套接字,则会与该套接字建立连接并从中读取证书。
–trust=
--trust=
采用 PEM 格式的 SSL CA 证书文件的路径,或 all ,如果设置了all,则证书检查将被禁用。默认值为 /etc/ssl/ca/trusted.pem
。此选项可与 --listen-https=
一起使用。如果路径引用文件系统中的 AF_UNIX 流套接字,则会与该套接字建立连接并从中读取证书。
–gnutls-log=
--gnutls-log=
采用逗号分隔的 gnutls 日志记录类别列表。此选项可以与 --listen-http=
或 --listen-https=
一起使用。
Sinks 接收器
输出日志的位置可以用 -o 或 --output=
指定。
-o FILE, --output=FILE
写入此日志文件。文件名必须以 .journal .如果文件不存在,则将创建该文件。如有必要(日志文件已满或已损坏),将按照正常的日志规则重命名该文件,并创建一个新的日志文件来代替它。
-o DIR, --output=DIR
将在目录下创建日志文件 DIR 。该目录必须存在。如有必要(日志文件过大或损坏),日志文件将按照正常的日志规则轮换。下面的文件名 DIR 将使用下面描述的规则生成。
如果 --output=
不使用, var/log/journal/remote/
则将使用输出目录。如果未指定输出文件,则将在所选目录下创建日志文件。将调用 remote-hostname.journal
文件,其中 hostname
部分是连接源端点的转义主机名,如果无法确定主机名,则调用数字地址。
如果“活动”源由位置参数或 --getter= 选项给出,则必须始终显式给出输出文件名。
选项
–split-mode
--split-mode
none 或 host
之一。对于第一个,仅使用一个输出日志文件。对于后者,根据连接的其他终结点的主机名使用单独的输出文件。
如果“活动”源由位置参数或 --getter=
选项给出,则必须始终显式给出输出文件名,并且只 none
允许使用输出文件名。
–compress [BOOL]
--compress [BOOL]
如果设置为“ yes ”,则使用 XZ 压缩日志中的数据。默认值为 “ yes ”。
–seal [BOOL]
--seal [BOOL]
如果设置为“ yes ”,则使用正向安全密封定期对日志中的数据进行签名。默认值为 “ no ”。
-h, --help
–version
--version
示例
将本地日志事件复制到其他日志目录:
journalctl -o export | systemd-journal-remote -o /tmp/dir/foo.journal -
从远程 systemd-journal-gatewayd(8)
实例中检索所有可用事件,并将它们存储在: /var/log/journal/remote/remote-some.host.journal
systemd-journal-remote --url http://some.host:19531/
检索当前引导事件并等待来自远程 systemd-journal-gatewayd(8) 实例的新事件,并将它们存储在 `/var/log/journal/remote/remote-some.host.journal ``
systemd-journal-remote --url http://some.host:19531/entries?boot&follow
https://www.freedesktop.org/software/systemd/man/latest/systemd-journal-gatewayd.service.html#
systemd-journal-gatewayd.service
概述
systemd-journal-gatewayd.service, systemd-journal-gatewayd.socket, systemd-journal-gatewayd — 日志事件的 HTTP 服务器
systemd-journal-gatewayd.service
systemd-journal-gatewayd.socket
/usr/lib/systemd/systemd-journal-gatewayd [OPTIONS...]
/usr/lib/systemd/systemd-journal-gatewayd [选项...]
描述
systemd-journal-gatewayd
通过网络提供日志事件。客户端必须使用 HTTP 进行连接。默认情况下,服务器侦听端口 19531。如果 --cert=
指定,则服务器需要 HTTPS 连接。
该程序由 systemd(1) 启动,并期望接收一个套接字。使用 systemctl start systemd-journal-gatewayd.socket
启动服务,并使用 systemctl enable systemd-journal-gatewayd.socket
在启动时启动服务。
选项
–cert=
--cert=
指定要从中读取服务器证书的文件或 AF_UNIX 流套接字的路径。证书必须采用 PEM 格式。此选项将 systemd-journal-gatewayd
切换到 HTTPS 模式,并且必须与--key=
一起使用。
–key=
--key=
指定文件或 AF_UNIX 流套接字的路径,以读取与使用 --cert= from
指定的证书对应的密钥服务器密钥。密钥必须采用 PEM 格式。
–trust=
--trust=
指定要从中读取 CA 证书的文件或 AF_UNIX 流套接字的路径。证书必须采用 PEM 格式。
–system, --user
--system, --user
将提供的记录限制为来自系统服务和内核的记录,或来自当前用户服务的记录。这与 journalctl(1) 的含义 --system 和 --user
选项相同。如果两者都未指定,则提供所有可访问的记录。
-m, --merge
-m, --merge
提供与所有可用日志(包括其他计算机)交错的条目。这与 journalctl(1) --merge 的选项具有相同的含义。
-D DIR, --directory=DIR
-D DIR, --directory=DIR
将目录路径作为参数。如果指定,systemd-journal-gatewayd
将提供指定的日志目录 DIR 而不是默认的运行时和系统日志路径。
–file=GLOB
--file=GLOB
将文件 glob 作为参数。提供来自指定日志文件的条目, GLOB 而不是默认运行时和系统日志路径。可以多次指定,在这种情况下,文件将适当地交错。这与 journalctl(1) --file= 的选项具有相同的含义。
-h, --help
–version
--version
支持的 URL
可识别以下 URL:
/browse
交互式浏览。
/entries[?option1&option2=value…]
检索各种格式的事件。
HTTP Accept header
: 的部分决定了格式。支持的值如下所述。
HTTP Accept header Range
: 的部分决定了返回的事件范围。支持的值如下所述。
GET 参数可用于修改返回的事件。支持的参数如下所述。
/machine
返回描述计算机的 JSON 结构。
例:
{ "machine_id" : "8cf7ed9d451ea194b77a9f118f3dc446",
"boot_id" : "3d3c9efaf556496a9b04259ee35df7f7",
"hostname" : "fedora",
"os_pretty_name" : "Fedora 19 (Rawhide)",
"virtualization" : "kvm",
…}
/fields/FIELD_NAME
返回日志中存在的此字段的值列表。
Accept header
Accept: format
text/plain
默认值。类似 syslog 的纯文本输出,每个日志条目一行(如 journalctl --output short
)。
application/json
条目的格式为 JSON 数据结构,每行一个(如 journalctl --output json
)。有关详细信息,请参阅日志JSON 格式。
text/event-stream
条目的格式为 JSON 数据结构,以适合服务器发送事件的格式包装(如 journalctl --output json-sse
)。
application/vnd.fdo.journal
条目被序列化为适合备份和网络传输的二进制(但主要是基于文本的)流(如 journalctl --output export
)。有关详细信息,请参阅日志记录导出格式。
Range header
Range: entries=cursor[[:num_skip]:num_entries]
其中 cursor 是光标字符串, num_skip 是整数, num_entries 是无符号整数。
范围默认为所有可用事件。
URL GET parameters
follow
等待新事件(如 journalctl --follow
,但返回的事件数不受限制)。
discrete
测试指定的游标是否引用了日志中的条目。仅返回此条目。
boot
将事件限制为系统的当前引导(如 journalctl -b)。
KEY=match
匹配日志记录字段。参见 systemd.journal-fields(7)。
Examples 示例
以日志导出格式从本地日志中检索此引导中的事件:
curl --silent -H'Accept: application/vnd.fdo.journal' \
'http://localhost:19531/entries?boot'
侦听核心转储:
curl 'http://localhost:19531/entries?follow&MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1'