从systemd单元获取日志到平面文件和logstash

我正在CentOS 7下运行systemd下的应用程序。它logging到stdout,systemd正在将它捕获到journalctl中。 我也想:

  1. 得到一个旋转的文本日志文件也保存到本地文件系统熟悉我们的系统pipe理员
  2. 将这些数据干净地放到logstash中,理想情况下只是应用程序日志,而不是所有的syslog,其中还包括OS消息,其他应用程序等

我最初使用djb的daemontools中的multilog进行了研究,但是由于systemd中的单元文件并不喜欢ExecStart shellpipe道, ExecStart对于CentOS中的daemontools没有官方的RPM,所以我希望有一个不太复杂的方法。

我目前有从/var/log/messages/var/log/secure logstash-forwarder读取系统日志,但我宁愿不包括从这个特定的应用程序以外的消息。

logstash的第三方input插件可直接读取systemd日志 。 直接向logstash添加支持仍然是一个悬而未决的问题 。

Logstash现在包含一个systemd日志input插件 。

这只是你的基本解决scheme,像这样的journalctl -f -o json | tee -a /var/log/systemd journalctl -f -o json | tee -a /var/log/systemd

您需要为该文件进行日志轮转才能处理大小,否则会很快填满

绝对考虑到你不需要部署像logstash或fluentd这样的东西