使用pm2-zabbix监控node工程
环境
centos 7
zabbix 3.2.6
node 4.4.3
安装
# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-agent-3.2.6-1.el7.x86_64.rpm
# wget http://repo.zabbix.com/zabbix/3.2/rhel/7/x86_64/zabbix-sender-3.2.6-1.el7.x86_64.rpm
# yum install ./zabbix-*.rpm -y
配置agent
修改配置文件/etc/zabbix/zabbix_agentd.conf
Server=[zabbix server ip]
ServerActive=[zabbix server ip]
Hostname=[server端中对应本机配置中的主机名,通常就是本机的IP]
配置开机自启,并启动它
# systemctl enable zabbix-agent
# systemctl start zabbix-agent
服务端的配置这里就省略了...
安装pm2-zabbix
安装并部署配置文件,若没有git命令需要先用yum安装,此处node安装在/usr/local/node-v4.4.3-linux-x64/,安装的pm2-zabbix版本为0.3.2:
# yum install git -y
# npm install -g pm2-zabbix
# cd /usr/local/node-v4.4.3-linux-x64/lib/node_modules/
# cp pm2-zabbix/install/zabbix-agent/pm2-zabbix.conf /etc/zabbix/zabbix_agentd.d/
# cp pm2-zabbix/install/init/systemd/pm2-zabbix.service /usr/lib/systemd/system/
# ln -s /usr/local/node-v4.4.3-linux-x64/bin/pm2-zabbix /usr/local/bin/pm2-zabbix
修改 /usr/lib/systemd/system/pm2-zabbix.service
User=root ExecStart=/usr/local/bin/pm2-zabbix --hostname=[同上文的hostname] --monitor
修改 /etc/zabbix/zabbix_agentd.d/pm2-zabbix.conf (注意sudo -u的用户要改为自己的)
UserParameter=pm2.processes,sudo -u root pm2-zabbix --hostname=[同上文的hostname] --discover
配置zabbix用户的sudo权限
# visudo Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
zabbix ALL=(root) NOPASSWD: /usr/local/bin/pm2-zabbix
Defaults:zabbix !requiretty
启动
配置pm2-zabbix开机自启,并启动它
# systemctl enable pm2-zabbix
# systemctl start pm2-zabbix
可以通过 systemctl status pm2-zabbix 查看启动状态,其日志默认追加到 /var/log/message
最后重启zabbix-agent服务
# systemctl restart zabbix-agent
服务端导入pm2模板
模板文件位于node下面:lib/node_modules/pm2-zabbix/install/zabbix-server/pm2-zabbix.template.xml
管理员后台登陆zabbix服务端,通过 “配置” → “模板” → “导入”,选择该文件后导入,然后创建或者修改已存在的主机链接到这个模板(Template App PM2)
pm2-zabbix会自动发现pm2管理下的工程并传到服务端创建对应监控项和触发器,不过需要几分钟时间
pm2-zabbix自动创建的触发器策略可能需要调整,可在模板中 “自动发现规则” 下修改
常见问题
后台本机配置的自动发现规则中报错"Unsupported item key"或者/var/log/message中报错"......Failed to send process list with stats to server: Error: Command failed: /usr/bin/zabbix_sender......":
通常是因为下面两个原因:
1. 增加或者修改了/etc/zabbix/zabbix_agentd.d/pm2-zabbix.conf后没有重启zabbix-agent。
2. zabbix支持新加的key需要时间,这个时间配置在"管理->一般->其他->刷新不支持的监控项目(秒),如果这个值太大就改小一点。
pm2-zabbix启动pm2守护进程的问题
一个朋友遇到重启pm2-zabbix服务会清空pm2中业务的问题,经过排查发现这是一个都会遇到的情况:
在pm2-zabbix插件目录下可以发现有一个自带的pm2:./pm2-zabbix/node_modules/pm2/bin/pm2
如果zabbix-agent和pm2-zabbix这两个服务启动时在本机未发现pm2的守护进程,就会用这个pm2启动一个,然后这个pm2守护进程就成了它的一个子进程,如下图:

这种情况下,如果重启pm2-zabbix服务,自然这个pm2的守护进程就会随之重启,其中的业务进程当然也没有了;
另外还有,正在运行的pm2守护进程与系统path目录下的pm2版本不同时使用pm2命令会有如下图的提示,只要运行pm2 update即可自动转换,并且会解除与pm2-zabbix或zabbix-agent的子进程关系:

不过呢,如果凑巧两者版本相同是否就没有这个提示了,由于没做测试无法确定;
反思这个问题其实也可以理解,毕竟该插件是依赖pm2命令的,我们都知道pm2命令执行时若没有守护进程就会启动一个新的,在插件中未发现有提供避免该情况的方法,那就只能自己绕过了;
其实知道了原理处理也就简单了:
先启动系统path中的pm2再启动那两个服务就可以避免这个问题,如果服务都是开机启动的可以用pm2 update纠正,实在不放心直接杀掉有问题的pm2守护进程再自己手动启动;
over
使用pm2-zabbix监控node工程的更多相关文章
- Zabbix监控系统深度实践
Zabbix监控系统深度实践(企业级分布式系统自动化运维必选利器,大规模Zabbix集群实战经验技巧总结,由浅入深全面讲解配置.设计.案例和内部原理) 姚仁捷 著 ISBN 978-7-121-24 ...
- zabbix 监控MySQL
现在我来说一下我的监控环境 zabbix-3.0.3 MySQL-5.6.23 1.首先我们要登录MySQL,创建一个监控MySQL的用户 GRANT USAGE,PROCESS,SUPER,REPL ...
- 使用Zabbix监控RabbitMQ
一 应用场景描述 线上业务使用RabbitMQ作为消息队列中间件,那么作为运维人员对RabbitMQ的监控就很重要,本文就针对如何从头到尾使用Zabbix来监控RabbitMQ进行说明. 二 Rabb ...
- Zabbix监控解决方案
思通运维监控主要用来监控IT 基础设施组件的可用性和性能.监控项目是不受限制的,并且可以对IT 基础设施健康状态进行复杂分析.通过确定IT 系统问题的“来源”,使用户快速响应故障来降低宕机成本. 网络 ...
- zabbix监控Elasticsearch集群
本节以 zabbix 为例,介绍如何使用监控系统完成 Elasticsearch 的监控报警. github 上有好几个版本的 ESZabbix 仓库,都源自 Elastic 公司员工 unterge ...
- zabbix监控的基础概念、工作原理及架构
一.什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WE ...
- Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix
https://www.cnblogs.com/chensiqiqi/p/9162986.html 一,Zabbix Web操作深入 1.1 Zabbix Web下的主机和模版以及监控项的添加方式 ( ...
- Linux实战教学笔记49:Zabbix监控平台3.2.4(一)搭建部署与概述
https://www.cnblogs.com/chensiqiqi/p/9162986.html 一,Zabbix架构 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企 ...
- Zabbix监控平台3.2.4(二)深入理解zabbix
一,Zabbix Web操作深入 1.1 Zabbix Web下的主机和模版以及监控项的添加方式 (1)创建一个模版 我们所有的功能几乎都是在模版中定义的 我们再点进新创建的模版查看 模版里几乎可 ...
随机推荐
- nodejs + typescirpt + vs code
参考: 基于Nodejs生态圈的TypeScript+React开发入门教程 NPM install -save 和 -save-dev 傻傻分不清 使用typescript开发node js Typ ...
- python将字符串类型改成日期类型
将字符串类型的'2019-03-14'改成date类型,如下: import datetime b = datetime.date(*map(int,'2019-03-14'.split('-'))) ...
- Java窗体简单登入案例(附带源码)
运行截图 源代码下载地址 https://pan.baidu.com/s/1i82Z_onKdOdPFdfGce5e8Q
- str、tuple、dict之间的相互转换
字符串.字典.元祖之间的相互转换: 1.字符串与列表之间的转换 str1 = 'ADMINphuang' '''str--->list''' list1=str1.split('p') prin ...
- MOT南京站 | 卓越研发之路:锻造顶级后端系统
代码是互联网企业信息化核心,也是众多研发团队智慧的结晶,如何将代码发挥到最大价值?如何用代码快.准.好的实现需求?相信这是很多IT从业者所困扰的问题. MOT南京站首期以『锻造顶级后端系统』为主题,我 ...
- ubuntu linux修改文件所属用户(owner属主)和组(groud属组、用户组)
使用chown命令可以修改文件或目录所属的用户: 命令格式:sudo chown 用户 目录或文件名 例如:sudo chown -R griduser /home/dir1 (把home目录下的d ...
- IDEA--生成jar包并且导出jar包
PS:首先在idea中新建一个java文件,且带有main方法(不带有main好像不能导出,不确定) 参考文章:http://www.cnblogs.com/blog5277/p/5920560.ht ...
- POJ 3264 线段树入门解题报告
题意:给n个值, Q次询问, 每次询问给定一个区间, 要求输出该区间最大最小值之差 思路:暴力的话每次询问都要遍历多次for循环一定会超时, 用线段树记录区间的信息(左边界右边界, 该区间最大值最小值 ...
- SpringBoot整合Swagger2
相信各位在公司写API文档数量应该不少,当然如果你还处在自己一个人开发前后台的年代,当我没说,如今为了前后台更好的对接,还是为了以后交接方便,都有要求写API文档. 手写Api文档的几个痛点: 文档需 ...
- MySQL数据库基础备份
1.备份命令 格式:mysqldump -h主机名 -P端口 -u用户名 -p密码 --database 数据库名 > 文件名.sql mysqldump -h -uroot -ppasswor ...