博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用pm2-zabbix监控node工程
阅读量:4591 次
发布时间:2019-06-09

本文共 2904 字,大约阅读时间需要 9 分钟。

环境

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=rootExecStart=/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-zabbixDefaults: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

转载于:https://www.cnblogs.com/toSeek/p/7274640.html

你可能感兴趣的文章
python3 在文件确实存在的情况下,运行提示找不到文件
查看>>
机器学习单词记录--01章初识机器学习
查看>>
聊Javascript中的AOP编程
查看>>
读书笔记-你不知道的JS中-promise
查看>>
.35-浅析webpack源码之babel-loader入口文件路径读取
查看>>
VC++ ini文件操作
查看>>
忘记WiFi密码不用怕,一个命令轻松查看你连接过的所有WiFi及密码!
查看>>
魔术方法、魔术常量
查看>>
Eclipse搭建Struts2环境
查看>>
设备管理,连接两个数据库,用的easygui
查看>>
Ucore lab1实验报告
查看>>
算法导论之插入排序和归并排序
查看>>
VC++中对话框界面重绘1-概述
查看>>
正则例子
查看>>
简介---linux内核态和用户态
查看>>
MIT Python 第四课函数抽象与递归简介 函数调用与原代码的区别
查看>>
C++Primer第五版——习题答案详解(三)
查看>>
解决Google Play审核中的WebViewClient.onReceivedSslError问题
查看>>
如何清除浮动
查看>>
SpringBoot系列: Maven多项目管理
查看>>