本文译者是一位开源理念的坚定支持者,所以本文虽然不是软件,但是遵照开源的精神发布。
本文译者十分愿意与他人分享劳动成果,如果你对我的其他翻译作品或者技术文章有兴趣,可以在如下位置查看现有的作品集:
由于译者水平有限,因此不能保证译文内容准确无误。如果你发现了译文中的错误(哪怕是错别字也好),请来信指出,任何提高译文质量的建议我都将虚心接纳。
systemd-journal-upload.service, systemd-journal-upload — 通过网络向远程发送日志
systemd-journal-upload.service
/usr/lib/systemd/systemd-journal-upload
[OPTIONS...] [-u/--url=URL
] [SOURCES...]
systemd-journal-upload 能够将日志发送到
with --url=
选项指定的远程目标。
这个程序能够读取一个或多个日志文件(类似于
journalctl(1)),
除非使用了下面的某个选项进行限制,否则将会发送运行此进程的用户所能够访问的全部日志,
在发送完既有的日志之后,此程序将会继续等待新日志的产生,
并且持续不断的发送新生成的日志。
系统服务 systemd-journal-upload.service
使用
systemd-journal-upload 工具将日志发送到远程服务器,
其配置文件为
journal-upload.conf(5)
并且必须设置 URL=
的值。
-u
, --url=[https://]URL
[:PORT
]
, --url=[http://]URL
[:PORT
]
¶设置将日志发送到哪个地址。
既可以同时指定传输协议与目标主机,
也可以仅指定目标主机而省略传输协议。
如果省略传输协议,那么表示默认使用 https
协议。
端口号可以使用冒号(":
")在主机名之后指定,
默认为 19532
端口。
--system
, --user
¶--system
表示仅发送内核与系统服务生成的日志,
--user
表示仅发送运行此进程的用户服务生成的日志。
此二选项的含义与
journalctl(1)
的
--system
与 --user
选项相同。
如果这两个选项都没有使用,那么将会发送运行此进程的用户所能够访问的全部日志。
-m
, --merge
¶混合发送包括来自于其他远程主机的日志在内的所有可见日志。
此选项与
journalctl(1)
的 --merge
选项的含义相同。
-D
, --directory=DIR
¶接受一个以绝对路径表示的目录,
表示仅发送指定目录下的日志(而不是默认的运行时和系统日志目录中的日志)。
此选项与
journalctl(1)
的
--directory=
选项的含义相同。
--file=GLOB
¶GLOB
是一个可以包含"?"与"*"的文件路径匹配模式。
表示仅发送与
GLOB
模式匹配的文件中的日志(而不是默认的运行时和系统日志目录中的日志)。
可以多次使用此选项以指定多个匹配模式(多个模式之间用"OR"逻辑连接)。
此选项与
journalctl(1)
的 --file=
选项的含义相同。
--cursor=
¶仅发送从指定的游标(cursor)开始的日志。
此选项与
journalctl(1)
的 --cursor=
选项的含义相同。
--after-cursor=
¶仅发送
从指定的游标(cursor)之后开始的日志。
此选项与
journalctl(1)
的 --after-cursor=
选项的含义相同。
--save-state
[=PATH
]¶仅发送从 PATH
文件中记录的游标(cursor)之后开始的日志。
PATH
的默认值是
/var/lib/systemd/journal-upload/state
。
注意,每成功上传一个日志事件, PATH
文件的内容都将被自动同步更新为该日志事件的游标(cursor)值。
--follow
[=BOOL
]¶是否让 systemd-journal-upload 等待输入。
--key=
¶
PEM 格式的 SSL 私钥文件的路径。
默认值是 /etc/ssl/private/journal-upload.pem
。
--cert=
¶
PEM 格式的 SSL 证书文件的路径。
默认值是 /etc/ssl/certs/journal-upload.pem
。
--trust=
¶
PEM 格式的 SSL CA 证书文件的路径。
特殊值 all
表示
禁止检查证书的有效性。
默认值是 /etc/ssl/ca/trusted.pem
。
-h
, --help
¶--version
¶例 1. 设置用于身份认证的证书
一方面,由可信CA签名的证书可以用于验证接收日志的服务器是否真实可信。 另一方面, 也可以使用证书来验证发送日志的客户端是否真实可信。
可以使用 openssl 工具来生成证书以及对证书进行签名, 注意,为了保障安全,密钥长度不应少于 2048 位:
openssl req -newkey rsa:2048 -days 3650 -x509 -nodes \ -out ca.pem -keyout ca.key -subj '/CN=Certificate authority/' cat >ca.conf <<EOF [ ca ] default_ca = this [ this ] new_certs_dir = . certificate = ca.pem database = ./index private_key = ca.key serial = ./serial default_days = 3650 default_md = default policy = policy_anything [ policy_anything ] countryName = optional stateOrProvinceName = optional localityName = optional organizationName = optional organizationalUnitName = optional commonName = supplied emailAddress = optional EOF touch index echo 0001 >serial SERVER=server CLIENT=client openssl req -newkey rsa:2048 -nodes -out $SERVER.csr -keyout $SERVER.key -subj "/CN=$SERVER/" openssl ca -batch -config ca.conf -notext -in $SERVER.csr -out $SERVER.pem openssl req -newkey rsa:2048 -nodes -out $CLIENT.csr -keyout $CLIENT.key -subj "/CN=$CLIENT/" openssl ca -batch -config ca.conf -notext -in $CLIENT.csr -out $CLIENT.pem
生成的 ca.pem
,
server.pem
,
server.key
文件应该安装到接收日志的服务器端;
而生成的 ca.pem
,
client.pem
,
client.key
文件应该安装到发送日志的客户端。
这些文件的位置可以分别使用 /etc/systemd/journal-remote.conf
与 /etc/systemd/journal-upload.conf
配置文件中的 TrustedCertificateFile=
,
ServerCertificateFile=
,
ServerKeyFile=
选项来指定。
这些文件的默认位置
可以使用
systemd-journal-remote --help 与
systemd-journal-upload --help 命令来显示。