计算储存空间时计算数据库占用

This commit is contained in:
jysperm
2014-08-05 00:09:14 +08:00
parent d7e6b1535a
commit 7d0e851482
3 changed files with 49 additions and 26 deletions

View File

@@ -10,35 +10,43 @@ module.exports =
callback()
widget: (account, callback) ->
mysql = require '../mysql/service'
mongodb = require '../mongodb/service'
monitor.monitoringStorage ->
jade.renderFile path.join(__dirname, 'view/widget.jade'),
account: account
resources_usage: do ->
usage = monitor.resources_usage[account.username] ? {cpu: 0, memory: 0}
return {
cpu:
now_per: (usage.cpu / account.attribute.resources_limit.cpu * 100).toFixed()
now: usage.cpu.toFixed(1)
limit: account.attribute.resources_limit.cpu
memory:
now_per: (usage.memory / account.attribute.resources_limit.memory * 100).toFixed()
now: usage.memory.toFixed(1)
limit: account.attribute.resources_limit.memory
}
async.parallel
mysql: _.partial(mysql.storage, account)
mongodb: _.partial(mongodb.storage, account)
, (err, plugin_storage) ->
jade.renderFile path.join(__dirname, 'view/widget.jade'),
account: account
resources_usage: do ->
usage = monitor.resources_usage[account.username] ? {cpu: 0, memory: 0}
return {
cpu:
now_per: (usage.cpu / account.attribute.resources_limit.cpu * 100).toFixed()
now: usage.cpu.toFixed(1)
limit: account.attribute.resources_limit.cpu
memory:
now_per: (usage.memory / account.attribute.resources_limit.memory * 100).toFixed()
now: usage.memory.toFixed(1)
limit: account.attribute.resources_limit.memory
}
storage_usage: do ->
usage = monitor.storage_usage[account.username]
now_per = (usage.size_used / 1000 / account.attribute.resources_limit.storage * 100).toFixed()
return {
now_per: now_per
now: (usage.size_used / 1000).toFixed(1)
limit: account.attribute.resources_limit.storage
color: if now_per < 90 then 'success' else 'danger'
}
storage_usage: do ->
usage = monitor.storage_usage[account.username]
usage.size_used = parseInt(usage.size_used) + plugin_storage.mysql * 1000 + plugin_storage.mongodb * 1000
now_per = (usage.size_used / 1000 / account.attribute.resources_limit.storage * 100).toFixed()
return {
now_per: now_per
now: (usage.size_used / 1000).toFixed(1)
limit: account.attribute.resources_limit.storage
color: if now_per < 90 then 'success' else 'danger'
}
, (err, html) ->
throw err if err
callback html
, (err, html) ->
throw err if err
callback html
preview: (callback) ->
jade.renderFile path.join(__dirname, 'view/preview.jade'), {}, (err, html) ->

View File

@@ -51,6 +51,15 @@ module.exports =
, (err, html) ->
callback html
storage: (account, callback) ->
mongodb.admin.listDatabases (err, result) ->
dbs = _.filter result.databases, (i) ->
return i.name[..account.username.length] == "#{account.username}_"
callback null, _.reduce dbs, (memo, db) ->
return memo + db.sizeOnDisk / 1024 / 1024
, 0
preview: (callback) ->
jade.renderFile path.join(__dirname, 'view/preview.jade'), {}, (err, html) ->
callback html

View File

@@ -47,6 +47,12 @@ module.exports =
, (err, html) ->
callback html
storage: (account, callback) ->
connection.query "SELECT `table_schema` 'name', sum(`data_length` + `index_length`) / 1024 / 1024 'size', sum(`data_free`) / 1024 / 1024 'free' FROM `information_schema`.`TABLES` WHERE `TABLE_SCHEMA` LIKE '#{account.username}_%' GROUP BY table_schema;", (err, rows) ->
callback null, _.reduce rows, (memo, db) ->
return memo + db.size
, 0
preview: (callback) ->
jade.renderFile path.join(__dirname, 'view/preview.jade'), {}, (err, html) ->
callback html