如何使用node.js设置ELK

问题描述 投票:0回答:3

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

node.js elasticsearch logstash kibana
3个回答
12
投票

我在以前的组织中也有这样的用例。使用 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

希望这有帮助!


5
投票

可以在不运行代理的情况下使用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'
  }
}

2
投票

您可以在 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

© www.soinside.com 2019 - 2024. All rights reserved.