PM2 实现集中式日志记录的方法

阅读时长 5 分钟读完

前言

在开发过程中,日志记录是重要的一环,能够记录下系统运行时的各种信息,帮助我们分析和定位问题,并且在未来的优化和升级中也有着重要的作用。在前端开发中,我们常常使用 Node.js 作为后端,而 PM2 是一个非常常用的 Node.js 进程管理工具,也是实现集中式日志记录的最佳选择之一。

本文将会介绍如何使用 PM2 实现集中式日志记录,包括 PM2 日志记录器的配置、日志文件的转发和集中存储等内容。

PM2 日志记录器的配置

PM2 默认情况下是支持日志记录的,可以使用 pm2 logs 命令来查看所有进程的日志记录。但是其默认方式并不支持将所有进程的日志记录转发到一个地方,因此需要配置 pm2-logrotate 日志记录器,此记录器可以将所有进程的日志记录发送到一个目标位置。

首先,需要使用 npm 安装 pm2-logrotate

然后,将以下代码添加到配置文件中:

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

其中,logrotate 选项是 pm2-logrotate 的配置项,包括:

  • rotateInterval:定期轮换日志的时间间隔,默认为 1d
  • rotateCompresion:是否开启压缩,默认为 true
  • rotateExisting:是否在启动时轮换日志,默认为 false
  • rotateVerbose:是否开启详细日志记录,默认为 false
  • maxSize:日志文件最大的大小,默认为 1024 * 1024 * 100 即 100M。
  • dateFormat:日志记录日期的格式,默认为 YYYY-MM-DD HH:mm:ss
  • keep:保留轮换后的日志文件个数,默认为 31
  • workerInterval:启动监听的时间间隔,默认为 300000 即 5 分钟。

日志文件的转发

将所有进程的日志记录转发到一个目标位置是实现集中式日志记录的关键步骤。在本示例中,我们将使用 rsyslog 来实现日志文件的转发,它是一个像 syslogd 一样的守护进程,它可以将日志转发到一些目标地方。

首先,需要安装 rsyslog 包:

然后,我们需要将 rsyslog 默认的转发规则修改为我们自己的规则。在 /etc/rsyslog.conf 文件中添加以下两行:

其中 /path/to/pm2.log 是 PM2 日志文件的路径,logstash-ip:5000 是我们要转发到的目标地址。

集中存储

最后,我们需要配置一个日志服务来接收转发的日志记录,并保存到数据库中。在本示例中,我们将使用 Logstash 和 Elasticsearch 作为我们的日志服务。

首先,需要下载并安装 lateset 的 Logstash 和 Elasticsearch。

然后,创建 Logstash 配置文件 logstash.conf

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

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

其中,input 部分指定我们要接收的日志来源,这里我们使用的是 Syslog 协议,监听 5000 端口,type 为 "pm2"。output 部分指定我们要发送到的 Elasticsearch 的地址和索引名称。

最后,启动 Logstash:

日志记录就会被转发并存储到 Elasticsearch 中了。可以通过以下 Kibana 查询语句来查看我们的日志记录:

总结

本文介绍了如何使用 PM2 实现集中式日志记录,包括 PM2 日志记录器的配置、日志文件的转发和集中存储等内容,并通过示例展示了实现过程。希望读者能够掌握这些知识,并将其应用到自己的项目开发中。

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

纠错
反馈