前言
在开发过程中,日志记录是重要的一环,能够记录下系统运行时的各种信息,帮助我们分析和定位问题,并且在未来的优化和升级中也有着重要的作用。在前端开发中,我们常常使用 Node.js 作为后端,而 PM2 是一个非常常用的 Node.js 进程管理工具,也是实现集中式日志记录的最佳选择之一。
本文将会介绍如何使用 PM2 实现集中式日志记录,包括 PM2 日志记录器的配置、日志文件的转发和集中存储等内容。
PM2 日志记录器的配置
PM2 默认情况下是支持日志记录的,可以使用 pm2 logs
命令来查看所有进程的日志记录。但是其默认方式并不支持将所有进程的日志记录转发到一个地方,因此需要配置 pm2-logrotate
日志记录器,此记录器可以将所有进程的日志记录发送到一个目标位置。
首先,需要使用 npm 安装 pm2-logrotate
:
npm install pm2-logrotate --save
然后,将以下代码添加到配置文件中:
-- -------------------- ---- ------- - -- --- ------------------ ----------- ---------- ----------- --------------- ----------- ------- ---------------------- ----- ---------------------- ------- ------------ - ----------------- ----- ------------------- ----- ----------------- ------ ---------------- ------ ---------- ---- - ---- - ---- ------------- ----------- ---------- ------- --- ----------------- ------ - -
其中,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 包:
sudo apt-get install rsyslog
然后,我们需要将 rsyslog 默认的转发规则修改为我们自己的规则。在 /etc/rsyslog.conf
文件中添加以下两行:
$ModLoad imfile $InputFileName /path/to/pm2.log $InputFileTag pm2: $InputFileStateFile state-pm2 $InputFileSeverity info $InputFileFacility local7 $InputRunFileMonitor if $programname == 'pm2' then @@logstash-ip:5000
其中 /path/to/pm2.log
是 PM2 日志文件的路径,logstash-ip:5000
是我们要转发到的目标地址。
集中存储
最后,我们需要配置一个日志服务来接收转发的日志记录,并保存到数据库中。在本示例中,我们将使用 Logstash 和 Elasticsearch 作为我们的日志服务。
首先,需要下载并安装 lateset 的 Logstash 和 Elasticsearch。
然后,创建 Logstash 配置文件 logstash.conf
:
-- -------------------- ---- ------- ----- - ------ - ---- -- ---- ---- -- ----- - - ------ - ------------- - ----- -- - ---------------- - ----- -- -------------------- - -
其中,input
部分指定我们要接收的日志来源,这里我们使用的是 Syslog 协议,监听 5000 端口,type
为 "pm2"。output
部分指定我们要发送到的 Elasticsearch 的地址和索引名称。
最后,启动 Logstash:
bin/logstash --verbose -f logstash.conf
日志记录就会被转发并存储到 Elasticsearch 中了。可以通过以下 Kibana 查询语句来查看我们的日志记录:
index: pm2-*
总结
本文介绍了如何使用 PM2 实现集中式日志记录,包括 PM2 日志记录器的配置、日志文件的转发和集中存储等内容,并通过示例展示了实现过程。希望读者能够掌握这些知识,并将其应用到自己的项目开发中。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64719a86968c7c53b0f7b468