【问题标题】:How to setup ELK with node.js如何使用 node.js 设置 ELK
【发布时间】:2018-01-25 10:03:22
【问题描述】:

我想将错误从我的 node.js 服务器记录到另一台服务器。我正在考虑使用elasticsearch、logstash 和kibana。我想知道如何使用我的节点服务器设置 ELK。

【问题讨论】:

    标签: node.js elasticsearch logstash kibana


    【解决方案1】:

    在我的旧组织中,我正好有这个用例。使用 Beats + ELK 启动的基本教程 - https://www.elastic.co/guide/en/beats/libbeat/current/getting-started.html

    所以基本上这就是它的工作原理 - 您的 nodejs 应用程序将以不同的格式(例如错误/警告/信息等)登录文件(您可以使用 bunyan)。Filebeat 将跟踪这些日志文件并将消息发送到 logstash 服务器. Logstash input.conf 将有一些输入过滤器(在您的情况下,它将是错误过滤器)。当任何日志消息通过这些过滤器时,logstash 会将其转发到 output.conf 文件中决定的某个端点。

    这就是我们所做的 -

    初始架构 - 安装 filebeat(之前我们使用 logstash 转发器)客户端来跟踪 nodejs 服务器上的日志并将其转发到 logstash 机器。 Logstash 将对输入日志做一些处理并将它们发送到 ES 集群(可以与 Logstash 在同一台机器上)。 Kibana 只是这个 ES 上的一个可视化。

    最终架构 - 初始设置对于小流量来说很酷,但我们意识到,logstash 可能是单点故障,并且可能在流量增加时导致日志丢失。因此,我们将 Kafka 与 Logstash 集成在一起,以便系统平滑扩展。这是一篇文章-https://www.elastic.co/blog/logstash-kafka-intro

    希望这会有所帮助!

    【讨论】:

    • 感谢@aky 的回复。您能否指导我逐步完成设置所需的基本安装、conf 文件以及如何从 node.js 层登录。
    • 用每个组件和步骤的教程编辑答案:)
    • 有帮助吗?或者您需要任何其他帮助?
    • 感谢@aky 的安装指南。我想知道如何将错误从我的 node.js 服务器记录到 logstash 服务器,然后到 elasticsearch。
    • 我可以使用 winston 在我的 node.js 部分的文件中记录错误。我想知道这里有没有其他选项可以直接从节点记录错误到logstash服务器而不使用filebeat?
    【解决方案2】:

    可以在没有运行代理的情况下使用 logstash 从应用程序收集日志。 Logstash 有输入插件 (https://www.elastic.co/guide/en/logstash/current/input-plugins.html)。这可以在管道中进行配置。一种基本设置是配置 TCP (https://www.elastic.co/guide/en/logstash/current/plugins-inputs-tcp.html) 或 UDP (https://www.elastic.co/guide/en/logstash/current/plugins-inputs-udp.html)input 插件。Logstash 可以侦听插件中配置的端口。 然后应用程序可以将日志直接发送到 logstash 服务器。然后管道可以转换并转发到 ES。 通过将 Logstash 管道配置为持久性,可以避免数据丢失。当应用程序服务器是临时的(例如在容器中)时,这种方法会更好。

    对于 nodejs,https://www.npmjs.com/package/winston-logstash 是一个非常活跃的包。这个要点https://gist.github.com/jgoodall/6323951 为其他语言的整体方法提供了一个很好的例子。

    这是示例(最小)TCP 输入插件配置

    input {
      tcp {
      'port' => '9563'
      }
    }
    

    【讨论】:

      【解决方案3】:

      您可以在 NodeJS 服务器中安装 Logstash,然后创建一个接受输入(日志文件的位置)并输出到您的 Elastic Server 主机的配置文件。

      以下是必须在您的 logstash 目录中创建的示例配置文件 (custom.conf)。

          input {
          file {
          path => "/path to log"
          start_position => beginning
          }
          }
          output {
          stdout { }
          elasticsearch{
          type => "stdin-type"
          embedded => false
          host => "192.168.0.23"
          port => "9300"
          cluster => "logstash-cluster"
          node_name => "logstash"
          }
          }
      

      执行logstash

          logstash -f custom.conf
      

      参考:https://www.elastic.co/guide/en/logstash/current/config-examples.html

      如果您计划自定义 NodeJS 应用程序以发送错误日志,那么您可以安装一些 ELKStack Nodjs 包装器并在您的应用程序中发布错误日志。 ELKStack Nodjs 包装器 - https://www.npmjs.com/package/elksdk

      【讨论】:

        猜你喜欢
        • 2016-04-10
        • 1970-01-01
        • 2018-09-13
        • 1970-01-01
        • 2020-06-03
        • 1970-01-01
        • 2014-10-20
        • 2014-03-02
        • 1970-01-01
        相关资源
        最近更新 更多