css代码
#chart
{
width: 700px;
height: 500px;
float: left;
}
#legend
{
float: left;
}
html代码
<head>
<title>cpu和内存使用监控</title>
<script src="jquery/jquery-1.11.1.min.js"></script>
<script src="jquery-ui-1.11.1/jquery-ui.min.js"></script>
<script src="/node_modules/socket.io/node_modules/socket.io-client/socket.io.js"></script>
<link rel="stylesheet" href="IgniteUI/css/themes/infragistics/infragistics.theme.css" />
<link rel="stylesheet" href="IgniteUI/css/structure/infragistics.css" />
<link rel="stylesheet" href="IgniteUI/css/structure/modules/infragistics.ui.chart.css" />
<script src="IgniteUI/js/infragistics.core.js"></script>
<script src="IgniteUI/js/infragistics.dv.js"></script>
<link rel="stylesheet" href="chart.css" />
</head>
<body>
<div id="chart"></div>
<div id="legend"></div>
<script type="text/javascript" src="chart.js">
</script>
</body>
chart.js
$(function () {
var cpuData = [];
function toDisplayCPU(v) {
return v.toFixed(2);
}
function toDisplayMem(v) {
if (v >= (1024 * 1024 * 1024)) {
v /= (1024 * 1024 * 1024);
return v.toFixed(2) + "GB";
}
if (v >= (1024 * 1024)) {
v /= (1024 * 1024);
return v.toFixed(2) + "MB";
}
if (v >= (1024)) {
v /= (1024);
return v.toFixed(2) + "KB";
}
return v;
}
function renderChart() {
var chartOptions = {
dataSource: cpuData,
width: "700px",
height: "500px",
title: "System Performance",
subtitle: "CPU utilization over time until present",
horizontalZoomable: true,
verticalZoomable: true,
rightMargin: 30,
legend: { element: "legend" },
axes: [{
type: "categoryX",
name: "xAxis",
label: "displayTime",
labelAngle: 45
}, {
type: "numericY",
name: "yAxis",
title: "CPU Utilization",
minimumValue: 0,
maximumValue: 100,
formatLabel: toDisplayCPU
}, {
type: "numericY",
name: "yAxisMemory",
title: "Memory Utilization",
labelLocation: "outsideRight",
minimumValue: 0,
maximumValue: 8 * 1024 * 1024 * 1024,
interval: 1024 * 1024 * 1024,
formatLabel: toDisplayMem,
majorStroke: "transparent"
}],
series: [{
name: "cpu",
type: "line",
xAxis: "xAxis",
yAxis: "yAxis",
valueMemberPath: "cpuUsage",
showTooltip: true,
tooltipTemplate:
"<div><em>CPU:</em> <span>${item.displayCPU}</span></div>",
title: "CPU Utilization"
}, {
name: "mem",
type: "line",
xAxis: "xAxis",
yAxis: "yAxisMemory",
valueMemberPath: "usedMem",
showTooltip: true,
tooltipTemplate:
"<div><em>Memory:</em> <span>${item.displayMem}</span></div>",
title: "Memory Utilization"
}, {
name: "itemToolTips",
type: "itemToolTipLayer",
useInterpolation: false,
transitionDuration: 300
}]
};
$("#chart").igDataChart(chartOptions);
}
renderChart();
var socket = io.connect("http://localhost:8080");
socket.on("cpuUpdate", function (update) {
var currTime = new Date();
var displayString = currTime.toLocaleTimeString();
update.displayCPU = toDisplayCPU(update.cpuUsage);
update.displayMem = toDisplayMem(update.usedMem);
update.displayTime = displayString;
cpuData.push(update);
$("#chart").igDataChart("notifyInsertItem",
cpuData, cpuData.length - 1, update);
});
});
后台用nodejs、express和socket.io获取系统的cpu和内存使用
var express = require("express");
var app = express();
var server = require("http").createServer(app);
var io = require("socket.io").listen(server);
var os = require("os");
var osUtils = require("os-utils");
var interval = -1;
var currCPU = 0;
app.use(express.static(__dirname));
server.listen(8080);
io.sockets.on('connection', function () {//连接事件
if (interval < 0) {
interval = setInterval(function () {
var freeMem = os.freemem();
var totalMem = os.totalmem();
io.sockets.emit("cpuUpdate", {
cpuUsage: currCPU * 100.0,
freeMem: freeMem,
totalMem: totalMem,
usedMem: totalMem - freeMem
});
}, 10);//每隔10ms取系统数据
}
});
function updateCPU() {
setTimeout(function () {
osUtils.cpuUsage(function (value) {
currCPU = value;
updateCPU();
});
}, 0);
}
updateCPU();
console.log("服务器已启动");
启动server
效果如下:
- 大小: 8 KB
- 大小: 57.2 KB
分享到:
相关推荐
通过利用内置模块或第三方库,我们可以轻松地获取CPU使用率、内存消耗、磁盘信息以及网络状态等数据。以下将详细介绍标题和描述中涉及的各个知识点: 1. **CPU使用率**: 在`cpu_0.js`中,可能会使用`os`模块来...
3. **数据采集**:为了监控服务器状态,项目需要采集诸如CPU使用率、内存占用、磁盘空间、网络流量等信息。NodeJS可以利用os模块获取操作系统级别的信息,或者使用第三方库如pm2或prometheus来收集更丰富的监控指标...
2. **内核级别监控**:与其他只关注应用层面性能的工具不同,Easy Monitor能够深入到Node.js的内核层,提供内存、CPU、网络、事件循环等关键指标的详细信息。这种深度监控有助于发现潜在的性能瓶颈和系统问题。 3. ...
2. **文件读写**:示例代码演示如何使用NodeJS读取和写入文件。 3. **HTTP客户端**:如何使用http模块发起HTTP请求,例如获取远程网页内容。 4. **路由处理**:使用Express等框架处理不同URL的请求。 5. **数据库...
标题 "database-queries-nodejs-ignite" 暗示了我们正在探讨如何在Node.js环境中使用某种数据库查询技术,可能是与Ignite相关的。Ignite是一个开源的内存数据平台,提供了分布式数据库、缓存和流处理服务。由于标签...
Webix远程-Node.js 适用于NodeJS和Webix UI的简单RPC如何安装npm install webix-remote如何使用在服务器端var remote = require ( "webix-remote" ) ;var api = remote . server ( ) ;api . setMethod ( "add" , ...
标题 "nodejs-ignite-challenge-code01" 暗示这是一个关于 Node.js 的编程挑战,可能是某个在线学习平台或编程竞赛的一部分。"Ignite" 通常指的是加速、启动或激发,因此这可能是一个引导初学者掌握 Node.js 开发...
NodeJS是建立在Chrome V8引擎上的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程。NodeJS的特点包括事件驱动、非阻塞I/O模型,使得它在处理高并发、实时通信场景下表现优秀。在这个GB28181管理...
"ignite-nodejs-desafio-1:PrimeJS设计和开发NodeJS-Ignite Rocketseat" 是一个关于使用Node.js进行Web应用开发的挑战项目,由知名的在线教育平台Rocketseat的Ignite课程提供。这个项目主要关注JavaScript编程语言,...
标题 "conceitos-nodejs-ignite:点燃火药库储存库" 暗示这是一个关于 Node.js 的学习资源,特别是与 Ignite 相关的概念。Ignite 是一个由 Rocketseat 提供的在线课程,旨在帮助开发者深入理解 Node.js 的核心概念和...
一个NodeJS和redis做的基于http协议使用的队列 做了点小修改 支持多个队列和post提交 原github地址:https: github com lnmp nodemq 使用方法: 在安装好redis和nodejs后 配置config js 执行: $ node index js ...
基于nodejs的西餐外卖系统和微信小程序源码基于nodejs的西餐外卖系统和微信小程序源码基于nodejs的西餐外卖系统和微信小程序源码基于nodejs的西餐外卖系统和微信小程序源码基于nodejs的西餐外卖系统和微信小程序源码...
使用nodejs完成对文件的监控,并实时获取文件添加的最新内容
6. **性能优化**:对于大规模的应用,需要考虑流数据传输的性能优化,如使用WebRTC的ICE、STUN和TURN服务器进行网络穿透。 综上所述,`getUserMedia`是实现Web调用摄像头的关键技术,结合Node.js服务器和前端交互,...
nodejs初级教程
通常在一个大型的Web项目中有很多监控系统,比如后端的服务API监控,接口存活、调用、延迟等监控,这些一般都用来监控后台接口数据层面的信息。而且对于大型网站系统来说,从后端服务到前台展示会有很多层:内网VIP...
NodeJS是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程,从而打破了JavaScript只能在浏览器中运行的传统。本"NodeJS整理手册文档"旨在为对NodeJS感兴趣的朋友们提供一...
资源名称:Nodejs给前端带来了什么变化 中文WORD版内容简介:本文档主要讲述的是Nodejs给前端带来了什么变化;在软件开发领域,前端工程师曾经是一个比较纠结的职业。在Web技术真正发展起来之前的相当长一段时间里,...
Desafio-数据库查询 (Ignite | NodeJS |CapítuloIII | Desafio 01) Desafio 01做第III弹头NodeJS do Ignite,第3弹头。...使用查询进行查询的对象或类型的查询:TypeORM:USANDO ORM,USANDO查询生成器和原始查询。
iot-nodejs, 使用nodejs连接到IBM的客户端库和示例 node.js-客户端库node.js 客户机用于简化与Things平台的交互。 以下库包含有关使用 nodejs ibmiotf node 与组织内的设备和应用程序进行交互的说明和指导。客户端库...