环境

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工程的更多相关文章

  1. Zabbix监控系统深度实践

    Zabbix监控系统深度实践(企业级分布式系统自动化运维必选利器,大规模Zabbix集群实战经验技巧总结,由浅入深全面讲解配置.设计.案例和内部原理) 姚仁捷 著  ISBN 978-7-121-24 ...

  2. zabbix 监控MySQL

    现在我来说一下我的监控环境 zabbix-3.0.3 MySQL-5.6.23 1.首先我们要登录MySQL,创建一个监控MySQL的用户 GRANT USAGE,PROCESS,SUPER,REPL ...

  3. 使用Zabbix监控RabbitMQ

    一 应用场景描述 线上业务使用RabbitMQ作为消息队列中间件,那么作为运维人员对RabbitMQ的监控就很重要,本文就针对如何从头到尾使用Zabbix来监控RabbitMQ进行说明. 二 Rabb ...

  4. Zabbix监控解决方案

    思通运维监控主要用来监控IT 基础设施组件的可用性和性能.监控项目是不受限制的,并且可以对IT 基础设施健康状态进行复杂分析.通过确定IT 系统问题的“来源”,使用户快速响应故障来降低宕机成本. 网络 ...

  5. zabbix监控Elasticsearch集群

    本节以 zabbix 为例,介绍如何使用监控系统完成 Elasticsearch 的监控报警. github 上有好几个版本的 ESZabbix 仓库,都源自 Elastic 公司员工 unterge ...

  6. zabbix监控的基础概念、工作原理及架构

    一.什么是zabbix及优缺点(对比cacti和nagios) Zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题.是一个基于WE ...

  7. Linux实战教学笔记50:Zabbix监控平台3.2.4(二)深入理解zabbix

    https://www.cnblogs.com/chensiqiqi/p/9162986.html 一,Zabbix Web操作深入 1.1 Zabbix Web下的主机和模版以及监控项的添加方式 ( ...

  8. Linux实战教学笔记49:Zabbix监控平台3.2.4(一)搭建部署与概述

    https://www.cnblogs.com/chensiqiqi/p/9162986.html 一,Zabbix架构 zabbix 是一个基于 WEB 界面的提供分布式系统监视以及网络监视功能的企 ...

  9. Zabbix监控平台3.2.4(二)深入理解zabbix

    一,Zabbix Web操作深入   1.1 Zabbix Web下的主机和模版以及监控项的添加方式 (1)创建一个模版 我们所有的功能几乎都是在模版中定义的 我们再点进新创建的模版查看 模版里几乎可 ...

随机推荐

  1. mysql导出长数字到excel避免显示为科学记数法 解决方法

    经常遇到MYSQL导出长数字或纯数字字符串(如身份证.卡券号.条码.流水号等)到csv或excel文件,用excel打开会显示为科学记数法,甚至后几位转为0.这是由Excel的特性决定的:Excel显 ...

  2. 【CF613D】Kingdom and its Cities 虚树+树形DP

    [CF613D]Kingdom and its Cities 题意:给你一棵树,每次询问给出k个关键点,问做多干掉多少个非关键点才能使得所有关键点两两不连通. $n,\sum k\le 10^5$ 题 ...

  3. Tomcat中的Listener源码片段解读

    @Override public <T extends EventListener> void addListener(T t) { if (!context.getState().equ ...

  4. 11.17 flask (1)

    2018-11-17 18:38:42 开始学习进行玩前面项目  开始进军flask flask是一个小型的web框架,,但是有很多第三方组件 最后组装组装就和django一样啦!!!!!!! pyt ...

  5. 最短路问题(Bellman/Dijkstra/Floyd)

    最短路问题(Bellman/Dijkstra/Floyd) 寒假了,继续学习停滞了许久的算法.接着从图论开始看起,之前觉得超级难的最短路问题,经过两天的苦读,终于算是有所收获.把自己的理解记录下来,可 ...

  6. memoization提升递归效率

    从开通博客到目前为止,也有一年了,刚开始的写了一篇工作的感想,然后就一直不知道写什么,看园子里的文章实在是很专业,怕自己写的太水.但是,写一些东西总归是好的,于是就当作是记笔记一样,开始写第一篇技术类 ...

  7. 【C++ mid-term exerises】

    1. 用掷骰子方式,模拟班级每个学号被随机抽点的概率. (12分) 具体要求如下: (1)设计并实现一个骰子类Dice. ① 数据成员sides表示骰子面数.构造时,指定骰子是6面,8面,还是其它数值 ...

  8. 剑指offer——python【第53题】表示数值的字符串

    题目描述 请实现一个函数用来判断字符串是否表示数值(包括整数和小数).例如,字符串"+100","5e2","-123","3.1 ...

  9. python 3 往Excel 中的写入内容但不覆盖原内容

    EXCEL 写入数据保持原样式 import xlwt import xlrd import xlutils import xlutils.copy class ExcelHandle(): def ...

  10. spring管理的类如何调用非spring管理的类

    spring管理的类如何调用非spring管理的类. 就是使用一个spring提供的感知概念,在容器启动的时候,注入上下文即可. 下面是一个工具类. import org.springframewor ...