Filebeat kafka 输出使用文件名作为键

Filebeat kafka output use filename as key

我想使用 filebeat 5.4.0 将日志发送到 kafka。我的日志都是docker容器日志,在/var/lib/docker/containers/*/${container_name}.log,或者softlink/var/log/containers/${appname}-${container_name}.log.

我想将所有应用程序日志保存到kafka 中的一个主题。我的要求是:

  1. 确保来自同一个容器的日志到同一个分区 按顺序。
  2. 消息必须包含应用名称和出现的 container_name。

我面临两个问题。

  1. 如何从软件获取日志link?
  2. 如何从文件名中获取appname和container_name,并设置为output.kafka的key?

Beats 应该是轻量级的,如果你想做更多的过滤,那么这就是 logstash 的用途。您可以使用 filebeats+logstash+kafka。在发送到 kafka 之前,使用 logstash 的 split filter。 您也可以在 filebeats 中使用 'type' 属性 来映射日志路径,如下所示 ... 路径:

  • "/var/log/container/${appname}-${container_name}"

    document_type: 日志 output.kafka: ... 键:'%{[type]}' ...