【问题标题】:Centralized logging with Kafka and ELK stack使用 Kafka 和 ELK 堆栈进行集中式日志记录
【发布时间】:2019-11-26 13:42:44
【问题描述】:

有超过 50 个 Java 应用程序(它们不是微服务,所以我们不必担心服务的多个实例)。现在我的架构师设计了一个解决方案来获取日志文件并将其输入到 kafka 主题中,然后从 kafka 将其输入到 logstash 并将其推送到弹性搜索,以便我们可以在 kibana 中查看日志。现在我是 Kafka 和 ELK 堆栈的新手。有人会为我指出如何完成这项任务的正确方向吗?我了解到可以将 Log4J 和 SLF4J 配置为将日志推送到 kafka 主题。 1.现在如何从kafka消费并加载到logstash?我是否必须编写一个 kafka 消费者或者我们可以通过配置来做到这一点? 2.logstash 如何将日志提供给弹性搜索? 3. 如何区分所有 50 个应用程序日志,是否必须为每个应用程序创建主题?

我把业务问题,现在我需要一步一步的专家建议。 - 提前致谢。

【问题讨论】:

    标签: elasticsearch apache-kafka logstash kibana


    【解决方案1】:

    Logstash 有一个kafka 输入和一个elasticsearch 输出,所以这是logstash 端的配置。您可以使用 log4j 端的配置来区分应用程序(尽管使用许多主题是另一种可能性)。

    【讨论】:

      【解决方案2】:

      基本上,您的架构师为您布置的内容可以根据其功能(在架构级别)分为两个主要组件;

      1. 日志缓冲区(Kafka
      2. 日志摄取器(ELK

        [Java 应用程序] =====> [Kafka] -----> [ELK]

      如果您研究 ELK,您会觉得它足以满足您的解决方案,而 Kafka 会显得多余。然而,Kafka 在规模方面发挥着重要作用。当您的许多 Java 应用程序将日志发送到 ELK 时,ELK 可能会过载并中断。 为了避免 ELK 过载,您的架构师设置了一个缓冲区 (Kafka)。 Kafka 将从应用程序接收日志并将其排队,以防 ELK 负载不足。这样,您就不会破坏 ELK,也不会在 ELK 挣扎时丢失日志。

      以相同的顺序回答您的问题; (1) Logstash 具有“输入”插件,可用于设置 Kafka 和 Logstash 之间的链接。阅读 Logstash 及其插件。

      我-Logstash Guide or Reference ii- Input Plugins(向下滚动找到 Kafka 插件)

      (2) Logstash 将通过Output plugin 为Elasticsearch 将收到的日志提供给Elasticsearch。 See Logstash output plugin for Elasticsearch.

      (3) 我可能对此并不了解,但我认为一旦从 Kafka 收到日志,您就可以在 Logstash 级别过滤和区分日志。您可以在接收时将标签或字段应用于每条日志消息。 Elasticsearch 将使用这些附加信息来区分应用程序。

      实施步骤

      作为 Kafka 和 ELK 的新手,请按照以下步骤解决您的问题;

      第 1 步:首先设置 ELK。完成此操作后,您将能够看到日志是如何可视化的,并且会更清楚最终解决方案的外观。

      Guide to ELK Stack

      第 2 步:设置 Kafka 以将您的应用程序日志链接到 ELK。

      注意事项:

      1. 您可能会发现 ELK 有一些不错的学习曲线。需要大量时间来了解 ELK 堆栈中的每个元素是如何工作的,以及它各自的配置和语言是什么。

      2. 要深入了解 ELK,请使用您在系统上设置 ELK 的本地部署路径。避免使用云 ELK 服务。

      【讨论】:

        猜你喜欢
        • 2017-04-09
        • 2015-02-16
        • 2015-09-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-01-22
        • 1970-01-01
        相关资源
        最近更新 更多