环境

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. Qt编写自定义控件8-动画按钮组控件

    前言 动画按钮组控件可以用来当做各种漂亮的导航条用,既可以设置成顶部底部+左侧右侧,还自带精美的滑动效果,还可以设置悬停滑动等各种颜色,原创作者雨田哥(QQ:3246214072),驰骋Qt控件界多年 ...

  2. 关于mysql中触发器old和new

    1.当使用insert语句的时候,如果原表中没有数据的话,那么对于插入数据后表来说新插入的那条数据就是new,如图所示: 2.当使用delete语句的时候,删除的那一条数据相对于删除数据后表的数据来说 ...

  3. 20.react库 入门

    vue插件: 使用方式:Vue.use(插件名称); {}/function 1.对象 export default { install(Vue,options){ } } 2.函数 export d ...

  4. swust oj 1015

    堆排序算法 1000(ms) 10000(kb) 2631 / 5595 编写程序堆排序算法.按照从小到大的顺序进行排序,测试数据为整数. 输入 第一行是待排序数据元素的个数: 第二行是待排序的数据元 ...

  5. python学习之旅(五)

    Python基础知识(4):基础数据类型之字符串(Ⅰ) 字符串是 Python 中最常用的数据类型.可以使用引号“ ”来创建字符串,只要为变量分配一个值即可.例如: name=“Alice” 注:字符 ...

  6. windows系统dos下查看无线网密码

    (1)采用命令:netsh wlan show profiles 查看电脑连接过的无线网: (2)采用命令:netsh wlan show profile name ="wifi 名字&qu ...

  7. grep匹配字符串

    基本正则表达式 元数据 意义和范例 ^word 搜寻以word开头的行. 例如:搜寻以#开头的脚本注释行 grep –n ‘^#’ regular.txt word$ 搜寻以word结束的行 例如,搜 ...

  8. iOS 如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用?

    如果页面 A 跳转到 页面 B,A 的 viewDidDisappear 方法和 B 的 viewDidAppear 方法哪个先调用? 1. - (void)pushViewController:(U ...

  9. SpringMVC整合mybatis基于纯注解配置

    Mybatis整合Spring配置 第一部分:配置Spring框架 配置SpringMVC的步骤 配置流程图 导入包(哪些包,基本包5个,1日志依赖包,2webmvc支持包)SpringMVC配置 & ...

  10. python基础(3)-pycharm安装&for循环&format字符串&list列表&set集合使用

    安装IDE(PyCharm)&破解 点击下载安装包,安装. 点击下载破解补丁. 进入pycharm安装bin目录,将破解补丁copy到当前目录. 在bin目录下找到pycharm.exe.vm ...