1

我有 12 个日志 (log4j) 文件,我想在 Logstash/Kibana 中建立索引。

最好将每个 log4j.xml 文件更改为附加到本地主机上的单个 logstash 代理(1 对 1 映射),然后推送到运行 Kibana 的远程主机上的 ElasticSearch?

所以应用服务器上有 12 个 logstash 代理。

或者

最好将每个 log4j.xml 文件更改为附加到远程主机上匹配的 logstash 代理(1 对 1 映射),然后推送到 ElasticSearch(与 Kibana 在同一主机上运行)?

那么运行 ElasticSearch 和 Kibana 的删除服务器上有 12 个 logstash 代理?

如果我选择选项 2,那么我需要在 Kibana 服务器上定义要打开的 12 个端口。

如果我选择选项 1,那么我只需要打开一个端口,即 9200(弹性搜索端口)。

我应该采取什么建议的方法?我错过了 Logstash 的技巧吗?

注意:它来自一个 QA 服务器的 12 个日志文件,如果我包括其他 3 个 QA 服务器,那么我需要为每个 QA 服务器打开 12 个端口。不是我热衷于做的事情。

我正在使用 log4j appender,因为服务器是 Windows,我还没有让 logstash 代理直接读取应用程序日志(文件锁定问题)。

  • 日志存储:1.5.0
  • 弹性搜索:1.6.0
  • Kibana:4.1.0-windows
4

1 回答 1

1

Logstash 可以通过一个实例读取多个文件或从多个源接收,因此您不需要设置 12 个 logstash 或做任何复杂的事情。

您的问题的主要问题是:当 logstash 或 elasticsearch 关闭时会发生什么?log4j 是否会将消息排队,直到服务再次恢复?否则,您将丢失消息。

虽然它是老派,但这是我喜欢写入本地日志文件的原因之一。当 logstash 关闭时,它们充当免费的分布式缓存。您还可以设置代理(redis、rabbitmq),但那是需要支持的另一项服务。

于 2015-06-15T15:48:43.363 回答