mirror of
https://github.com/HackPlan/NodeMonitor.git
synced 2026-04-28 19:35:38 +08:00
live update disk info
This commit is contained in:
2
LICENSE
2
LICENSE
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "NodeMonitor",
|
||||
"version": "0.0.1",
|
||||
"private": true,
|
||||
"private": false,
|
||||
"scripts": {
|
||||
"start": "node ./monitor/app.js"
|
||||
},
|
||||
|
||||
@@ -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 + " %")
|
||||
|
||||
@@ -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
|
||||
span#diskAll.label.label-primary loading...
|
||||
span , has been used
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user