【发布时间】:2019-08-16 15:18:19
【问题描述】:
您好 StackOverflow 大神/常客/用户!
我目前正在为我的服务器上运行的两个应用程序开发一个日志系统。
这里是上下文:
- 服务器 dev1:Ubuntu 服务器 18.04(新安装)
- 正在运行 systemd.service algo-ep
- 正在运行另一个 systemd.service algo-mdw
- 服务器 dev2:Ubuntu 服务器 18.04(新安装)
- 正在运行 systemd.service algo-ep
当我使用 journalctl (systemd-journal) 在 dev1 上 ssh 时,我希望能够读取每个服务的日志。
像这样:journalctl -t dev1_algo_ep -t dev1_algo_mdw -t dev2_algo_ep
所以,我在 dev2 上添加了 rsyslog.d/algo-ep.conf:
if $programname == 'dev2_algo_ep' then {
action(type="omfwd"
queue.type="linkedlist"
queue.filename="algo_fwd"
queue.saveOnShutdown="on"
action.resumeRetryCount="-1"
target="dev1" port="514" protocol="tcp"
)
}
并在 dev1 上添加了rsyslog.d/algo.conf:
module(load="imtcp")
module(load="omjournal")
ruleset(name="remote-dev2") {
action(type="omjournal")
}
input(type="imtcp" port="514" ruleset="remote-dev2")
此时,没问题,我在journalctl中得到了journalctl -r的行:
Nov 23 13:27:47 dev1 dev2_algo_ep[3142]:[15246]: Ep Server listening on localhost:10001...
Nov 23 13:27:47 dev1 dev2_algo_ep[2421]:[15246]: Ep Server stops...
[...]
但是当我尝试journalctl -t dev2_algo_ep:
me@dev1:~$ journalctl -t dev2_algo_ep
-- Logs begin at Fri 2018-06-01 13:54:11 CEST, end at Fri 2018-11-23 13:27:47 CET. --
me@dev1:~$
因为收到日志的 SYSLOG_IDENTIFIER 设置为 dev2_algo_ep[3142]: 而不是 dev2_algo_ep。
所以,我的问题:有没有办法,神奇或明显
- 使用特定的 SYSLOG_IDENTIFIER 将日志从 dev2 导出到 dev1?
- 还是在 dev1 上接收日志并在将其发送到 journald 之前设置特定的 SYSLOG_IDENTIFIER?
- 或者只是为了这样做?
提前感谢您的建议、帮助和信息!
[编辑] 似乎混合 rsyslog + journald 鲜为人知。我在手册页中没有找到任何内容(除了可以在 dev1 的接待处创建模板来重建日志的可能性,但对我来说看起来很奇怪)。
【问题讨论】:
标签: logging systemd ubuntu-server rsyslog systemd-journald