使用pm2-zabbix監控node工程

環境

centos 7node

zabbix 3.2.6linux

node 4.4.3git

安裝

# 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.confnpm

Server=[zabbix server ip]
ServerActive=[zabbix server ip]
Hostname=[server端中對應本機配置中的主機名,一般就是本機的IP]

配置開機自啓,並啓動它centos

# 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.2ui

# 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.servicespa

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權限3d

# 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

相關文章
相關標籤/搜索