将 systemd 单元的日志放入平面文件和 logstash

将 systemd 单元的日志放入平面文件和 logstash

我在 CentOS 7 中的 systemd 下运行一个应用程序。它记录到 stdout,systemd 可以很好地将其捕获到 journalctl 中。我还想:

  1. 获取旋转的文本日志文件,并将其保存到本地文件系统,以便我们的系统管理员熟悉
  2. 将这些数据干净地放入 logstash 中,最好只放入应用程序日志,而不是所有的 syslog,其中还包括操作系统消息、其他应用程序等

我最初研究使用 djb 的 daemontools 中的 multilog,但鉴于 systemd 单元文件不喜欢 shell 管道ExecStart,再加上 CentOS 中没有 daemontools 的官方 RPM,我希望有一种不那么笨拙的方法。

我目前有 logstash-forwarder 读取系统日志/var/log/messages/var/log/secure但我不想包含除来自这个特定应用程序之外的其他消息。

答案1

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

Logstash 现在包含systemd 日志输入插件

答案2

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

您需要对该文件进行日志轮换以处理大小问题,否则它会很快填满

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

相关内容