Zabbix添加Node.js监控

原创
2016/10/12 09:49
阅读数 3.9K

目前网上已有 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

展开阅读全文
打赏
2
27 收藏
分享
加载中
董松博主

引用来自“木易水瓶”的评论

hello,博主,请教一个问题,pm2-zabbix安装后,在重启这个服务后,将杀死nodejs进程,不知道有没有遇到过,有没有联系方式,可以交流下

引用来自“董松”的评论

你可以先启动服务后再启pm2-zabbix。

引用来自“木易水瓶”的评论

启动服务后在启动pm2-zabbix,现在遇到重新pm2-zabbix服务后,获取不到新开启的nodejs进程list。以及还存在一个问题就是开机启动后pm2-zabbix服务是自启动,导到服务器启动后,会杀死原有pm2 save保存的列表.无法做开nodejs开机启动.包括重启后pm2-zabbix 产生的新的业务进程,也受到重启影响。不知道楼主是怎么解决这个问题的.

引用来自“董松”的评论

你的pm2-zabbix服务和业务服务进程都是同一个用户起的吗?启动node相关服务的时候,确保当前所在目录是不会删除的,不然会有问题。

引用来自“木易水瓶”的评论

pm2-zabbix与node业务都是用root用户启动的,启动node相关服务的时候,确保当前所在目录是不会删除的这句话怎么理解
还有可能是node版本太新,可能有兼容性问题。之前遇到过node版本兼容问题,降低就好了。已经2年多没用zabbix监控node了。
2019/02/19 14:51
回复
举报

引用来自“木易水瓶”的评论

hello,博主,请教一个问题,pm2-zabbix安装后,在重启这个服务后,将杀死nodejs进程,不知道有没有遇到过,有没有联系方式,可以交流下

引用来自“董松”的评论

你可以先启动服务后再启pm2-zabbix。

引用来自“木易水瓶”的评论

启动服务后在启动pm2-zabbix,现在遇到重新pm2-zabbix服务后,获取不到新开启的nodejs进程list。以及还存在一个问题就是开机启动后pm2-zabbix服务是自启动,导到服务器启动后,会杀死原有pm2 save保存的列表.无法做开nodejs开机启动.包括重启后pm2-zabbix 产生的新的业务进程,也受到重启影响。不知道楼主是怎么解决这个问题的.

引用来自“董松”的评论

你的pm2-zabbix服务和业务服务进程都是同一个用户起的吗?启动node相关服务的时候,确保当前所在目录是不会删除的,不然会有问题。
pm2-zabbix与node业务都是用root用户启动的,启动node相关服务的时候,确保当前所在目录是不会删除的这句话怎么理解
2019/02/18 21:01
回复
举报
董松博主

引用来自“木易水瓶”的评论

hello,博主,请教一个问题,pm2-zabbix安装后,在重启这个服务后,将杀死nodejs进程,不知道有没有遇到过,有没有联系方式,可以交流下

引用来自“董松”的评论

你可以先启动服务后再启pm2-zabbix。

引用来自“木易水瓶”的评论

启动服务后在启动pm2-zabbix,现在遇到重新pm2-zabbix服务后,获取不到新开启的nodejs进程list。以及还存在一个问题就是开机启动后pm2-zabbix服务是自启动,导到服务器启动后,会杀死原有pm2 save保存的列表.无法做开nodejs开机启动.包括重启后pm2-zabbix 产生的新的业务进程,也受到重启影响。不知道楼主是怎么解决这个问题的.
你的pm2-zabbix服务和业务服务进程都是同一个用户起的吗?启动node相关服务的时候,确保当前所在目录是不会删除的,不然会有问题。
2019/02/18 14:25
回复
举报

引用来自“木易水瓶”的评论

hello,博主,请教一个问题,pm2-zabbix安装后,在重启这个服务后,将杀死nodejs进程,不知道有没有遇到过,有没有联系方式,可以交流下

引用来自“董松”的评论

你可以先启动服务后再启pm2-zabbix。
启动服务后在启动pm2-zabbix,现在遇到重新pm2-zabbix服务后,获取不到新开启的nodejs进程list。以及还存在一个问题就是开机启动后pm2-zabbix服务是自启动,导到服务器启动后,会杀死原有pm2 save保存的列表.无法做开nodejs开机启动.包括重启后pm2-zabbix 产生的新的业务进程,也受到重启影响。不知道楼主是怎么解决这个问题的.
2019/02/15 12:19
回复
举报
董松博主

引用来自“木易水瓶”的评论

hello,博主,请教一个问题,pm2-zabbix安装后,在重启这个服务后,将杀死nodejs进程,不知道有没有遇到过,有没有联系方式,可以交流下
你可以先启动服务后再启pm2-zabbix。
2019/02/14 12:58
回复
举报
hello,博主,请教一个问题,pm2-zabbix安装后,在重启这个服务后,将杀死nodejs进程,不知道有没有遇到过,有没有联系方式,可以交流下
2019/02/12 18:39
回复
举报
董松博主

引用来自“彩笔~”的评论

pm2启动脚本不支持centos6.5的说
可以尝试切换至node账号后直接运行命令 nohup /usr/local/bin/pm2-zabbix --monitor &,或者tmux、screen后台运行,这也是变通的方法。理论上其他系统也可以。
2017/06/15 09:42
回复
举报
pm2启动脚本不支持centos6.5的说
2017/06/14 10:27
回复
举报
董松博主

引用来自“水枪”的评论

补充,我在nodejs上运行pm2-zabbix --discover是又返回结果的:
{
  "data": [
    {
      "{#PROCESS_ID}": "app-0",
      "{#PROCESS_NAME}": "app"
    },
    {
      "{#PROCESS_ID}": "app-1",
      "{#PROCESS_NAME}": "app"
    }
  ]

引用来自“董松”的评论

检查下启动node服务的账号名是和监控设置的账号一致吗,还有各种程序的路径以及权限

引用来自“水枪”的评论

似乎我的pm2-zabbix没有启动,找不到pid文件,但是我又不知道该怎么启动,service start pm2-zabbix不行,我已经把pm2
-zabbix的权限改777了,我最初是装了start-stop-deamon后,通过start-stop-daemon --start --oknodo --user $DAEMON_USER --chuid $DAEMON_USER --pidfile $PIDFILE --make-pidfile --background --startas /usr/bin/env -- "HOME=$DAEMON_HOME" $DAEMON --monitor启动的,变量都做了替换。难道您当初通过service start就直接启动了吗
你把文件发给我,加我QQ:294121813,我们系统是centos 7,systemctl直接启动没问题。还有start-stop-deamon这个东西是什么鬼,脚本改正确拷贝到对应位置下加执行权限应该就可以启动服务了。
2017/05/09 18:17
回复
举报

引用来自“水枪”的评论

补充,我在nodejs上运行pm2-zabbix --discover是又返回结果的:
{
  "data": [
    {
      "{#PROCESS_ID}": "app-0",
      "{#PROCESS_NAME}": "app"
    },
    {
      "{#PROCESS_ID}": "app-1",
      "{#PROCESS_NAME}": "app"
    }
  ]

引用来自“董松”的评论

检查下启动node服务的账号名是和监控设置的账号一致吗,还有各种程序的路径以及权限
似乎我的pm2-zabbix没有启动,找不到pid文件,但是我又不知道该怎么启动,service start pm2-zabbix不行,我已经把pm2
-zabbix的权限改777了,我最初是装了start-stop-deamon后,通过start-stop-daemon --start --oknodo --user $DAEMON_USER --chuid $DAEMON_USER --pidfile $PIDFILE --make-pidfile --background --startas /usr/bin/env -- "HOME=$DAEMON_HOME" $DAEMON --monitor启动的,变量都做了替换。难道您当初通过service start就直接启动了吗
2017/05/08 16:43
回复
举报
更多评论
打赏
18 评论
27 收藏
2
分享
返回顶部
顶部