sau*_*jan 5 node.js elasticsearch logstash kibana
我想将错误从我的node.js服务器记录到另一台服务器。我正在考虑使用elasticsearch,logstash和kibana。我想知道如何用我的节点服务器设置ELK。
在我的旧组织中,我正好有这个用例。使用 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)输入插件。Logstash 可以监听插件中配置的端口。然后应用程序可以将日志直接发送到logstash服务器。然后管道可以转换并转发到 ES。通过将 Logstash 管道配置为持久的,可以避免数据丢失。当应用程序服务器是临时的(如在容器中)时,这种方法更好。
对于nodejs,https://www.npmjs.com/package/winston-logstash是一个非常活跃的包。这个要点https://gist.github.com/jgoodall/6323951为其他语言的整体方法提供了一个很好的例子。
这是示例(最小)TCP 输入插件配置
input {
tcp {
'port' => '9563'
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9733 次 |
| 最近记录: |