ELK(Elasticsearch,Logstash,Kibana)是当今最常用的日志记录和监控系统之一,能够提供强大的搜索、过滤和可视化功能。而 Hapi 则是一个 Node.js 的 web 框架,以其易用性和强大的扩展性备受前端开发人员的青睐。在本文中,我们介绍如何将 Hapi 框架与 ELK 集成,以便方便地记录和管理后端请求日志。
Hapi 库说明
Hapi 库是一个 Web 框架,它建立在 Node.js 平台之上。由于它的成熟性和丰富的生态系统,它非常受到前端开发人员的欢迎。Hapi 提供许多有用的特性,包括路由、插件机制、请求对象和响应对象等。同时,它还提供了插件机制,使得可以方便地集成其他库和框架。
ELK 库说明
ELK 是由 Elasticsearch、Logstash 和 Kibana 三个开源组件组成的。其中 Elasticsearch 是 NoSQL 数据库,专门用于存储、搜索和分析大量数据。Logstash 是一个日志收集和处理管道,能够从多个来源 (包括 Hapi 应用) 中采集日志,完成过滤、转换、聚合等功能。Kibana 是一个能够对 Elasticsearch 数据进行分析、搜索、可视化的 Web 应用程序。
Hapi 集成 ELK
要将 Hapi 与 ELK 集成,需要集成两部分功能:
- 记录 Hapi 框架的后端请求日志。
- 将日志发送到 ELK 系统,以便分析和可视化。
下面,我们来一步一步地介绍如何实现这些功能。
记录 Hapi 后端请求日志
在 Hapi 框架中,可以通过配置日志选项,轻松记录后端请求日志。具体来说,只需添加以下代码:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- ------ - --- ------------- ----- ----- ----- ------------ ------- - ---- - -------- ----- -- -- ---
在上面的代码中,我们配置了 Hapi 服务器的 log 选项。routes
对象中的 collect
属性告诉 Hapi 框架记录请求日志。现在,我们可以在终端中看到 Hapi 框架产生的日志消息。
将日志发送到 ELK 系统
在成功记录 Hapi 后端请求日志后,我们需要将这些日志发送到 ELK 系统中。为实现这个目标,Logstash 是一种常用的选择,它提供了可配置的输入、过滤器和输出插件。在本文中,我们将介绍使用 Logstash 的 Beats 输入插件。Beats 不仅能够从各种数据源读取日志数据,还能够将这些数据发送到 Logstash 或 Elasticsearch。
在开始使用 Beats 插件之前,我们需要在安装和运行 Logstash。具体来说,在很多情况下,我们可以使用 Docker 来部署一个 Logstash 容器。在这种情况下,我们可以使用以下命令在 Docker 上启动一个 Logstash 容器。
docker run -d --name logstash -p 5044:5044 -v /usr/share/logstash/pipeline:/usr/share/logstash/pipeline -v /usr/share/logstash/config:/usr/share/logstash/config --restart always logstash:7.10.2
在启动 Logstash 之后,我们可以在配置文件 logstash.yml
中定义 Beats 输入插件:
input { beats { port => 5044 } }
上面的配置指定了 Beat 插件接受的端口号。
接下来,我们需要配置 Logstash 发送 Hapi 请求日志到 Elasticsearch。为此,我们可以在文件 logstash.conf
中添加以下代码:
-- -------------------- ---- ------- ----- - ----- - ---- -- ---- - - ------ - -- ------ -- ------ - - ------------- - ---- -------- ------- ---- - ------ -- --------- - - - ------ - ------------- - ----- -- ------------------ ----- -- -------------------------- - ------ - ----- -- --------- - -
在上述代码中,我们定义了一个 filter
将请求和响应消息合并在一个 JSON 对象中,并在 output
部分将数据发送到 Elasticsearch。index
指定了数据在 Elasticsearch 中的索引。
最后,我们需要在 Hapi 应用程序中启用请求日志记录功能,并将这些日志发送到 Logstash。为此,我们需要继续修改 Hapi 服务器的配置选项,使用 good
插件将日志发送到 Logstash:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- ---- - ---------------------- ----- ------ - --- ------------- ----- ----- ----- ------------ ------- - ---- - -------- ----- -- -- --- ----- --------------- - - ------- ----- -------- - ---------- - ----------------- - - ------- --------------- ----- ---------- ----- ------ ---- --------- ---- ------ ---- -------- ---- ---- ------ -- - ------- ---------------- ----- - ------------ ----- ------ ---------- -- -- - - - -- ----- ----------------- ------- ----------------------- -------- ------------------------ ---
在上述代码中,我们将 good
插件设置 logstashReporter
来定义将服务器请求日志发送到 Logstash Beats
的配置选项。由于 good
是一个插件,所以我们需要将其注册到 Hapi 应用程序中。
完整的 Hapi 应用程序集成配置可以在 GitHub 上找到。
总结
本文介绍了如何将 Hapi 框架与 ELK 集成,以方便地记录和管理后端请求日志。我们演示了如何在 Hapi 中配置日志功能,以及如何使用 Logstash 的 Beats 插件将日志数据发送到 Elasticsearch。本文不仅为目前使用 Hapi 和 ELK 技术栈的前端开发人员提供了详细的技术指导,也为初学者提供了建议,帮助他们学习如何将 Hapi 与 ELK 集成。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6544d99c7d4982a6ebeaa3fc