本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
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...]
systemd-journal-remote 用于接收经过序列化的远程日志, 并将其保存到本机的日志池中。输入流必须符合 Journal Export Format 格式,也就是 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 能够同时读取多个日志流, 并将他们存储到输出文件(日志池)中。 对于"主动源"来说,每一个"源"就是一个日志流; 对于"被动源"来说,每一个连接就是一个日志流。 网络套接字可以被配置为 "accept"模式(单个连接) 或者 "listen"模式(多个连接,每个连接都是一个日志流)。
如果所有连接都已经断开, 并且不能再创建新连接(没有监听套接字),那么 systemd-journal-remote 将会自动退出。
"主动源" 可以使用下列方式指定:
将 SOURCES 参数设为 -
表示从标准输入读取日志流。
将 SOURCES 参数设为文件路径
表示打开这些文件并从中读取日志流。
--url=ADDRESS
¶使用
--url=
选项,
表示使用 HTTP 协议从
ADDRESS
ADDRESS
读取日志流。
此处的URL必须指向远程
systemd-journal-gatewayd
实例的根目录(例如 http://some.host:19531/ 或
https://some.host:19531/)。
--getter='PROG
[OPTIONS...]'
¶指定用于读取远程日志的外部程序。 生成的日志流必须发送到标准输出(STDOUT)。
例子:
--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
¶ADDRESS
必须是一个适用于 ListenStream=
的地址(参见
systemd.socket(5))。
systemd-journal-remote
将在此地址的套接字上监听并等待远程连接。
每一个连接都将被视为一个日志流。
--listen-http=ADDRESS
, --listen-https=ADDRESS
¶ADDRESS
必须是
一个负整数("-"后面的整数将被视为文件描述符的编号),
或者是一个适用于
ListenStream=
的地址(参见
systemd.socket(5))。
对于第一种情况(负整数),服务器默认在 19532 端口监听,
匹配的文件描述符必须被
$LISTEN_FDS
/$LISTEN_PID
继承。
对于第二种情况(套接字地址),将会根据
--listen-http=
与 --listen-https=
的指示,
在此端口上启动 HTTP 或 HTTPS 服务。
目前,仅支持对 /upload
路径的 POST 请求("Content-Type:
application/vnd.fdo.journal
")。
$LISTEN_FDS
¶systemd-journal-remote
支持
$LISTEN_FDS
/$LISTEN_PID
协议。一般情况下,打开从套接字启动机制继承的套接字,
与打开上文 --listen-raw=
指定的套接字完全相同。
但是,如果此变量的值来自于
--listen-http=-
或
n
--listen-https=-
选项的值(负整数),
那么将会使用此文件描述符启动 HTTP 或 HTTPS 服务,
并且必须通过 HTTP 协议建立连接。n
--key=
¶
PEM 格式的 SSL 私钥文件的路径。
默认值是 /etc/ssl/private/journal-remote.pem
。
此选项仅可与 --listen-https=
一起使用。
--cert=
¶
PEM 格式的 SSL 证书文件的路径。
默认值是 /etc/ssl/certs/journal-remote.pem
。
此选项仅可与 --listen-https=
一起使用。
--trust=
¶
PEM 格式的 SSL CA 证书文件的路径。
特殊值 all
表示
禁止检查证书的有效性。
默认值是 /etc/ssl/ca/trusted.pem
。
此选项仅可与 --listen-https=
一起使用。
--gnutls-log=
¶
接受一个逗号分隔的 gnutls 日志类别列表。
此选项可与 --listen-http=
或
--listen-https=
一起使用。
本机上用于保存远程日志的文件或目录被称为"日志池"。具体位置可以通过
-o
或 --output=
选项指定。
--output=FILE
¶使用指定的 FILE
文件作为保存远程日志的"日志池"。
文件的名称必须以 .journal
作为后缀。
如果指定的文件不存在,那么将会被自动创建。
在必要的情况下(例如日志文件损坏或大小超限),
现有的老日志文件会被按照日志滚动规则改名,
然后再创建一个全新的日志文件取代它。
--output=DIR
¶使用指定的 DIR
目录作为保存远程日志的"日志池"。
日志文件将会存储在此目录下。此目录必须是一个已经存在的目录。
在必要的情况下(例如日志文件损坏或大小超限),
现有的老日志文件会被按照日志滚动规则改名,然后再创建一个全新的日志文件取代它。
对于 DIR
目录下日志文件的名称,
将按照下文所描述的规则生成。
如果未设置 --output=
选项,那么将使用
/var/log/journal/remote/
目录作为"日志池"。
如果没有明确指定日志文件的名称,
那么将直接在"日志池"目录下创建日志文件,
并且日志文件将按照
remote-
格式命名,其中的 hostname
.journalhostname
是经过转义之后的
日志源主机名(如果无法获取主机名则直接使用IP地址)。
如果通过 SOURCES 参数或者
--getter=
选项指定了一个"主动源",
那么必须明确设置日志文件的名称。
可以使用的命令行选项如下:
--split-mode
¶设为 none
表示仅使用一个单独的日志文件。
设为 host
表示分别为每一个远程主机(日志源)
使用一个专属的日志文件。
如果通过 SOURCES 参数或者
--getter=
选项指定了一个"主动源",
那么必须明确设置日志文件的名称,同时必须将此选项设为 none
。
--compress
[BOOL
]¶默认值 "yes
"
表示将日志流使用 XZ 压缩之后再存储到日志文件中。
--seal
[BOOL
]¶设为 "yes
" 表示
使用FSS(Forward Secure Sealing)对日志数据进行周期性签名。
默认值是 "no
"
-h
, --help
¶--version
¶将本地日志复制到另一个不同的日志目录中:
journalctl -o export | systemd-journal-remote -o /tmp/dir/foo.journal -
从远程
systemd-journal-gatewayd
实例读取日志流,并将读取到的日志存储在
/var/log/journal/remote/remote-some.host.journal
文件中:
systemd-journal-remote --url http://some.host:19531/
从远程
systemd-journal-gatewayd
实例读取本次启动的日志事件以及后继日志,并将读取到的日志存储在
/var/log/journal/remote/remote-some.host.journal
文件中:
systemd-journal-remote --url http://some.host:19531/entries?boot&follow