使用 PM2 和日志工具 ELK 实现 Node.js 进程监控

阅读时长 5 分钟读完

前言

随着 Node.js 在 web 开发中的广泛应用,越来越多的人开始关注如何对 Node.js 进程进行监控和管理。而 PM2 和 ELK 是两个常用的工具,可以帮助我们实现 Node.js 进程的监控和管理,本文将详细介绍如何使用这两个工具。

PM2 简介

PM2 是一个进程管理工具,可以帮助我们管理 Node.js 进程。PM2 支持自动重启、负载均衡、集群模式等功能。PM2 还有一个重要的特点是可以将各个进程的日志输出到一个文件中,这使得我们可以更方便地查看和分析日志。

ELK 简介

ELK 是一个日志管理工具,包含 Elasticsearch、Logstash 和 Kibana 三个组件。Elasticsearch 是一个基于 Lucene 的搜索引擎,可以帮助我们将日志数据存储到可搜索的索引中。Logstash 是一个日志收集器,可以帮助我们从不同来源收集日志数据,并将其传输到 Elasticsearch 中。Kibana 是一个可视化工具,可以帮助我们在 Elasticsearch 中搜索、分析和可视化日志数据。

使用 PM2 和 ELK 实现 Node.js 进程监控

下面是使用 PM2 和 ELK 实现 Node.js 进程监控的流程:

  1. 安装 PM2 和 ELK

    PM2 和 ELK 都可以使用 npm 安装,具体安装方式可以参考官方文档。

  2. 创建 Node.js 项目

    在本地创建一个简单的 Node.js 项目,并安装好相应的依赖。

  3. 使用 PM2 启动 Node.js 进程

    使用 PM2 启动 Node.js 进程,可以使用以下命令:

    这会启动一个名为 app 的进程。使用 pm2 list 命令可以查看所有进程的信息。

  4. 配置 PM2 和 ELK

    首先,我们需要配置 PM2 将进程的日志输出到一个文件中,这可以通过修改 pm2 的配置文件来实现。打开 ~/.pm2/pm2rc.json 文件,添加以下配置:

    这会将日志输出到 ~/logs/pm2/app.log 文件中。另外,我们还需要在 Node.js 项目中使用 console.log() 输出日志,这样才能让 PM2 将日志输出到文件中。

    接下来,我们需要配置 Logstash 将日志数据收集并传输到 Elasticsearch 中。我们可以创建一个 logstash.conf 文件,添加以下配置:

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

    这会将 ~/logs/pm2/*.log 目录下的所有日志文件收集到 Logstash 中,并使用 grok 来解析日志数据。最后,将数据传输到 Elasticsearch 中,并指定索引名为 pm2-YYYY.MM.dd

  5. 查看日志数据

    打开 Kibana,可以看到 Elasticsearch 中已经存储了 pm2 的日志数据。可以在 Kibana 中搜索、分析和可视化这些数据。

示例代码

以下是一个简单的 Node.js 项目,用于测试使用 PM2 和 ELK 实现 Node.js 进程监控。

app.js:

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

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

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

pm2rc.json:

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

logstash.conf:

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

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

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

总结

使用 PM2 和 ELK 实现 Node.js 进程监控可以帮助我们更好地管理和分析 Node.js 进程的日志数据。本文介绍了如何使用 PM2 和 ELK 实现 Node.js 进程监控,并提供了示例代码,希望可以帮助读者更好地使用这两个工具。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6478596e968c7c53b04987f4

纠错
反馈