下面是“Zabbix添加Node.js监控的方法”的完整攻略以及两个示例说明:
1. 安装Zabbix agent
首先确保在要监控的服务器上已经安装了Zabbix agent,如果没有安装可以通过以下命令安装:
$ sudo apt-get update
$ sudo apt-get install zabbix-agent
安装完成后,确保Zabbix agent服务已经开启:
$ sudo systemctl start zabbix-agent
$ sudo systemctl enable zabbix-agent
2. 配置Zabbix agent
编辑Zabbix agent的配置文件/etc/zabbix/zabbix_agentd.conf,修改或者添加以下参数:
Server=ZABBIX_SERVER_IP
Hostname=HOSTNAME_OF_NODE_SERVER
其中ZABBIX_SERVER_IP是Zabbix Server的IP地址,而HOSTNAME_OF_NODE_SERVER是要监控节点服务器的主机名。完成配置后,确保重启Zabbix agent服务:
$ sudo systemctl restart zabbix-agent
3. 安装Zabbix nodejs模块
使用npm安装Zabbix nodejs模块:
$ npm install zabbix-nodejs --save
4. 创建监控脚本
创建一个监控脚本(比如:/etc/zabbix/scripts/nodejs_stats.js),并编辑以下内容:
#!/usr/bin/env node
var ZabbixSender = require('zabbix-nodejs').ZabbixSender;
var data = {
'nodejs_stats.memory.heapUsed': process.memoryUsage().heapUsed,
'nodejs_stats.memory.heapTotal': process.memoryUsage().heapTotal,
'nodejs_stats.memory.rss': process.memoryUsage().rss,
'nodejs_stats.loadavg.1min': [require('os').loadavg()[0], ]
};
var sender = new ZabbixSender({ host: 'ZABBIX_SERVER_IP', port: 10051 });
sender.send(data, function(err, res) {
if (err) {
console.log(err);
} else {
console.log('Data sent to Zabbix!', res);
}
});
5. 添加Zabbix监控项
登录Zabbix Server的Web界面,在“Configuration”->“Hosts”中找到要监控的节点服务器,在“Items”->“Create Item”中创建监控项:
- Key:nodejs_stats.memory.heapUsed
- Type of information:Numeric (float)
- Update interval:30s
- Applications:Node.js
同样的方法,创建以下监控项:
- Key:nodejs_stats.memory.heapTotal
- Type of information:Numeric (float)
- Update interval:30s
- Applications:Node.js
- Key:nodejs_stats.memory.rss
- Type of information:Numeric (float)
- Update interval:30s
- Applications:Node.js
- Key:nodejs_stats.loadavg.1min
- Type of information:Numeric (float)
- Update interval:30s
- Applications:Node.js
示例说明
示例1 - 监控Koa.js应用
以下是一个使用Koa.js框架的简单web应用程序(/usr/share/nginx/html/koaapp.js):
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
console.log('Server is running on port 3000.');
为了监控此应用程序,可以使用以下命令创建一个Node.js监控的系统服务(/usr/lib/systemd/system/nodeapp-stats.service):
[Unit]
Description=Node.js App Stats
[Service]
ExecStart=/usr/bin/node /etc/zabbix/scripts/nodejs_stats.js
Restart=always
User=root
Group=root
[Install]
WantedBy=multi-user.target
重载服务:
$ systemctl daemon-reload
启动服务:
$ systemctl start nodeapp-stats
Zabbix Server将会在30秒内收到Node.js应用程序的性能数据。
示例2 - 监控Node.js进程
以下是一个使用pm2管理的Node.js进程,可以使用以下命令创建一个Node.js监控的系统服务(/usr/lib/systemd/system/pm2-stats.service):
[Unit]
Description=pm2 Node.js App Stats
[Service]
ExecStart=/usr/bin/node /etc/zabbix/scripts/nodejs_stats.js
Environment=PM2_HOME=/root/.pm2
ExecReload=/usr/bin/pm2 reload all
ExecStop=/usr/bin/pm2 stop all
[Install]
WantedBy=multi-user.target
重载服务:
$ systemctl daemon-reload
启动服务:
$ systemctl start pm2-stats
Zabbix Server将会在30秒内收到Node.js进程的性能数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Zabbix添加Node.js监控的方法 - Python技术站