live update disk info

This commit is contained in:
faceair
2014-04-12 23:46:10 +08:00
parent 4ae1b89c9b
commit 06a07acf36
6 changed files with 45 additions and 39 deletions

View File

@@ -1,6 +1,6 @@
The MIT License (MIT)
Copyright (c) 2014 faceair
Copyright (c) 2014 faceair & 精英王子
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

View File

@@ -39,16 +39,16 @@ class Monitor
realMemPer = Math.round(realMemUsed / memInfo[1] * 100)
cachedMemPer = Math.round(memInfo[6] / memInfo[1] * 100)
memData["mem"] =
totalMem: memInfo[1]
realMem: memInfo[2]
totalMem: memInfo[1] + "M"
realMem: memInfo[2] + "M"
realMemPer: realMemPer
cachedMemPer: cachedMemPer
cachedMem: memInfo[6]
cachedMem: memInfo[6] + "M"
freeMemPer: (100 - realMemPer - cachedMemPer - buffersMemPer)
swaptotalMem: memInfo[9]
swaptotalMem: memInfo[9] + "M"
swapUsedMemPer: Math.round(memInfo[10] / memInfo[9] * 100)
swapFreeMemPer: Math.round((memInfo[9] - memInfo[10]) / memInfo[9] * 100)
swapUsedMem: memInfo[10]
swapUsedMem: memInfo[10] + "M"
socket.emit("mem",memData["mem"])
return
@@ -96,18 +96,18 @@ class Monitor
return
this.diskData = (socket) ->
diskData = {}
child_process.exec "df", {}, (error, stdout, stderr) ->
dkArray = stdout.split("\n")
diskAll = diskUsed = diskRate = 0
i = 1
while i < (dkArray.length - 1)
dkArray[i] = dkArray[i].replace(" ", " ") while dkArray[i].match(" ")
dkArrayInfo = dkArray[i].split(" ")
diskAll += Number(dkArrayInfo[1])
diskUsed += Number(dkArrayInfo[2])
i++
diskData["disk"]['diskRate'] = Math.round(diskUsed / diskAll * 100) + " %"
socket.emit diskData
dkArray[1] = dkArray[1].replace(" ", " ") while dkArray[1].match(" ")
dkArrayInfo = dkArray[1].split(" ")
diskData["disk"] =
diskUsedPer: Math.round(Number(dkArrayInfo[2]) / Number(dkArrayInfo[1]) * 100)
diskFreePer: 100 - Math.round(Number(dkArrayInfo[2]) / Number(dkArrayInfo[1]) * 100)
diskAll: Math.round(Number(dkArrayInfo[1]) / 1048576) + "G"
diskUsed: Math.round(Number(dkArrayInfo[2]) / 1048576) + "G"
socket.emit("disk",diskData["disk"])
return
module.exports = Monitor

View File

@@ -11,27 +11,22 @@ exports.runWebServer = ->
if err
res.writeHead 500
return res.end('Error loading ' + reqfile)
res.writeHead 200
res.end(data)
app.listen 3000
app.listen 2998
return app
exports.runWebSocket = (port) ->
io = require('socket.io').listen port
io.sockets.on 'connection', (socket) ->
sendData = ->
Monitor.osData socket
Monitor.memData socket
Monitor.diskData socket
sendData()
setInterval sendData, 1000
intervalId = setInterval(sendData, 5000)
socket.on 'disconnect', ->
clearTimeout intervalId
unless module.parent
app = exports.runWebServer()
exports.runWebSocket app

View File

@@ -1,7 +1,7 @@
{
"name": "NodeMonitor",
"version": "0.0.1",
"private": true,
"private": false,
"scripts": {
"start": "node ./monitor/app.js"
},

View File

@@ -1,4 +1,4 @@
socket = io.connect("http://localhost")
socket = io.connect("http://localhost/")
socket.on "os", (data) ->
$('#hostname').html(data.hostname)
$('#system').html(data.type + " " + data.release)
@@ -8,19 +8,27 @@ socket.on "os", (data) ->
$('#loadavg').html(data.loadavg)
socket.on "mem", (data) ->
$('#totalMem').html(data.totalMem + "M")
$('#realMem').html(data.realMem + "M")
$('#cachedMem').html(data.cachedMem + "M")
$('#totalMem').html(data.totalMem)
$('#realMem').html(data.realMem)
$('#cachedMem').html(data.cachedMem)
$('#realMemPer').attr("style","width: " + data.realMemPer + "%;")
$('#realMemPer').text("real " + data.realMemPer + " %")
$('#cachedMemPer').attr("style","width: " + data.cachedMemPer + "%;")
$('#cachedMemPer').text("cached " + data.cachedMemPer + " %")
$('#freeMemPer').attr("style","width: " + data.freeMemPer + "%;")
$('#freeMemPer').text("free " + data.freeMemPer + " %")
$('#swaptotalMem').html(data.swaptotalMem + "M")
$('#swapUsedMem').html(data.swapUsedMem + "M")
$('#swaptotalMem').html(data.swaptotalMem)
$('#swapUsedMem').html(data.swapUsedMem)
$('#swapUsedMemPer').attr("style","width: " + data.swapUsedMemPer + "%;")
$('#swapUsedMemPer').text("swapUsed " + data.swapUsedMemPer + " %")
$('#swapFreeMem').html(data.swapFreeMem + "M")
$('#swapFreeMem').html(data.swapFreeMem)
$('#swapFreeMemPer').attr("style","width: " + data.swapFreeMemPer + "%;")
$('#swapFreeMemPer').text("swapFree " + data.swapFreeMemPer + " %")
socket.on "disk", (data) ->
$('#diskAll').html(data.diskAll)
$('#diskUsed').html(data.diskUsed)
$('#diskUsedPer').attr("style","width: " + data.diskUsedPer + "%;")
$('#diskUsedPer').text("diskUsed " + data.diskUsedPer + " %")
$('#diskFreePer').attr("style","width: " + data.diskFreePer + "%;")
$('#diskFreePer').text("diskFree " + data.diskFreePer + " %")

View File

@@ -3,7 +3,7 @@ html
meta(charset='utf-8')
title NodeMonitor
link(href='http://cdn.staticfile.org/twitter-bootstrap/3.0.2/css/bootstrap.min.css', rel='stylesheet', type='text/css')
link(href='./style.css', rel='stylesheet', type='text/css')
link(href='/style.css', rel='stylesheet', type='text/css')
body
#navbar-wrapper
@@ -84,12 +84,15 @@ html
| loading...
#swapFreeMemPer.progress-bar.progress-bar-success(role='progressbar', style='width: 50%;')
| loading...
p Disk space of 221.593 G, has been used 35.907 G
p Disk total&nbsp;
span#diskAll.label.label-primary loading...
span &nbsp;, has been used&nbsp;
span#diskUsed.label.label-danger loading...
.progress
.progress-bar.progress-bar-info(role='progressbar', style='width: 16%;')
| diskUsed 16%
.progress-bar.progress-bar-success(role='progressbar', style='width: 84%;')
| diskFree 84%
#diskUsedPer.progress-bar.progress-bar-danger(role='progressbar', style='width: 50%;')
| loading...
#diskFreePer.progress-bar.progress-bar-success(role='progressbar', style='width: 50%;')
| loading...
.panel.panel-default
table.table.table-hover
thead