如何配置 systemd journal-remote 来监听特定端口?
我所能找到的只是命令行示例。根据手册页,journal-remote.conf 中似乎没有任何选项。
答案1
看到连一条评论都没有,我决定继续研究,最终把配置拼凑起来。
操作系统:Ubuntu 16.04
systemd:229-1ubuntu2
systemd-journal-远程:229-1ubuntu2
上传服务器配置
这个其实比较简单,网上的例子都是正确的,只需要触碰一个配置文件就可以了。
使用以下命令安装systemd-journal-remote
sudo apt-get install systemd-journal-remote
编辑/etc/systemd/journal-upload.conf
。
/etc/systemd/journal-upload.conf
[Upload]
URL=http://10.0.0.1:19532
# ServerKeyFile=/etc/ssl/private/journal-upload.pem
# ServerCertificateFile=/etc/ssl/certs/journal-upload.pem
# TrustedCertificateFile=/etc/ssl/ca/trusted.pem
确保 journal-upload 在启动时自动启动
sudo systemctl enable systemd-journal-upload.service
配置完成后重新启动 journal-upload。
sudo systemctl restart systemd-journal-upload.service
如果您使用的是 http,则可以按上述操作,并将底部 3 行保留注释。对于主动模式 https,请取消注释它们并创建这些证书文件。
URL 实际上决定了要使用的传输协议(http/https)和目标端口。
此外,如果您想防止将来的软件包更新意外覆盖,您可以创建一个 /etc/systemd/journal-upload.conf.d 目录并将您的配置文件放在里面,只要该文件以 .conf 扩展名结尾。
顺便说一句,我是在 LXC 容器中执行此操作的,似乎服务不会使用 /etc/hosts 进行 DNS 解析,因此我最终在这里使用 IP 地址。因此,如果您使用主机名并看到 journal-upload 无法到达目标的错误消息,请尝试使用 IP 地址。
接收服务器配置
接收服务器给我带来了大部分查找配置信息的麻烦。与上传服务器不同,配置分散在这一侧。
使用以下命令安装 systemd-journal-remote 并启用监听端口
sudo apt-get install systemd-journal-remote
sudo systemctl enable systemd-journal-remote.socket
配置 journal-remote 有两种方式,主动和被动。我这里使用被动模式。
端口号
日志监听端口的配置文件如下/etc/systemd/system/sockets.target.wants/systemd-journal-remote.socket
,ListenStream 为端口号。
与上传端不同,此项设置与使用哪种协议(http/https)无关。它仅指定监听的端口号。
[Unit]
Description=Journal Remote Sink Socket
[Socket]
ListenStream=19532
[Install]
WantedBy=sockets.target
协议(http/https)和日志/日志位置
要更改日志传输的协议和保存位置,请复制/lib/systemd/system/systemd-journal-remote.service
到/etc/systemd/system/
,然后编辑/etc/systemd/system/systemd-journal-remote.service
。
[Unit]
Description=Journal Remote Sink Service
Documentation=man:systemd-journal-remote(8) man:journal-remote.conf(5)
Requires=systemd-journal-remote.socket
[Service]
ExecStart=/etc/systemd/systemd-journal-remote \
--listen-http=-3 \
--output=/var/log/journal/remote/
User=systemd-journal-remote
Group=systemd-journal-remote
PrivateTmp=yes
PrivateDevices=yes
PrivateNetwork=yes
WatchdogSec=3min
[Install]
Also=systemd-journal-remote.socket
指定--listen-http=-3
传入日志使用 http。如果要使用 https,请将其更改为--listen-https=-3
。
--output=/var/log/journal/remote/
指定传入日志的接收器(保存目录)。如果不存在,则创建它并将其所有者更改为systemd-journal-remote
。
sudo mkdir /var/log/journal/remote
sudo chown systemd-journal-remote /var/log/journal/remote
配置完成后重新启动journal-remote.socket。
sudo systemctl daemon-reload
最明显的是什么/etc/systemd/journal-remote.conf
?
[Remote]
# Seal=false
# SplitMode=host
# ServerKeyFile=/etc/ssl/private/journal-remote.pem
# ServerCertificateFile=/etc/ssl/certs/journal-remote.pem
# TrustedCertificateFile=/etc/ssl/ca/trusted.pem
由于我没有使用 https,因此不需要更改任何内容。