目前网上已有 pm2-zabbix 工具可以实现 Zabbix 对 Node.js 的监控报警,Github地址

特征:
  • 自动发现通过 PM2 管理的 Node.js 进程。
  • 报告 Nodes.js 进程状态、CPU 使用率、内存占用以及进程是否重启。
  • 监控 PM2 守护进程自身状态、资源占用和 PID 改变。
  • 已提供易于安装的 Zabbix 监控项模板。
本文示例说明:

操作系统:RHEL/CentOS 7系列或者其它支持 systemd 管理服务的 Linux 发行版

服务运行账号:

  • Node.js: node
  • Zabbix: zabbix

程序安装路径:

  • Node.js: /App/node
  • Zabbix: /App/zabbix
1.Node.js 服务器 root 账号安装 pm2-zabbix
npm install -g pm2-zabbix
2.终端切换至 node 账号,测试自动发现功能是否正常:
su - node 
/App/node/bin/pm2-zabbix --discover
  • 若输出类似结果,则表明安装成功:
    {
        "data": [
                {
                        "{#PROCESS_ID}": "qb_node-0",
                        "{#PROCESS_NAME}": "qb_node"
                },
                {
                        "{#PROCESS_ID}": "qb_node-1",
                        "{#PROCESS_NAME}": "qb_node"
                },
                {
                        "{#PROCESS_ID}": "qb_node-2",
                        "{#PROCESS_NAME}": "qb_node"
                },
                {
                        "{#PROCESS_ID}": "qb_node-3",
                        "{#PROCESS_NAME}": "qb_node"
                }
        ]
    }
3.克隆代码至 Node.js 服务器:
git clone https://github.com/greatcare/pm2-zabbix.git
4.登录 Zabbix Web 管理后台,导入模板文件 pm2-zabbix/install/zabbix-server/pm2-zabbix.template.xml
5.Node.js 服务器添加服务,并修改文件 pm2-zabbix.service 内容为 User=node
cp pm2-zabbix/install/init/systemd/pm2-zabbix.service /usr/lib/systemd/system/
6.新建软连接:
mkdir -p /etc/zabbix
ln -s /App/zabbix/etc/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf
ln -s /App/zabbix/bin/zabbix_sender /usr/bin/zabbix_sender
ln -s /App/node/bin/node /usr/bin/node
ln -s /App/node/bin/pm2-zabbix /usr/local/bin/pm2-zabbix
7.启动 pm2-zabbix 服务:
systemctl start pm2-zabbix
8.修改 Zabbix Agent 配置文件 zabbix_agentd.conf,添加包含其它配置:
Include=/App/zabbix/etc/zabbix_agentd.conf.d/*.conf
9.拷贝 Zabbix Agent 配置:
cp pm2-zabbix/install/zabbix-agent/pm2-zabbix.conf /App/zabbix/etc/zabbix_agentd.conf.d/
10.修改文件 pm2-zabbix.conf 内容:
UserParameter=pm2.processes,sudo -u node /usr/local/bin/pm2-zabbix --discover
11.服务器终端执行程序 visudo 添加 sudo 配置:
zabbix  ALL=(ALL:ALL) NOPASSWD: /usr/local/bin/pm2-zabbix
Defaults:zabbix !requiretty
12.重启 Node.js 服务器 Zabbix Agent 服务:
/etc/init.d/zabbix_agentd restart
13.Zabbix Web 管理后台设置 Node.js 服务器添加链接 Template App PM2 模板后效果:

PM2 Daemon CPU Usage
PM2 Daemon Memory Usage
PM2's {#PROCESS_ID} CPU Usage
PM2's {#PROCESS_ID} Memory Usage