文档章节

Zabbix添加Node.js监控

 董松
发布于 2016/10/12 09:49
字数 499
阅读 1847
收藏 27

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

© 著作权归作者所有

共有 人打赏支持
粉丝 9
博文 42
码字总数 22010
作品 0
朝阳
运维
私信 提问
加载中

评论(18)

董松

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

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了。
木易水瓶

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

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相关服务的时候,确保当前所在目录是不会删除的这句话怎么理解
董松

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

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

引用来自“董松”的评论

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

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

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

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

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

引用来自“董松”的评论

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

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

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

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

pm2启动脚本不支持centos6.5的说
可以尝试切换至node账号后直接运行命令 nohup /usr/local/bin/pm2-zabbix --monitor &,或者tmux、screen后台运行,这也是变通的方法。理论上其他系统也可以。
彩笔~
pm2启动脚本不支持centos6.5的说
董松

引用来自“水枪”的评论

补充,我在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这个东西是什么鬼,脚本改正确拷贝到对应位置下加执行权限应该就可以启动服务了。
水枪
水枪

引用来自“水枪”的评论

补充,我在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就直接启动了吗
Skywalking Node.js 探针 0.1.0 版本正式发布

项目介绍: Skywalking Node.js探针0.1.0版本正式发布了. Skywalking Node.js探针是由Skywalking社区提供专门针对Node.js生态下的后端应用提供的自动探针。 Skywalking Node.js探针遵守Skywa...

Xin_Zhang_BJ
2018/05/21
912
3
针对 Node.js 后端应用的自动探针 - Skywalking Node.js

Skywalking Node.js探针是由Skywalking社区提供专门针对Node.js生态下的后端应用提供的自动探针 Skywalking Node.js探针遵守Skywalking追踪协议,Node.js探针能够结合SkyWalking的后端分析追...

Xin_Zhang_BJ
2018/05/21
0
0
Node.js 4.0.0:灵雀云和 OneAPM 的整合测试

## 关于 > Node.js 4.0.0 稳定版刚刚推出,备受期待,迫不及待地想用它写点东西;此外,要把 Demo 放到 Internet 上得有一个公网 IP ,看到[灵雀云](http://www.alauda.cn/)挺不错的而且提供...

OneAPM蓝海讯通
2015/09/15
1
0
Skywalking Node.js 现支持 Egg 框架调用链追踪

Skywalking Node.js 简介 Apache Skywalking (Incubating)是专门为微服务架构和云原生架构系统而设计的能够支持分布式链路追踪的APM系统。通过给应用加载探针的方式收集应用调用链路信息,S...

Xin_Zhang_BJ
2018/08/30
1K
0
如何在 2016 年成为一个更好的 Node.js 开发者

本文主要讨论一些进行Node.js开发的最佳实践和建议,这些建议不仅仅适合开发者, 还适合那些管理与维护Node.js基础架构的工作人员。遵循本文提供的这些建议, 能够让你更好的进行日常的开发工...

oschina
2016/01/20
6.8K
5

没有更多内容

加载失败,请刷新页面

加载更多

取变量的地址赋值给另一个变量,C通过,C++编译出错

取变量的地址赋值给另一个变量,C通过。正常运行,C++编译出错。 代码如下: #include <stdio.h>int main(int argc, char *argv[]){int x = 3;int *p = &x;int y = p;/*c ...

SamXIAO
45分钟前
1
0
利用隐写术实施攻击

尽管隐写术是一种低频攻击途径,但网络犯罪分子已经开始利用它结合社交媒体的普遍性和快速传播性来传递恶意有效负载。 低调但有效的隐写技术虽然是旧把戏,但将代码隐藏在看似正常的图像中,...

Linux就该这么学
45分钟前
2
0
YII2的乐观锁和悲观锁

乐观锁与悲观锁¶ Web应用往往面临多用户环境,这种情况下的并发写入控制, 几乎成为每个开发人员都必须掌握的一项技能。 在并发环境下,有可能会出现脏读(Dirty Read)、不可重复读(Unrep...

echojson
51分钟前
2
0
UCOS线程切换原理

黑客画家
57分钟前
3
0
最牛Java架构师进阶路线(年薪80W)

1、源码分析专题 详细介绍源码中所用到的经典设计思想,看看大牛是如何写代码的,提升技术审美、提高核心竞争力。 帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华。知其然,并知其...

别打我会飞
58分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部