Hapi 框架集成 ELK 记录日志的实践

阅读时长 6 分钟读完

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 集成,需要集成两部分功能:

  1. 记录 Hapi 框架的后端请求日志。
  2. 将日志发送到 ELK 系统,以便分析和可视化。

下面,我们来一步一步地介绍如何实现这些功能。

记录 Hapi 后端请求日志

在 Hapi 框架中,可以通过配置日志选项,轻松记录后端请求日志。具体来说,只需添加以下代码:

-- -------------------- ---- -------
----- ---- - ----------------------
----- ------ - --- -------------
  ----- -----
  ----- ------------
  ------- -
    ---- -
      -------- -----
    --
  --
---

在上面的代码中,我们配置了 Hapi 服务器的 log 选项。routes 对象中的 collect 属性告诉 Hapi 框架记录请求日志。现在,我们可以在终端中看到 Hapi 框架产生的日志消息。

将日志发送到 ELK 系统

在成功记录 Hapi 后端请求日志后,我们需要将这些日志发送到 ELK 系统中。为实现这个目标,Logstash 是一种常用的选择,它提供了可配置的输入、过滤器和输出插件。在本文中,我们将介绍使用 Logstash 的 Beats 输入插件。Beats 不仅能够从各种数据源读取日志数据,还能够将这些数据发送到 Logstash 或 Elasticsearch。

在开始使用 Beats 插件之前,我们需要在安装和运行 Logstash。具体来说,在很多情况下,我们可以使用 Docker 来部署一个 Logstash 容器。在这种情况下,我们可以使用以下命令在 Docker 上启动一个 Logstash 容器。

在启动 Logstash 之后,我们可以在配置文件 logstash.yml 中定义 Beats 输入插件:

上面的配置指定了 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

纠错
反馈