Zabbix添加Node.js监控的方法

下面是“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技术站

(0)
上一篇 2023年6月8日
下一篇 2023年6月8日

相关文章

  • 详解node和ES6的模块导出与导入

    详解node和ES6的模块导出与导入 什么是模块 模块是JS代码的组织单元。一个模块中包含了一些独立的、可重用的代码。模块化提供了更好的代码重用,更好的代码管理,并且可以提供更好的性能。 在早期,JS程序的模块化靠的是IIFE(立即执行函数表达式)模式。但是这种模式需要手动处理模块依赖关系并且容易出错。 现代 JS 应用的模块化通常采用 ES6 的模块功能,…

    node js 2023年6月8日
    00
  • express+multer上传图片打开乱码问题及解决

    首先,我们需要明确一下什么是“乱码”问题。在计算机领域,乱码通常指的是字符集不匹配或者编码格式错误导致的文本显示异常。在网站开发中,上传图片并展示时,会遇到乱码问题,这可能是因为图片编码格式的问题导致的。 针对该问题,我们可以使用express和multer解决。以下是具体的解决方法: 1. 安装multer 我们首先需要安装multer依赖包,可以使用以下…

    node js 2023年6月8日
    00
  • nodeJs实现基于连接池连接mysql的方法示例

    接下来我会为您详细讲解“Node.js实现基于连接池连接MySql的方法示例”的攻略。 步骤一:安装mysql模块 在开始使用Node.js连接MySQL数据库之前,需要先安装Node.js的MySQL模块。可以使用npm包管理器进行安装,具体命令如下: npm install mysql –save 安装完成后,可以使用以下代码测试是否成功安装: con…

    node js 2023年6月9日
    00
  • vue2从数据到视图渲染之模板渲染详解

    “vue2从数据到视图渲染之模板渲染详解”是一个非常重要的主题,它涉及到Vue框架中最核心的概念:模板渲染。在这个话题中,我们将从数据的角度来介绍Vue框架中的模板、绑定语法、指令和渲染流程。这里是一个完整的攻略,它会详细讲解Vue2中模板渲染的实现细节。 模板基础 Vue2中的模板是基于HTML的,可以包含各种标签和指令。在模板中可以使用双大括号{{}}来…

    node js 2023年6月9日
    00
  • node.js中的http.get方法使用说明

    Node.js中的http.get方法使用说明 Node.js中的http模块提供了http.get方法,用于发起GET请求。本文将详细讲解http.get方法的使用以及常见的错误处理方式。 http.get方法的语法 http.get(url[, options][, callback]) url:必填项,表示请求地址的URL字符串。 options:可选…

    node js 2023年6月8日
    00
  • nodejs实现HTTPS发起POST请求

    下面是nodejs实现HTTPS发起POST请求的完整攻略: 简介 HTTPS是一种基于SSL/TLS协议的HTTP协议,能够对HTTP的传输过程进行加密,让数据传输更加安全可靠。在Node.js中,我们可以使用https模块来实现HTTPS请求。本文将会详细介绍如何利用nodejs实现HTTPS发起POST请求。 准备 在开始实现之前,请确保已经安装了No…

    node js 2023年6月8日
    00
  • nodejs初始化init的示例代码

    当我们开始用Node.js编写一个新的项目时,我们需要在项目的根目录中初始化一个Node.js应用程序。Node.js应用程序初始化是使用npm命令进行的,它可以生成我们的项目所需的文件和文件夹,以及内置依赖项和配置文件。 下面是一个Node.js初始化示例: 打开命令行工具,进入项目根目录,执行以下命令: npm init 这将启动一个交互式环境,提示你输…

    node js 2023年6月8日
    00
  • vue报错Error:Cannot find module ‘fs/promises’的解决方式

    针对“vue报错Error:Cannot find module ‘fs/promises’”这个问题,我们可以按照以下步骤进行解决: 问题分析 这个问题通常会出现在使用 Vue 3.x 版本的时候,它提示我们在运行Vue项目时缺少了Node.js的fs模块,具体报错是“Cannot find module ‘fs/promises’”。 造成这个问题的原因…

    node js 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部