stats successfully transfered
This commit is contained in:
		@@ -7,7 +7,8 @@
 | 
			
		||||
      "stylus": "~0.53.0",
 | 
			
		||||
      "ejs": ">= 0.0.1",
 | 
			
		||||
      "socket.io": "~1.4.4",
 | 
			
		||||
      "pty.js": "~0.3.0"
 | 
			
		||||
      "pty.js": "~0.3.0",
 | 
			
		||||
      "async": "~1.5.2"
 | 
			
		||||
  },
 | 
			
		||||
  "description": "Docker as a Service",
 | 
			
		||||
  "main": "servicedock.js",
 | 
			
		||||
 
 | 
			
		||||
@@ -646,6 +646,10 @@ function details(name) {
 | 
			
		||||
    showviz(docker.containers.subgraph(focused));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function stats(data) {
 | 
			
		||||
    console.log("->rcv stats")
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
function images(i) {
 | 
			
		||||
    console.log("->rcv images");
 | 
			
		||||
    docker.images.set(i);
 | 
			
		||||
@@ -781,7 +785,7 @@ function bash_data(data) {
 | 
			
		||||
        $("#screen").append('<span class="'+data.type+'">'+ansifilter(htmlenc(data.text))+'</span>');
 | 
			
		||||
    }
 | 
			
		||||
    $("#screen").animate({
 | 
			
		||||
        scrollTop: $("#screen").scrollHeight()
 | 
			
		||||
        scrollTop: $("#screen").prop('scrollHeight')
 | 
			
		||||
    }, 500);}
 | 
			
		||||
 | 
			
		||||
function overview() {
 | 
			
		||||
@@ -814,6 +818,7 @@ function init() {
 | 
			
		||||
        .on("fail", error)
 | 
			
		||||
        .on("containers", containers)
 | 
			
		||||
        .on("images", images)
 | 
			
		||||
        .on("stats", stats)
 | 
			
		||||
        .on("logs", logs)
 | 
			
		||||
        .on("bash-data", bash_data);
 | 
			
		||||
    start();
 | 
			
		||||
 
 | 
			
		||||
@@ -9,38 +9,53 @@ module.exports = function() {
 | 
			
		||||
        var proc = require('child_process');
 | 
			
		||||
 | 
			
		||||
        function stats(ids) {
 | 
			
		||||
            var res = [];
 | 
			
		||||
            var res = {};
 | 
			
		||||
            var fs = require('fs');
 | 
			
		||||
            var async = require('async');
 | 
			
		||||
            var base = "/sys/fs/cgroup/";
 | 
			
		||||
            var dataPoints = {
 | 
			
		||||
                "cpuacct": "stat",
 | 
			
		||||
                "memory": "usage_in_bytes",
 | 
			
		||||
                "memory": "max_usage_in_bytes"
 | 
			
		||||
                "cpuacct": [
 | 
			
		||||
                    "stat"
 | 
			
		||||
                ],
 | 
			
		||||
                "memory": [
 | 
			
		||||
                    "usage_in_bytes",
 | 
			
		||||
                    "max_usage_in_bytes"
 | 
			
		||||
                ]
 | 
			
		||||
            };
 | 
			
		||||
            ids.forEach(function(id) {
 | 
			
		||||
            async.each(ids, function(id, cb1) {
 | 
			
		||||
                res[id] = {};
 | 
			
		||||
                for (key in dataPoints) {
 | 
			
		||||
                    var file = base + key + '/docker/' + id + '/' + dataPoints[key];
 | 
			
		||||
                    res[id][key] = {};
 | 
			
		||||
                    fs.readFile(file, 'utf8', function(err, data) {
 | 
			
		||||
                        if (err) return;
 | 
			
		||||
                        data.trim().split('\n').forEach(function(v, i) {
 | 
			
		||||
                            var vals = v.split(' ');
 | 
			
		||||
                            switch (vals.length) {
 | 
			
		||||
                            case 1:
 | 
			
		||||
                                res[id][dataPoints[key]] = parseInt(vals[0]);
 | 
			
		||||
                                break;
 | 
			
		||||
                            case 2:
 | 
			
		||||
                                res[id][key][dataPoints[key]] = {};
 | 
			
		||||
                                res[id][key][dataPoints[key]][vals[0]] = parseInt(vals[1]);
 | 
			
		||||
                                break;
 | 
			
		||||
                            }
 | 
			
		||||
                async.forEachOf(dataPoints, function(val1, category, cb2) {
 | 
			
		||||
                    res[id][category] = {};
 | 
			
		||||
                    async.each(val1, function(element, cb3) {
 | 
			
		||||
                        var file = base + category + '/docker/' + id + '/' + category + '.' + element;
 | 
			
		||||
                        res[id][category][element] = {};
 | 
			
		||||
                        fs.readFile(file, 'utf8', function(err, data) {
 | 
			
		||||
                            if (err) {cb3(err); return}
 | 
			
		||||
                            data.trim().split('\n').forEach(function(v, i) {
 | 
			
		||||
                                var vals = v.split(' ');
 | 
			
		||||
                                switch (vals.length) {
 | 
			
		||||
                                case 1:
 | 
			
		||||
                                    res[id][category][element] = vals[0];
 | 
			
		||||
                                    break;
 | 
			
		||||
                                case 2:
 | 
			
		||||
                                    res[id][category][element][vals[0]] = vals[1];
 | 
			
		||||
                                    break;
 | 
			
		||||
                                }
 | 
			
		||||
                            });
 | 
			
		||||
                            cb3();
 | 
			
		||||
                        });
 | 
			
		||||
                    }, function(err) {
 | 
			
		||||
                        cb2();
 | 
			
		||||
                    });
 | 
			
		||||
                }
 | 
			
		||||
                }, function(err) {
 | 
			
		||||
                    cb1();
 | 
			
		||||
                });
 | 
			
		||||
            }, function(err) {
 | 
			
		||||
                if (err) return;
 | 
			
		||||
                broadcast("stats", res);
 | 
			
		||||
            });
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
        console.log("new client");
 | 
			
		||||
 | 
			
		||||
        function emit(signal, data, info) {
 | 
			
		||||
@@ -82,7 +97,6 @@ module.exports = function() {
 | 
			
		||||
                    error: error, stderr: stderr, stdout: stdout
 | 
			
		||||
                });
 | 
			
		||||
            exec("docker inspect "+stdout.trim().replace(/\n/g, " "), containerinspect);
 | 
			
		||||
            stats(stdout.trim().split('\n'));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        function updatecontainers(error, stdout, stderr) {
 | 
			
		||||
@@ -228,6 +242,13 @@ module.exports = function() {
 | 
			
		||||
            .on('bash-input', bash_input)
 | 
			
		||||
            .on('bash-end', bash_end);
 | 
			
		||||
 | 
			
		||||
        setInterval(function() {
 | 
			
		||||
            exec("docker ps -q --no-trunc ", function(error, stdout, stderr) {
 | 
			
		||||
                if (error || stderr) return; // ignore
 | 
			
		||||
                stats(stdout.trim().split('\n'));
 | 
			
		||||
            })
 | 
			
		||||
        },
 | 
			
		||||
                    1000);
 | 
			
		||||
        
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user