diff --git a/README.md b/README.md
index 5f6672a85..f8060bb96 100644
--- a/README.md
+++ b/README.md
@@ -217,23 +217,38 @@ Then, run the local build via
Scope has a collection of built in debugging tools to aid Scope delevopers.
-- To have the app or probe dump their goroutine stacks, run:
+- To have the Scope App or Scope Probe dump their goroutine stacks, run:
```
pkill -SIGQUIT scope-(app|probe)
docker logs weavescope
```
-- The probe is instrumented with various counters and timers. To have it dump
+- The Scope Probe is instrumented with various counters and timers. To have it dump
those values, run:
```
pkill -SIGUSR1 scope-probe
docker logs weavescope
```
-- The app and probe both include golang's pprof integration for gathering CPU
- and memory profiles. To use these with the probe, you must launch Scope with
- the following arguments `scope launch --probe.http.listen :4041`. You can
- then collect profiles in the usual way:
+- Both the Scope App and the Scope Probe offer
+ [http endpoints with profiling information](https://golang.org/pkg/net/http/pprof/).
+ These cover things such as CPU usage and memory consumption:
+ * The Scope App enables its http profiling endpoints by default, which
+ are accessible on the same port the Scope UI is served (4040).
+ * The Scope Probe doesn't enable its profiling endpoints by default.
+ To enable them, you must launch Scope with `--probe.http.listen addr:port`.
+ For instance, launching scope with `scope launch --probe.http.listen :4041`, will
+ allow you access the Scope Probe's profiling endpoints on port 4041.
+
+ Then, you can collect profiles in the usual way. For instance:
+
+ * To collect the Memory profile of the Scope App:
+
+ ```
+go tool pprof http://localhost:4040/debug/pprof/heap
```
-go tool pprof http://localhost:(4040|4041)/debug/pprof/profile
+ * To collect the CPU profile of the Scope Probe:
+
+ ```
+go tool pprof http://localhost:4041/debug/pprof/profile
```
diff --git a/client/app/scripts/actions/app-actions.js b/client/app/scripts/actions/app-actions.js
index 6a28ac297..7fba88d65 100644
--- a/client/app/scripts/actions/app-actions.js
+++ b/client/app/scripts/actions/app-actions.js
@@ -159,11 +159,12 @@ export function hitEsc() {
type: ActionTypes.CLICK_CLOSE_TERMINAL,
pipeId: controlPipe.id
});
+ updateRoute();
// Dont deselect node on ESC if there is a controlPipe (keep terminal open)
- } else if (AppStore.getSelectedNodeId() && !controlPipe) {
+ } else if (AppStore.getTopCardNodeId() && !controlPipe) {
AppDispatcher.dispatch({type: ActionTypes.DESELECT_NODE});
+ updateRoute();
}
- updateRoute();
}
export function leaveEdge(edgeId) {
@@ -242,7 +243,7 @@ export function receiveControlPipeFromParams(pipeId, rawTty) {
}
export function receiveControlPipe(pipeId, nodeId, rawTty) {
- if (nodeId !== AppStore.getSelectedNodeId()) {
+ if (nodeId !== AppStore.getTopCardNodeId()) {
log('Node was deselected before we could set up control!');
deletePipe(pipeId);
return;
diff --git a/client/app/scripts/components/app.js b/client/app/scripts/components/app.js
index fbad26b07..01cb5de6d 100644
--- a/client/app/scripts/components/app.js
+++ b/client/app/scripts/components/app.js
@@ -87,7 +87,7 @@ export default class App extends React.Component {
{showingTerminal && }
+ details={this.state.nodeDetails} />}
diff --git a/client/app/scripts/components/embedded-terminal.js b/client/app/scripts/components/embedded-terminal.js
index 7c3af84d1..bd7436bf1 100644
--- a/client/app/scripts/components/embedded-terminal.js
+++ b/client/app/scripts/components/embedded-terminal.js
@@ -3,18 +3,19 @@ import React from 'react';
import { getNodeColor, getNodeColorDark } from '../utils/color-utils';
import Terminal from './terminal';
-export default function EmeddedTerminal({pipe, nodeId, nodes}) {
- const node = nodes.get(nodeId);
- const titleBarColor = node && getNodeColorDark(node.get('rank'), node.get('label_major'));
- const statusBarColor = node && getNodeColor(node.get('rank'), node.get('label_major'));
- const title = node && node.get('label_major');
+export default function EmeddedTerminal({pipe, nodeId, details}) {
+ const node = details.get(nodeId);
+ const d = node && node.details;
+ const titleBarColor = d && getNodeColorDark(d.rank, d.label_major);
+ const statusBarColor = d && getNodeColor(d.rank, d.label_major);
+ const title = d && d.label_major;
// React unmount/remounts when key changes, this is important for cleaning up
// the term.js and creating a new one for the new pipe.
return (
+ statusBarColor={statusBarColor} title={title} />
);
}
diff --git a/client/app/scripts/stores/app-store.js b/client/app/scripts/stores/app-store.js
index 549c3da00..f5428168a 100644
--- a/client/app/scripts/stores/app-store.js
+++ b/client/app/scripts/stores/app-store.js
@@ -239,6 +239,10 @@ export class AppStore extends Store {
}).toJS();
}
+ getTopCardNodeId() {
+ return nodeDetails.last().id;
+ }
+
getNodes() {
return nodes;
}
@@ -551,7 +555,7 @@ export class AppStore extends Store {
selectedNodeId = payload.state.selectedNodeId;
if (payload.state.controlPipe) {
controlPipes = makeOrderedMap({
- [payload.state.controlPipe.pipeId]:
+ [payload.state.controlPipe.id]:
makeOrderedMap(payload.state.controlPipe)
});
} else {
diff --git a/experimental/Makefile b/experimental/Makefile
index 4e6993352..c489209d9 100644
--- a/experimental/Makefile
+++ b/experimental/Makefile
@@ -1,6 +1,6 @@
.PHONY: all test clean
-DIRS=$(shell find . -maxdepth 2 -name *.go -printf "%h\n" | sort -u)
+DIRS=$(shell find . -maxdepth 2 -name *.go | xargs -n1 dirname | sort -u)
TARGETS=$(join $(patsubst %,%/,$(DIRS)),$(patsubst ./%,%,$(DIRS)))
BUILD_IN_CONTAINER=true
RM=--rm
diff --git a/experimental/demoprobe/main.go b/experimental/demoprobe/main.go
index 792b5df89..7e0d12c3c 100644
--- a/experimental/demoprobe/main.go
+++ b/experimental/demoprobe/main.go
@@ -90,14 +90,14 @@ func demoReport(nodeCount int) report.Report {
)
// Endpoint topology
- r.Endpoint = r.Endpoint.AddNode(srcPortID, report.MakeNode().WithMetadata(map[string]string{
+ r.Endpoint = r.Endpoint.AddNode(srcPortID, report.MakeNode().WithLatests(map[string]string{
process.PID: "4000",
"name": c.srcProc,
"domain": "node-" + src,
}).WithEdge(dstPortID, report.EdgeMetadata{
MaxConnCountTCP: newu64(uint64(rand.Intn(100) + 10)),
}))
- r.Endpoint = r.Endpoint.AddNode(dstPortID, report.MakeNode().WithMetadata(map[string]string{
+ r.Endpoint = r.Endpoint.AddNode(dstPortID, report.MakeNode().WithLatests(map[string]string{
process.PID: "4000",
"name": c.dstProc,
"domain": "node-" + dst,
@@ -106,10 +106,10 @@ func demoReport(nodeCount int) report.Report {
}))
// Address topology
- r.Address = r.Address.AddNode(srcAddressID, report.MakeNode().WithMetadata(map[string]string{
+ r.Address = r.Address.AddNode(srcAddressID, report.MakeNode().WithLatests(map[string]string{
docker.Name: src,
}).WithAdjacent(dstAddressID))
- r.Address = r.Address.AddNode(srcAddressID, report.MakeNode().WithMetadata(map[string]string{
+ r.Address = r.Address.AddNode(srcAddressID, report.MakeNode().WithLatests(map[string]string{
docker.Name: dst,
}).WithAdjacent(srcAddressID))
diff --git a/experimental/genreport/generate.go b/experimental/genreport/generate.go
index bc90cd78e..7f7735882 100644
--- a/experimental/genreport/generate.go
+++ b/experimental/genreport/generate.go
@@ -64,14 +64,14 @@ func DemoReport(nodeCount int) report.Report {
)
// Endpoint topology
- r.Endpoint = r.Endpoint.AddNode(srcPortID, report.MakeNode().WithMetadata(map[string]string{
+ r.Endpoint = r.Endpoint.AddNode(srcPortID, report.MakeNode().WithLatests(map[string]string{
"pid": "4000",
"name": c.srcProc,
"domain": "node-" + src,
}).WithEdge(dstPortID, report.EdgeMetadata{
MaxConnCountTCP: newu64(uint64(rand.Intn(100) + 10)),
}))
- r.Endpoint = r.Endpoint.AddNode(dstPortID, report.MakeNode().WithMetadata(map[string]string{
+ r.Endpoint = r.Endpoint.AddNode(dstPortID, report.MakeNode().WithLatests(map[string]string{
"pid": "4000",
"name": c.dstProc,
"domain": "node-" + dst,
@@ -80,10 +80,10 @@ func DemoReport(nodeCount int) report.Report {
}))
// Address topology
- r.Address = r.Address.AddNode(srcAddressID, report.MakeNode().WithMetadata(map[string]string{
+ r.Address = r.Address.AddNode(srcAddressID, report.MakeNode().WithLatests(map[string]string{
"name": src,
}).WithAdjacent(dstAddressID))
- r.Address = r.Address.AddNode(dstAddressID, report.MakeNode().WithMetadata(map[string]string{
+ r.Address = r.Address.AddNode(dstAddressID, report.MakeNode().WithLatests(map[string]string{
"name": dst,
}).WithAdjacent(srcAddressID))
diff --git a/experimental/sniff/sniffer.go b/experimental/sniff/sniffer.go
index 9d97908ad..70bf472c5 100644
--- a/experimental/sniff/sniffer.go
+++ b/experimental/sniff/sniffer.go
@@ -158,7 +158,7 @@ func interpolateCounts(r report.Report) {
factor := 1.0 / rate
for _, topology := range r.Topologies() {
for _, nmd := range topology.Nodes {
- for _, emd := range nmd.Edges {
+ nmd.Edges.ForEach(func(_ string, emd report.EdgeMetadata) {
if emd.EgressPacketCount != nil {
*emd.EgressPacketCount = uint64(float64(*emd.EgressPacketCount) * factor)
}
@@ -171,7 +171,7 @@ func interpolateCounts(r report.Report) {
if emd.IngressByteCount != nil {
*emd.IngressByteCount = uint64(float64(*emd.IngressByteCount) * factor)
}
- }
+ })
}
}
}
@@ -306,7 +306,8 @@ func (s *Sniffer) Merge(p Packet, rpt *report.Report) {
rpt.Address = addAdjacency(rpt.Address, srcNodeID, dstNodeID)
- emd := rpt.Address.Nodes[srcNodeID].Edges[dstNodeID]
+ node := rpt.Address.Nodes[srcNodeID]
+ emd, _ := node.Edges.Lookup(dstNodeID)
if egress {
if emd.EgressPacketCount == nil {
emd.EgressPacketCount = new(uint64)
@@ -326,7 +327,7 @@ func (s *Sniffer) Merge(p Packet, rpt *report.Report) {
}
*emd.IngressByteCount += uint64(p.Network)
}
- rpt.Address.Nodes[srcNodeID].Edges[dstNodeID] = emd
+ rpt.Address.Nodes[srcNodeID] = node.WithEdge(dstNodeID, emd)
}
// If we have ports, we can add to the endpoint topology, too.
@@ -338,7 +339,8 @@ func (s *Sniffer) Merge(p Packet, rpt *report.Report) {
rpt.Endpoint = addAdjacency(rpt.Endpoint, srcNodeID, dstNodeID)
- emd := rpt.Endpoint.Nodes[srcNodeID].Edges[dstNodeID]
+ node := rpt.Endpoint.Nodes[srcNodeID]
+ emd, _ := node.Edges.Lookup(dstNodeID)
if egress {
if emd.EgressPacketCount == nil {
emd.EgressPacketCount = new(uint64)
@@ -358,6 +360,6 @@ func (s *Sniffer) Merge(p Packet, rpt *report.Report) {
}
*emd.IngressByteCount += uint64(p.Transport)
}
- rpt.Endpoint.Nodes[srcNodeID].Edges[dstNodeID] = emd
+ rpt.Endpoint.Nodes[srcNodeID] = node.WithEdge(dstNodeID, emd)
}
}
diff --git a/probe/docker/container.go b/probe/docker/container.go
index f03a9a8b4..cd33e5791 100644
--- a/probe/docker/container.go
+++ b/probe/docker/container.go
@@ -325,17 +325,17 @@ func (c *container) GetNode(hostID string, localAddrs []net.IP) report.Node {
ContainerCommand: c.container.Path + " " + strings.Join(c.container.Args, " "),
ImageID: c.container.Image,
ContainerHostname: c.Hostname(),
- }).WithSets(report.Sets{
- ContainerPorts: c.ports(localAddrs),
- ContainerIPs: report.MakeStringSet(ips...),
- ContainerIPsWithScopes: report.MakeStringSet(ipsWithScopes...),
- }).WithLatest(
+ }).WithSets(report.EmptySets.
+ Add(ContainerPorts, c.ports(localAddrs)).
+ Add(ContainerIPs, report.MakeStringSet(ips...)).
+ Add(ContainerIPsWithScopes, report.MakeStringSet(ipsWithScopes...)),
+ ).WithLatest(
ContainerState, mtime.Now(), state,
).WithMetrics(
c.metrics(),
- ).WithParents(report.Sets{
- report.ContainerImage: report.MakeStringSet(report.MakeContainerImageNodeID(c.container.Image)),
- })
+ ).WithParents(report.EmptySets.
+ Add(report.ContainerImage, report.MakeStringSet(report.MakeContainerImageNodeID(c.container.Image))),
+ )
if c.container.State.Paused {
result = result.WithControls(UnpauseContainer)
@@ -347,13 +347,13 @@ func (c *container) GetNode(hostID string, localAddrs []net.IP) report.Node {
result = result.WithControls(StartContainer)
}
- AddLabels(result, c.container.Config.Labels)
+ result = AddLabels(result, c.container.Config.Labels)
if c.latestStats == nil {
return result
}
- result = result.WithMetadata(map[string]string{
+ result = result.WithLatests(map[string]string{
MemoryMaxUsage: strconv.FormatUint(c.latestStats.MemoryStats.MaxUsage, 10),
MemoryUsage: strconv.FormatUint(c.latestStats.MemoryStats.Usage, 10),
MemoryFailcnt: strconv.FormatUint(c.latestStats.MemoryStats.Failcnt, 10),
@@ -370,11 +370,13 @@ func (c *container) GetNode(hostID string, localAddrs []net.IP) report.Node {
// ExtractContainerIPs returns the list of container IPs given a Node from the Container topology.
func ExtractContainerIPs(nmd report.Node) []string {
- return []string(nmd.Sets[ContainerIPs])
+ v, _ := nmd.Sets.Lookup(ContainerIPs)
+ return []string(v)
}
// ExtractContainerIPsWithScopes returns the list of container IPs, prepended
// with scopes, given a Node from the Container topology.
func ExtractContainerIPsWithScopes(nmd report.Node) []string {
- return []string(nmd.Sets[ContainerIPsWithScopes])
+ v, _ := nmd.Sets.Lookup(ContainerIPsWithScopes)
+ return []string(v)
}
diff --git a/probe/docker/container_test.go b/probe/docker/container_test.go
index 032e82810..930820391 100644
--- a/probe/docker/container_test.go
+++ b/probe/docker/container_test.go
@@ -8,7 +8,6 @@ import (
"log"
"net"
"net/http"
- "reflect"
"testing"
"time"
@@ -18,6 +17,7 @@ import (
"github.com/weaveworks/scope/probe/docker"
"github.com/weaveworks/scope/report"
"github.com/weaveworks/scope/test"
+ "github.com/weaveworks/scope/test/reflect"
)
type mockConnection struct {
@@ -71,7 +71,7 @@ func TestContainer(t *testing.T) {
}
// Now see if we go them
- want := report.MakeNode().WithMetadata(map[string]string{
+ want := report.MakeNode().WithLatests(map[string]string{
"docker_container_command": " ",
"docker_container_created": "01 Jan 01 00:00 UTC",
"docker_container_id": "ping",
@@ -80,11 +80,11 @@ func TestContainer(t *testing.T) {
"docker_label_foo1": "bar1",
"docker_label_foo2": "bar2",
"docker_memory_usage": "12345",
- }).WithSets(report.Sets{
- "docker_container_ports": report.MakeStringSet("1.2.3.4:80->80/tcp", "81/tcp"),
- "docker_container_ips": report.MakeStringSet("1.2.3.4"),
- "docker_container_ips_with_scopes": report.MakeStringSet("scope;1.2.3.4"),
- }).WithControls(
+ }).WithSets(report.EmptySets.
+ Add("docker_container_ports", report.MakeStringSet("1.2.3.4:80->80/tcp", "81/tcp")).
+ Add("docker_container_ips", report.MakeStringSet("1.2.3.4")).
+ Add("docker_container_ips_with_scopes", report.MakeStringSet("scope;1.2.3.4")),
+ ).WithControls(
docker.RestartContainer, docker.StopContainer, docker.PauseContainer,
docker.AttachContainer, docker.ExecContainer,
).WithLatest(
@@ -92,16 +92,17 @@ func TestContainer(t *testing.T) {
).WithMetrics(report.Metrics{
"docker_cpu_total_usage": report.MakeMetric(),
"docker_memory_usage": report.MakeMetric().Add(now, 12345),
- }).WithParents(report.Sets{
- report.ContainerImage: report.MakeStringSet(report.MakeContainerImageNodeID("baz")),
- })
+ }).WithParents(report.EmptySets.
+ Add(report.ContainerImage, report.MakeStringSet(report.MakeContainerImageNodeID("baz"))),
+ )
+
test.Poll(t, 100*time.Millisecond, want, func() interface{} {
node := c.GetNode("scope", []net.IP{})
- for k, v := range node.Metadata {
+ node.Latest.ForEach(func(k, v string) {
if v == "0" || v == "" {
- delete(node.Metadata, k)
+ node.Latest = node.Latest.Delete(k)
}
- }
+ })
return node
})
diff --git a/probe/docker/controls.go b/probe/docker/controls.go
index b0871e77f..c6e714946 100644
--- a/probe/docker/controls.go
+++ b/probe/docker/controls.go
@@ -159,3 +159,13 @@ func (r *registry) registerControls() {
controls.Register(AttachContainer, captureContainerID(r.attachContainer))
controls.Register(ExecContainer, captureContainerID(r.execContainer))
}
+
+func (r *registry) deregisterControls() {
+ controls.Rm(StopContainer)
+ controls.Rm(StartContainer)
+ controls.Rm(RestartContainer)
+ controls.Rm(PauseContainer)
+ controls.Rm(UnpauseContainer)
+ controls.Rm(AttachContainer)
+ controls.Rm(ExecContainer)
+}
diff --git a/probe/docker/controls_test.go b/probe/docker/controls_test.go
index f6b355704..bf5093fd1 100644
--- a/probe/docker/controls_test.go
+++ b/probe/docker/controls_test.go
@@ -79,7 +79,7 @@ func TestPipes(t *testing.T) {
RawTTY: true,
}
if !reflect.DeepEqual(result, want) {
- t.Errorf("diff: %s", test.Diff(want, result))
+ t.Errorf("diff %s: %s", tc, test.Diff(want, result))
}
}
})
diff --git a/probe/docker/labels.go b/probe/docker/labels.go
index c3b1454f9..3fd789964 100644
--- a/probe/docker/labels.go
+++ b/probe/docker/labels.go
@@ -12,20 +12,24 @@ import (
const LabelPrefix = "docker_label_"
// AddLabels appends Docker labels to the Node from a topology.
-func AddLabels(nmd report.Node, labels map[string]string) {
+func AddLabels(node report.Node, labels map[string]string) report.Node {
+ node = node.Copy()
for key, value := range labels {
- nmd.Metadata[LabelPrefix+key] = value
+ node = node.WithLatests(map[string]string{
+ LabelPrefix + key: value,
+ })
}
+ return node
}
// ExtractLabels returns the list of Docker labels given a Node from a topology.
-func ExtractLabels(nmd report.Node) map[string]string {
+func ExtractLabels(node report.Node) map[string]string {
result := map[string]string{}
- for key, value := range nmd.Metadata {
+ node.Latest.ForEach(func(key, value string) {
if strings.HasPrefix(key, LabelPrefix) {
label := key[len(LabelPrefix):]
result[label] = value
}
- }
+ })
return result
}
diff --git a/probe/docker/labels_test.go b/probe/docker/labels_test.go
index 092148a58..199dd2bba 100644
--- a/probe/docker/labels_test.go
+++ b/probe/docker/labels_test.go
@@ -16,7 +16,7 @@ func TestLabels(t *testing.T) {
}
nmd := report.MakeNode()
- docker.AddLabels(nmd, want)
+ nmd = docker.AddLabels(nmd, want)
have := docker.ExtractLabels(nmd)
if !reflect.DeepEqual(want, have) {
diff --git a/probe/docker/registry.go b/probe/docker/registry.go
index bf805eb48..a60589793 100644
--- a/probe/docker/registry.go
+++ b/probe/docker/registry.go
@@ -100,6 +100,7 @@ func NewRegistry(interval time.Duration, pipes controls.PipeClient) (Registry, e
// Stop stops the Docker registry's event subscriber.
func (r *registry) Stop() {
+ r.deregisterControls()
ch := make(chan struct{})
r.quit <- ch
<-ch
diff --git a/probe/docker/registry_test.go b/probe/docker/registry_test.go
index 73f175455..cc9c40f51 100644
--- a/probe/docker/registry_test.go
+++ b/probe/docker/registry_test.go
@@ -53,7 +53,9 @@ func (c *mockContainer) GetNode(_ string, _ []net.IP) report.Node {
docker.ContainerID: c.c.ID,
docker.ContainerName: c.c.Name,
docker.ImageID: c.c.Image,
- })
+ }).WithParents(report.EmptySets.
+ Add(report.ContainerImage, report.MakeStringSet(report.MakeContainerImageNodeID(c.c.Image))),
+ )
}
func (c *mockContainer) Container() *client.Container {
diff --git a/probe/docker/reporter.go b/probe/docker/reporter.go
index fd7800f7d..b19111f9c 100644
--- a/probe/docker/reporter.go
+++ b/probe/docker/reporter.go
@@ -115,17 +115,17 @@ func (r *Reporter) containerImageTopology() report.Topology {
result := report.MakeTopology()
r.registry.WalkImages(func(image *docker_client.APIImages) {
- nmd := report.MakeNodeWith(map[string]string{
+ node := report.MakeNodeWith(map[string]string{
ImageID: image.ID,
})
- AddLabels(nmd, image.Labels)
+ node = AddLabels(node, image.Labels)
if len(image.RepoTags) > 0 {
- nmd.Metadata[ImageName] = image.RepoTags[0]
+ node = node.WithLatests(map[string]string{ImageName: image.RepoTags[0]})
}
nodeID := report.MakeContainerImageNodeID(image.ID)
- result.AddNode(nodeID, nmd)
+ result.AddNode(nodeID, node)
})
return result
diff --git a/probe/docker/reporter_test.go b/probe/docker/reporter_test.go
index dc944e6b6..c4439ed69 100644
--- a/probe/docker/reporter_test.go
+++ b/probe/docker/reporter_test.go
@@ -1,14 +1,12 @@
package docker_test
import (
- "reflect"
"testing"
client "github.com/fsouza/go-dockerclient"
"github.com/weaveworks/scope/probe/docker"
"github.com/weaveworks/scope/report"
- "github.com/weaveworks/scope/test"
)
type mockRegistry struct {
@@ -52,66 +50,60 @@ var (
)
func TestReporter(t *testing.T) {
- want := report.MakeReport()
- want.Container = report.Topology{
- Nodes: report.Nodes{
- report.MakeContainerNodeID("ping"): report.MakeNodeWith(map[string]string{
- docker.ContainerID: "ping",
- docker.ContainerName: "pong",
- docker.ImageID: "baz",
- }),
- },
- Controls: report.Controls{
- docker.RestartContainer: report.Control{
- ID: docker.RestartContainer,
- Human: "Restart",
- Icon: "fa-repeat",
- },
- docker.StartContainer: report.Control{
- ID: docker.StartContainer,
- Human: "Start",
- Icon: "fa-play",
- },
- docker.StopContainer: report.Control{
- ID: docker.StopContainer,
- Human: "Stop",
- Icon: "fa-stop",
- },
- docker.PauseContainer: report.Control{
- ID: docker.PauseContainer,
- Human: "Pause",
- Icon: "fa-pause",
- },
- docker.UnpauseContainer: report.Control{
- ID: docker.UnpauseContainer,
- Human: "Unpause",
- Icon: "fa-play",
- },
- docker.AttachContainer: report.Control{
- ID: docker.AttachContainer,
- Human: "Attach",
- Icon: "fa-desktop",
- },
- docker.ExecContainer: report.Control{
- ID: docker.ExecContainer,
- Human: "Exec /bin/sh",
- Icon: "fa-terminal",
- },
- },
- }
- want.ContainerImage = report.Topology{
- Nodes: report.Nodes{
- report.MakeContainerImageNodeID("baz"): report.MakeNodeWith(map[string]string{
- docker.ImageID: "baz",
- docker.ImageName: "bang",
- }),
- },
- Controls: report.Controls{},
+ containerImageNodeID := report.MakeContainerImageNodeID("baz")
+ rpt, err := docker.NewReporter(mockRegistryInstance, "host1", nil).Report()
+ if err != nil {
+ t.Fatal(err)
}
- reporter := docker.NewReporter(mockRegistryInstance, "host1", nil)
- have, _ := reporter.Report()
- if !reflect.DeepEqual(want, have) {
- t.Errorf("%s", test.Diff(want, have))
+ // Reporter should add a container
+ {
+ containerNodeID := report.MakeContainerNodeID("ping")
+ node, ok := rpt.Container.Nodes[containerNodeID]
+ if !ok {
+ t.Fatalf("Expected report to have container image %q, but not found", containerNodeID)
+ }
+
+ for k, want := range map[string]string{
+ docker.ContainerID: "ping",
+ docker.ContainerName: "pong",
+ docker.ImageID: "baz",
+ } {
+ if have, ok := node.Latest.Lookup(k); !ok || have != want {
+ t.Errorf("Expected container %s latest %q: %q, got %q", containerNodeID, k, want, have)
+ }
+ }
+
+ // container should have controls
+ if len(rpt.Container.Controls) == 0 {
+ t.Errorf("Container should have some controls")
+ }
+
+ // container should have the image as a parent
+ if parents, ok := node.Parents.Lookup(report.ContainerImage); !ok || !parents.Contains(containerImageNodeID) {
+ t.Errorf("Expected container %s to have parent container image %q, got %q", containerNodeID, containerImageNodeID, parents)
+ }
+ }
+
+ // Reporter should add a container image
+ {
+ node, ok := rpt.ContainerImage.Nodes[containerImageNodeID]
+ if !ok {
+ t.Fatalf("Expected report to have container image %q, but not found", containerImageNodeID)
+ }
+
+ for k, want := range map[string]string{
+ docker.ImageID: "baz",
+ docker.ImageName: "bang",
+ } {
+ if have, ok := node.Latest.Lookup(k); !ok || have != want {
+ t.Errorf("Expected container image %s latest %q: %q, got %q", containerImageNodeID, k, want, have)
+ }
+ }
+
+ // container image should have no controls
+ if len(rpt.ContainerImage.Controls) != 0 {
+ t.Errorf("Container images should not have any controls")
+ }
}
}
diff --git a/probe/docker/tagger.go b/probe/docker/tagger.go
index cd982fd41..ddbe12b39 100644
--- a/probe/docker/tagger.go
+++ b/probe/docker/tagger.go
@@ -49,7 +49,7 @@ func (t *Tagger) Tag(r report.Report) (report.Report, error) {
func (t *Tagger) tag(tree process.Tree, topology *report.Topology) {
for nodeID, node := range topology.Nodes {
- pidStr, ok := node.Metadata[process.PID]
+ pidStr, ok := node.Latest.Lookup(process.PID)
if !ok {
continue
}
@@ -84,9 +84,9 @@ func (t *Tagger) tag(tree process.Tree, topology *report.Topology) {
topology.AddNode(nodeID, report.MakeNodeWith(map[string]string{
ContainerID: c.ID(),
- }).WithParents(report.Sets{
- report.Container: report.MakeStringSet(report.MakeContainerNodeID(c.ID())),
- report.ContainerImage: report.MakeStringSet(report.MakeContainerImageNodeID(c.Image())),
- }))
+ }).WithParents(report.EmptySets.
+ Add(report.Container, report.MakeStringSet(report.MakeContainerNodeID(c.ID()))).
+ Add(report.ContainerImage, report.MakeStringSet(report.MakeContainerImageNodeID(c.Image()))),
+ ))
}
}
diff --git a/probe/docker/tagger_test.go b/probe/docker/tagger_test.go
index 3dc042725..b414234b5 100644
--- a/probe/docker/tagger_test.go
+++ b/probe/docker/tagger_test.go
@@ -2,13 +2,13 @@ package docker_test
import (
"fmt"
- "reflect"
"testing"
+ "time"
+ "github.com/weaveworks/scope/common/mtime"
"github.com/weaveworks/scope/probe/docker"
"github.com/weaveworks/scope/probe/process"
"github.com/weaveworks/scope/report"
- "github.com/weaveworks/scope/test"
)
type mockProcessTree struct {
@@ -28,6 +28,9 @@ func (m *mockProcessTree) GetChildren(int) ([]int, error) {
}
func TestTagger(t *testing.T) {
+ mtime.NowForce(time.Now())
+ defer mtime.NowReset()
+
oldProcessTree := docker.NewProcessTreeStub
defer func() { docker.NewProcessTreeStub = oldProcessTree }()
@@ -38,28 +41,37 @@ func TestTagger(t *testing.T) {
var (
pid1NodeID = report.MakeProcessNodeID("somehost.com", "2")
pid2NodeID = report.MakeProcessNodeID("somehost.com", "3")
- wantNode = report.MakeNodeWith(map[string]string{
- docker.ContainerID: "ping",
- }).WithParents(report.Sets{
- report.Container: report.MakeStringSet(report.MakeContainerNodeID("ping")),
- report.ContainerImage: report.MakeStringSet(report.MakeContainerImageNodeID("baz")),
- })
)
input := report.MakeReport()
input.Process.AddNode(pid1NodeID, report.MakeNodeWith(map[string]string{process.PID: "2"}))
input.Process.AddNode(pid2NodeID, report.MakeNodeWith(map[string]string{process.PID: "3"}))
- want := report.MakeReport()
- want.Process.AddNode(pid1NodeID, report.MakeNodeWith(map[string]string{process.PID: "2"}).Merge(wantNode))
- want.Process.AddNode(pid2NodeID, report.MakeNodeWith(map[string]string{process.PID: "3"}).Merge(wantNode))
-
- tagger := docker.NewTagger(mockRegistryInstance, nil)
- have, err := tagger.Tag(input)
+ have, err := docker.NewTagger(mockRegistryInstance, nil).Tag(input)
if err != nil {
t.Errorf("%v", err)
}
- if !reflect.DeepEqual(want, have) {
- t.Errorf("%s", test.Diff(want, have))
+
+ // Processes should be tagged with their container ID, and parents
+ for _, nodeID := range []string{pid1NodeID, pid2NodeID} {
+ node, ok := have.Process.Nodes[nodeID]
+ if !ok {
+ t.Errorf("Expected process node %s, but not found", nodeID)
+ }
+
+ // node should have the container id added
+ if have, ok := node.Latest.Lookup(docker.ContainerID); !ok || have != "ping" {
+ t.Errorf("Expected process node %s to have container id %q, got %q", nodeID, "ping", have)
+ }
+
+ // node should have the container as a parent
+ if have, ok := node.Parents.Lookup(report.Container); !ok || !have.Contains(report.MakeContainerNodeID("ping")) {
+ t.Errorf("Expected process node %s to have container %q as a parent, got %q", nodeID, "ping", have)
+ }
+
+ // node should have the container image as a parent
+ if have, ok := node.Parents.Lookup(report.ContainerImage); !ok || !have.Contains(report.MakeContainerImageNodeID("baz")) {
+ t.Errorf("Expected process node %s to have container image %q as a parent, got %q", nodeID, "baz", have)
+ }
}
}
diff --git a/probe/endpoint/nat.go b/probe/endpoint/nat.go
index 205379477..5f4f30eff 100644
--- a/probe/endpoint/nat.go
+++ b/probe/endpoint/nat.go
@@ -61,10 +61,10 @@ func (n natMapper) applyNAT(rpt report.Report, scope string) {
return
}
- node = node.Copy()
- node.Metadata[Addr] = mapping.rewrittenIP
- node.Metadata[Port] = copyEndpointPort
- node.Metadata["copy_of"] = realEndpointID
- rpt.Endpoint.AddNode(copyEndpointID, node)
+ rpt.Endpoint.AddNode(copyEndpointID, node.WithLatests(map[string]string{
+ Addr: mapping.rewrittenIP,
+ Port: copyEndpointPort,
+ "copy_of": realEndpointID,
+ }))
})
}
diff --git a/probe/endpoint/nat_internal_test.go b/probe/endpoint/nat_internal_test.go
index 105666d36..57994049c 100644
--- a/probe/endpoint/nat_internal_test.go
+++ b/probe/endpoint/nat_internal_test.go
@@ -1,11 +1,12 @@
package endpoint
import (
- "reflect"
"testing"
+ "github.com/weaveworks/scope/common/mtime"
"github.com/weaveworks/scope/report"
"github.com/weaveworks/scope/test"
+ "github.com/weaveworks/scope/test/reflect"
)
type mockFlowWalker struct {
@@ -21,6 +22,9 @@ func (m *mockFlowWalker) walkFlows(f func(flow)) {
func (m *mockFlowWalker) stop() {}
func TestNat(t *testing.T) {
+ mtime.NowForce(mtime.Now())
+ defer mtime.NowReset()
+
// test that two containers, on the docker network, get their connections mapped
// correctly.
// the setup is this:
@@ -40,14 +44,14 @@ func TestNat(t *testing.T) {
have := report.MakeReport()
originalID := report.MakeEndpointNodeID("host1", "10.0.47.1", "80")
- have.Endpoint.AddNode(originalID, report.MakeNodeWith(report.Metadata{
+ have.Endpoint.AddNode(originalID, report.MakeNodeWith(map[string]string{
Addr: "10.0.47.1",
Port: "80",
"foo": "bar",
}))
want := have.Copy()
- want.Endpoint.AddNode(report.MakeEndpointNodeID("host1", "1.2.3.4", "80"), report.MakeNodeWith(report.Metadata{
+ want.Endpoint.AddNode(report.MakeEndpointNodeID("host1", "1.2.3.4", "80"), report.MakeNodeWith(map[string]string{
Addr: "1.2.3.4",
Port: "80",
"copy_of": originalID,
@@ -72,14 +76,14 @@ func TestNat(t *testing.T) {
have := report.MakeReport()
originalID := report.MakeEndpointNodeID("host2", "10.0.47.2", "22222")
- have.Endpoint.AddNode(originalID, report.MakeNodeWith(report.Metadata{
+ have.Endpoint.AddNode(originalID, report.MakeNodeWith(map[string]string{
Addr: "10.0.47.2",
Port: "22222",
"foo": "baz",
}))
want := have.Copy()
- want.Endpoint.AddNode(report.MakeEndpointNodeID("host2", "2.3.4.5", "22223"), report.MakeNodeWith(report.Metadata{
+ want.Endpoint.AddNode(report.MakeEndpointNodeID("host2", "2.3.4.5", "22223"), report.MakeNodeWith(map[string]string{
Addr: "2.3.4.5",
Port: "22223",
"copy_of": originalID,
diff --git a/probe/endpoint/reporter.go b/probe/endpoint/reporter.go
index 6dcd9e8bc..c2f9c83f0 100644
--- a/probe/endpoint/reporter.go
+++ b/probe/endpoint/reporter.go
@@ -84,7 +84,7 @@ func (r *Reporter) Report() (report.Report, error) {
if err != nil {
return rpt, err
}
- commonNodeInfo := report.MakeNode().WithMetadata(report.Metadata{
+ commonNodeInfo := report.MakeNode().WithLatests(map[string]string{
Procspied: "true",
})
for conn := conns.Next(); conn != nil; conn = conns.Next() {
@@ -96,7 +96,7 @@ func (r *Reporter) Report() (report.Report, error) {
)
extraNodeInfo := commonNodeInfo.Copy()
if conn.Proc.PID > 0 {
- extraNodeInfo = extraNodeInfo.WithMetadata(report.Metadata{
+ extraNodeInfo = extraNodeInfo.WithLatests(map[string]string{
process.PID: strconv.FormatUint(uint64(conn.Proc.PID), 10),
report.HostNodeID: hostNodeID,
})
@@ -107,7 +107,7 @@ func (r *Reporter) Report() (report.Report, error) {
// Consult the flowWalker for short-live connections
{
- extraNodeInfo := report.MakeNode().WithMetadata(report.Metadata{
+ extraNodeInfo := report.MakeNode().WithLatests(map[string]string{
Conntracked: "true",
})
r.flowWalker.walkFlows(func(f flow) {
diff --git a/probe/endpoint/reporter_test.go b/probe/endpoint/reporter_test.go
index a4a8c83d0..4a03636e7 100644
--- a/probe/endpoint/reporter_test.go
+++ b/probe/endpoint/reporter_test.go
@@ -86,7 +86,8 @@ func TestSpyNoProcesses(t *testing.T) {
scopedRemote = report.MakeAddressNodeID(nodeID, fixRemoteAddress.String())
)
- if want, have := nodeName, r.Address.Nodes[scopedLocal].Metadata[docker.Name]; want != have {
+ have, _ := r.Address.Nodes[scopedLocal].Latest.Lookup(docker.Name)
+ if want, have := nodeName, have; want != have {
t.Fatalf("want %q, have %q", want, have)
}
@@ -127,7 +128,8 @@ func TestSpyWithProcesses(t *testing.T) {
for key, want := range map[string]string{
"pid": strconv.FormatUint(uint64(fixProcessPID), 10),
} {
- if have := r.Endpoint.Nodes[scopedLocal].Metadata[key]; want != have {
+ have, _ := r.Endpoint.Nodes[scopedLocal].Latest.Lookup(key)
+ if want != have {
t.Errorf("Process.Nodes[%q][%q]: want %q, have %q", scopedLocal, key, want, have)
}
}
diff --git a/probe/host/reporter.go b/probe/host/reporter.go
index 6692e1b72..9baf72cf9 100644
--- a/probe/host/reporter.go
+++ b/probe/host/reporter.go
@@ -8,7 +8,7 @@ import (
"github.com/weaveworks/scope/report"
)
-// Keys for use in Node.Metadata.
+// Keys for use in Node.Latest.
const (
Timestamp = "ts"
HostName = "host_name"
@@ -85,9 +85,9 @@ func (r *Reporter) Report() (report.Report, error) {
OS: runtime.GOOS,
KernelVersion: kernel,
Uptime: uptime.String(),
- }).WithSets(report.Sets{
- LocalNetworks: report.MakeStringSet(localCIDRs...),
- }).WithMetrics(metrics))
+ }).WithSets(report.EmptySets.
+ Add(LocalNetworks, report.MakeStringSet(localCIDRs...)),
+ ).WithMetrics(metrics))
return rep, nil
}
diff --git a/probe/host/reporter_test.go b/probe/host/reporter_test.go
index d1bd02c45..1d15e5434 100644
--- a/probe/host/reporter_test.go
+++ b/probe/host/reporter_test.go
@@ -2,7 +2,6 @@ package host_test
import (
"net"
- "reflect"
"runtime"
"testing"
"time"
@@ -10,7 +9,6 @@ import (
"github.com/weaveworks/scope/common/mtime"
"github.com/weaveworks/scope/probe/host"
"github.com/weaveworks/scope/report"
- "github.com/weaveworks/scope/test"
)
func TestReporter(t *testing.T) {
@@ -21,7 +19,7 @@ func TestReporter(t *testing.T) {
hostID = "hostid"
hostname = "hostname"
timestamp = time.Now()
- load = report.Metrics{
+ metrics = report.Metrics{
host.Load1: report.MakeMetric().Add(timestamp, 1.0),
host.Load5: report.MakeMetric().Add(timestamp, 5.0),
host.Load15: report.MakeMetric().Add(timestamp, 15.0),
@@ -52,23 +50,51 @@ func TestReporter(t *testing.T) {
host.GetMemoryUsageBytes = oldGetMemoryUsageBytes
}()
host.GetKernelVersion = func() (string, error) { return release + " " + version, nil }
- host.GetLoad = func(time.Time) report.Metrics { return load }
+ host.GetLoad = func(time.Time) report.Metrics { return metrics }
host.GetUptime = func() (time.Duration, error) { return time.ParseDuration(uptime) }
host.GetCPUUsagePercent = func() (float64, float64) { return 30.0, 100.0 }
host.GetMemoryUsageBytes = func() (float64, float64) { return 60.0, 100.0 }
- want := report.MakeReport()
- want.Host.AddNode(report.MakeHostNodeID(hostID), report.MakeNodeWith(map[string]string{
- host.Timestamp: timestamp.UTC().Format(time.RFC3339Nano),
- host.HostName: hostname,
- host.OS: runtime.GOOS,
- host.Uptime: uptime,
- host.KernelVersion: kernel,
- }).WithSets(report.Sets{
- host.LocalNetworks: report.MakeStringSet(network),
- }).WithMetrics(load))
- have, _ := host.NewReporter(hostID, hostname, localNets).Report()
- if !reflect.DeepEqual(want, have) {
- t.Errorf("%s", test.Diff(want, have))
+ rpt, err := host.NewReporter(hostID, hostname, localNets).Report()
+ if err != nil {
+ t.Fatal(err)
+ }
+
+ nodeID := report.MakeHostNodeID(hostID)
+ node, ok := rpt.Host.Nodes[nodeID]
+ if !ok {
+ t.Errorf("Expected host node %q, but not found", nodeID)
+ }
+
+ // Should have a bunch of expected latest keys
+ for _, tuple := range []struct {
+ key, want string
+ }{
+ {host.Timestamp, timestamp.UTC().Format(time.RFC3339Nano)},
+ {host.HostName, hostname},
+ {host.OS, runtime.GOOS},
+ {host.Uptime, uptime},
+ {host.KernelVersion, kernel},
+ } {
+ if have, ok := node.Latest.Lookup(tuple.key); !ok || have != tuple.want {
+ t.Errorf("Expected %s %q, got %q", tuple.key, tuple.want, have)
+ }
+ }
+
+ // Should have the local network
+ if have, ok := node.Sets.Lookup(host.LocalNetworks); !ok || !have.Contains(network) {
+ t.Errorf("Expected host.LocalNetworks to include %q, got %q", network, have)
+ }
+
+ // Should have metrics
+ for key, want := range metrics {
+ wantSample := want.LastSample()
+ if metric, ok := node.Metrics[key]; !ok {
+ t.Errorf("Expected %s metric, but not found", key)
+ } else if sample := metric.LastSample(); sample == nil {
+ t.Errorf("Expected %s metric to have a sample, but there were none", key)
+ } else if sample.Value != wantSample.Value {
+ t.Errorf("Expected %s metric sample %f, got %f", key, wantSample, sample.Value)
+ }
}
}
diff --git a/probe/host/tagger.go b/probe/host/tagger.go
index c84654e4b..7f999d974 100644
--- a/probe/host/tagger.go
+++ b/probe/host/tagger.go
@@ -31,16 +31,14 @@ func (t Tagger) Tag(r report.Report) (report.Report, error) {
report.HostNodeID: t.hostNodeID,
report.ProbeID: t.probeID,
}
- parents = report.Sets{
- report.Host: report.MakeStringSet(t.hostNodeID),
- }
+ parents = report.EmptySets.Add(report.Host, report.MakeStringSet(t.hostNodeID))
)
// Explicity don't tag Endpoints and Addresses - These topologies include pseudo nodes,
// and as such do their own host tagging
for _, topology := range []report.Topology{r.Process, r.Container, r.ContainerImage, r.Host, r.Overlay} {
for id, node := range topology.Nodes {
- topology.AddNode(id, node.WithMetadata(metadata).WithParents(parents))
+ topology.AddNode(id, node.WithLatests(metadata).WithParents(parents))
}
}
return r, nil
diff --git a/probe/host/tagger_test.go b/probe/host/tagger_test.go
index 011d56162..4bf0cb171 100644
--- a/probe/host/tagger_test.go
+++ b/probe/host/tagger_test.go
@@ -1,12 +1,10 @@
package host_test
import (
- "reflect"
"testing"
"github.com/weaveworks/scope/probe/host"
"github.com/weaveworks/scope/report"
- "github.com/weaveworks/scope/test"
)
func TestTagger(t *testing.T) {
@@ -14,20 +12,34 @@ func TestTagger(t *testing.T) {
hostID = "foo"
probeID = "a1b2c3d4"
endpointNodeID = report.MakeEndpointNodeID(hostID, "1.2.3.4", "56789") // hostID ignored
- nodeMetadata = report.MakeNodeWith(map[string]string{"foo": "bar"})
+ node = report.MakeNodeWith(map[string]string{"foo": "bar"})
)
r := report.MakeReport()
- r.Process.AddNode(endpointNodeID, nodeMetadata)
- want := nodeMetadata.Merge(report.MakeNodeWith(map[string]string{
- report.HostNodeID: report.MakeHostNodeID(hostID),
- report.ProbeID: probeID,
- }).WithParents(report.Sets{
- report.Host: report.MakeStringSet(report.MakeHostNodeID(hostID)),
- }))
+ r.Process.AddNode(endpointNodeID, node)
rpt, _ := host.NewTagger(hostID, probeID).Tag(r)
have := rpt.Process.Nodes[endpointNodeID].Copy()
- if !reflect.DeepEqual(want, have) {
- t.Error(test.Diff(want, have))
+
+ // It should now have the host ID
+ wantHostID := report.MakeHostNodeID(hostID)
+ if hostID, ok := have.Latest.Lookup(report.HostNodeID); !ok || hostID != wantHostID {
+ t.Errorf("Expected %q got %q", wantHostID, report.MakeHostNodeID(hostID))
+ }
+
+ // It should now have the probe ID
+ if haveProbeID, ok := have.Latest.Lookup(report.ProbeID); !ok || haveProbeID != probeID {
+ t.Errorf("Expected %q got %q", probeID, haveProbeID)
+ }
+
+ // It should still have the other keys
+ want := "bar"
+ if have, ok := have.Latest.Lookup("foo"); !ok || have != want {
+ t.Errorf("Expected %q got %q", want, have)
+ }
+
+ // It should have the host as a parent
+ wantParent := report.MakeHostNodeID(hostID)
+ if have, ok := have.Parents.Lookup(report.Host); !ok || len(have) != 1 || have[0] != wantParent {
+ t.Errorf("Expected %q got %q", report.MakeStringSet(wantParent), have)
}
}
diff --git a/probe/kubernetes/pod.go b/probe/kubernetes/pod.go
index 0cb8dcc4d..f204d69c2 100644
--- a/probe/kubernetes/pod.go
+++ b/probe/kubernetes/pod.go
@@ -82,16 +82,16 @@ func (p *pod) GetNode() report.Node {
PodContainerIDs: strings.Join(p.ContainerIDs(), " "),
})
if len(p.serviceIDs) > 0 {
- n.Metadata[ServiceIDs] = strings.Join(p.serviceIDs, " ")
+ n = n.WithLatests(map[string]string{ServiceIDs: strings.Join(p.serviceIDs, " ")})
}
for _, serviceID := range p.serviceIDs {
segments := strings.SplitN(serviceID, "/", 2)
if len(segments) != 2 {
continue
}
- n = n.WithParents(report.Sets{
- report.Service: report.MakeStringSet(report.MakeServiceNodeID(p.Namespace(), segments[1])),
- })
+ n = n.WithParents(report.EmptySets.
+ Add(report.Service, report.MakeStringSet(report.MakeServiceNodeID(p.Namespace(), segments[1]))),
+ )
}
return n
}
diff --git a/probe/kubernetes/reporter.go b/probe/kubernetes/reporter.go
index afb2f5a9a..9bca2d7a6 100644
--- a/probe/kubernetes/reporter.go
+++ b/probe/kubernetes/reporter.go
@@ -64,9 +64,7 @@ func (r *Reporter) podTopology(services []Service) (report.Topology, report.Topo
container := report.MakeNodeWith(map[string]string{
PodID: p.ID(),
Namespace: p.Namespace(),
- }).WithParents(report.Sets{
- report.Pod: report.MakeStringSet(nodeID),
- })
+ }).WithParents(report.EmptySets.Add(report.Pod, report.MakeStringSet(nodeID)))
for _, containerID := range p.ContainerIDs() {
containers.AddNode(report.MakeContainerNodeID(containerID), container)
}
diff --git a/probe/kubernetes/reporter_test.go b/probe/kubernetes/reporter_test.go
index 092ae9481..3712cd4f6 100644
--- a/probe/kubernetes/reporter_test.go
+++ b/probe/kubernetes/reporter_test.go
@@ -1,7 +1,6 @@
package kubernetes_test
import (
- "reflect"
"testing"
"k8s.io/kubernetes/pkg/api"
@@ -9,7 +8,6 @@ import (
"github.com/weaveworks/scope/probe/kubernetes"
"github.com/weaveworks/scope/report"
- "github.com/weaveworks/scope/test"
)
var (
@@ -108,60 +106,94 @@ func (c *mockClient) WalkServices(f func(kubernetes.Service) error) error {
}
func TestReporter(t *testing.T) {
- want := report.MakeReport()
pod1ID := report.MakePodNodeID("ping", "pong-a")
pod2ID := report.MakePodNodeID("ping", "pong-b")
serviceID := report.MakeServiceNodeID("ping", "pongservice")
- want.Pod = report.MakeTopology().AddNode(pod1ID, report.MakeNodeWith(map[string]string{
- kubernetes.PodID: "ping/pong-a",
- kubernetes.PodName: "pong-a",
- kubernetes.Namespace: "ping",
- kubernetes.PodCreated: pod1.Created(),
- kubernetes.PodContainerIDs: "container1 container2",
- kubernetes.ServiceIDs: "ping/pongservice",
- }).WithParents(report.Sets{
- report.Service: report.MakeStringSet(serviceID),
- })).AddNode(pod2ID, report.MakeNodeWith(map[string]string{
- kubernetes.PodID: "ping/pong-b",
- kubernetes.PodName: "pong-b",
- kubernetes.Namespace: "ping",
- kubernetes.PodCreated: pod1.Created(),
- kubernetes.PodContainerIDs: "container3 container4",
- kubernetes.ServiceIDs: "ping/pongservice",
- }).WithParents(report.Sets{
- report.Service: report.MakeStringSet(serviceID),
- }))
- want.Service = report.MakeTopology().AddNode(serviceID, report.MakeNodeWith(map[string]string{
- kubernetes.ServiceID: "ping/pongservice",
- kubernetes.ServiceName: "pongservice",
- kubernetes.Namespace: "ping",
- kubernetes.ServiceCreated: pod1.Created(),
- }))
- want.Container = report.MakeTopology().AddNode(report.MakeContainerNodeID("container1"), report.MakeNodeWith(map[string]string{
- kubernetes.PodID: "ping/pong-a",
- kubernetes.Namespace: "ping",
- }).WithParents(report.Sets{
- report.Pod: report.MakeStringSet(pod1ID),
- })).AddNode(report.MakeContainerNodeID("container2"), report.MakeNodeWith(map[string]string{
- kubernetes.PodID: "ping/pong-a",
- kubernetes.Namespace: "ping",
- }).WithParents(report.Sets{
- report.Pod: report.MakeStringSet(pod1ID),
- })).AddNode(report.MakeContainerNodeID("container3"), report.MakeNodeWith(map[string]string{
- kubernetes.PodID: "ping/pong-b",
- kubernetes.Namespace: "ping",
- }).WithParents(report.Sets{
- report.Pod: report.MakeStringSet(pod2ID),
- })).AddNode(report.MakeContainerNodeID("container4"), report.MakeNodeWith(map[string]string{
- kubernetes.PodID: "ping/pong-b",
- kubernetes.Namespace: "ping",
- }).WithParents(report.Sets{
- report.Pod: report.MakeStringSet(pod2ID),
- }))
+ rpt, _ := kubernetes.NewReporter(mockClientInstance).Report()
- reporter := kubernetes.NewReporter(mockClientInstance)
- have, _ := reporter.Report()
- if !reflect.DeepEqual(want, have) {
- t.Errorf("%s", test.Diff(want, have))
+ // Reporter should have added the following pods
+ for _, pod := range []struct {
+ id string
+ parentService string
+ latest map[string]string
+ }{
+ {pod1ID, serviceID, map[string]string{
+ kubernetes.PodID: "ping/pong-a",
+ kubernetes.PodName: "pong-a",
+ kubernetes.Namespace: "ping",
+ kubernetes.PodCreated: pod1.Created(),
+ kubernetes.PodContainerIDs: "container1 container2",
+ kubernetes.ServiceIDs: "ping/pongservice",
+ }},
+ {pod2ID, serviceID, map[string]string{
+ kubernetes.PodID: "ping/pong-b",
+ kubernetes.PodName: "pong-b",
+ kubernetes.Namespace: "ping",
+ kubernetes.PodCreated: pod1.Created(),
+ kubernetes.PodContainerIDs: "container3 container4",
+ kubernetes.ServiceIDs: "ping/pongservice",
+ }},
+ } {
+ node, ok := rpt.Pod.Nodes[pod.id]
+ if !ok {
+ t.Errorf("Expected report to have pod %q, but not found", pod.id)
+ }
+
+ if parents, ok := node.Parents.Lookup(report.Service); !ok || !parents.Contains(pod.parentService) {
+ t.Errorf("Expected pod %s to have parent service %q, got %q", pod.id, pod.parentService, parents)
+ }
+
+ for k, want := range pod.latest {
+ if have, ok := node.Latest.Lookup(k); !ok || have != want {
+ t.Errorf("Expected pod %s latest %q: %q, got %q", pod.id, k, want, have)
+ }
+ }
+ }
+
+ // Reporter should have added a service
+ {
+ node, ok := rpt.Service.Nodes[serviceID]
+ if !ok {
+ t.Errorf("Expected report to have service %q, but not found", serviceID)
+ }
+
+ for k, want := range map[string]string{
+ kubernetes.ServiceID: "ping/pongservice",
+ kubernetes.ServiceName: "pongservice",
+ kubernetes.Namespace: "ping",
+ kubernetes.ServiceCreated: pod1.Created(),
+ } {
+ if have, ok := node.Latest.Lookup(k); !ok || have != want {
+ t.Errorf("Expected service %s latest %q: %q, got %q", serviceID, k, want, have)
+ }
+ }
+ }
+
+ // Reporter should have tagged the containers
+ for _, pod := range []struct {
+ id, nodeID string
+ containers []string
+ }{
+ {"ping/pong-a", pod1ID, []string{"container1", "container2"}},
+ {"ping/pong-b", pod2ID, []string{"container3", "container4"}},
+ } {
+ for _, containerID := range pod.containers {
+ node, ok := rpt.Container.Nodes[report.MakeContainerNodeID(containerID)]
+ if !ok {
+ t.Errorf("Expected report to have container %q, but not found", containerID)
+ }
+ // container should have pod id
+ if have, ok := node.Latest.Lookup(kubernetes.PodID); !ok || have != pod.id {
+ t.Errorf("Expected container %s latest %q: %q, got %q", containerID, kubernetes.PodID, pod.id, have)
+ }
+ // container should have namespace
+ if have, ok := node.Latest.Lookup(kubernetes.Namespace); !ok || have != "ping" {
+ t.Errorf("Expected container %s latest %q: %q, got %q", containerID, kubernetes.Namespace, "ping", have)
+ }
+ // container should have pod parent
+ if parents, ok := node.Parents.Lookup(report.Pod); !ok || !parents.Contains(pod.nodeID) {
+ t.Errorf("Expected container %s to have parent service %q, got %q", containerID, pod.nodeID, parents)
+ }
+ }
}
}
diff --git a/probe/overlay/weave.go b/probe/overlay/weave.go
index f72c83762..efc2fbf0c 100644
--- a/probe/overlay/weave.go
+++ b/probe/overlay/weave.go
@@ -200,16 +200,18 @@ func (w *Weave) Tag(r report.Report) (report.Report, error) {
if !ok {
continue
}
- hostnames := report.IDList(strings.Fields(node.Metadata[WeaveDNSHostname]))
+ w, _ := node.Latest.Lookup(WeaveDNSHostname)
+ hostnames := report.IDList(strings.Fields(w))
hostnames = hostnames.Add(strings.TrimSuffix(entry.Hostname, "."))
- node.Metadata[WeaveDNSHostname] = strings.Join(hostnames, " ")
+ r.Container.Nodes[nodeID] = node.WithLatests(map[string]string{WeaveDNSHostname: strings.Join(hostnames, " ")})
}
// Put information from weave ps on the container nodes
w.mtx.RLock()
defer w.mtx.RUnlock()
for id, node := range r.Container.Nodes {
- prefix := node.Metadata[docker.ContainerID][:12]
+ prefix, _ := node.Latest.Lookup(docker.ContainerID)
+ prefix = prefix[:12]
entry, ok := w.ps[prefix]
if !ok {
continue
@@ -221,7 +223,7 @@ func (w *Weave) Tag(r report.Report) (report.Report, error) {
}
node = node.WithSet(docker.ContainerIPs, report.MakeStringSet(entry.ips...))
node = node.WithSet(docker.ContainerIPsWithScopes, ipsWithScope)
- node.Metadata[WeaveMACAddress] = entry.macAddress
+ node = node.WithLatests(map[string]string{WeaveMACAddress: entry.macAddress})
r.Container.Nodes[id] = node
}
return r, nil
diff --git a/probe/overlay/weave_test.go b/probe/overlay/weave_test.go
index 9449a5dbe..cc4d431da 100644
--- a/probe/overlay/weave_test.go
+++ b/probe/overlay/weave_test.go
@@ -4,21 +4,21 @@ import (
"fmt"
"net/http"
"net/http/httptest"
- "reflect"
"testing"
"github.com/weaveworks/scope/common/exec"
"github.com/weaveworks/scope/probe/docker"
"github.com/weaveworks/scope/probe/overlay"
"github.com/weaveworks/scope/report"
- "github.com/weaveworks/scope/test"
testExec "github.com/weaveworks/scope/test/exec"
)
func TestWeaveTaggerOverlayTopology(t *testing.T) {
+ wait := make(chan struct{})
oldExecCmd := exec.Command
defer func() { exec.Command = oldExecCmd }()
exec.Command = func(name string, args ...string) exec.Cmd {
+ close(wait)
return testExec.NewMockCmdString(fmt.Sprintf("%s %s %s/24\n", mockContainerID, mockContainerMAC, mockContainerIP))
}
@@ -28,35 +28,31 @@ func TestWeaveTaggerOverlayTopology(t *testing.T) {
w := overlay.NewWeave(mockHostID, s.URL)
defer w.Stop()
w.Tick()
+ <-wait
{
+ // Overlay node should include peer name and nickname
have, err := w.Report()
if err != nil {
t.Fatal(err)
}
- if want, have := report.MakeTopology().AddNode(
- report.MakeOverlayNodeID(mockWeavePeerName),
- report.MakeNodeWith(map[string]string{
- overlay.WeavePeerName: mockWeavePeerName,
- overlay.WeavePeerNickName: mockWeavePeerNickName,
- }),
- ), have.Overlay; !reflect.DeepEqual(want, have) {
- t.Error(test.Diff(want, have))
+
+ nodeID := report.MakeOverlayNodeID(mockWeavePeerName)
+ node, ok := have.Overlay.Nodes[nodeID]
+ if !ok {
+ t.Errorf("Expected overlay node %q, but not found", nodeID)
+ }
+ if peerName, ok := node.Latest.Lookup(overlay.WeavePeerName); !ok || peerName != mockWeavePeerName {
+ t.Errorf("Expected weave peer name %q, got %q", mockWeavePeerName, peerName)
+ }
+ if peerNick, ok := node.Latest.Lookup(overlay.WeavePeerNickName); !ok || peerNick != mockWeavePeerNickName {
+ t.Errorf("Expected weave peer nickname %q, got %q", mockWeavePeerNickName, peerNick)
}
}
{
+ // Container nodes should be tagged with their overlay info
nodeID := report.MakeContainerNodeID(mockContainerID)
- want := report.Report{
- Container: report.MakeTopology().AddNode(nodeID, report.MakeNodeWith(map[string]string{
- docker.ContainerID: mockContainerID,
- overlay.WeaveDNSHostname: mockHostname,
- overlay.WeaveMACAddress: mockContainerMAC,
- }).WithSets(report.Sets{
- docker.ContainerIPs: report.MakeStringSet(mockContainerIP),
- docker.ContainerIPsWithScopes: report.MakeStringSet(mockContainerIPWithScope),
- })),
- }
have, err := w.Tag(report.Report{
Container: report.MakeTopology().AddNode(nodeID, report.MakeNodeWith(map[string]string{
docker.ContainerID: mockContainerID,
@@ -65,8 +61,27 @@ func TestWeaveTaggerOverlayTopology(t *testing.T) {
if err != nil {
t.Fatal(err)
}
- if !reflect.DeepEqual(want, have) {
- t.Error(test.Diff(want, have))
+
+ node, ok := have.Container.Nodes[nodeID]
+ if !ok {
+ t.Errorf("Expected container node %q, but not found", nodeID)
+ }
+
+ // Should have Weave DNS Hostname
+ if have, ok := node.Latest.Lookup(overlay.WeaveDNSHostname); !ok || have != mockHostname {
+ t.Errorf("Expected weave dns hostname %q, got %q", mockHostname, have)
+ }
+ // Should have Weave MAC Address
+ if have, ok := node.Latest.Lookup(overlay.WeaveMACAddress); !ok || have != mockContainerMAC {
+ t.Errorf("Expected weave mac address %q, got %q", mockContainerMAC, have)
+ }
+ // Should have Weave container ip
+ if have, ok := node.Sets.Lookup(docker.ContainerIPs); !ok || !have.Contains(mockContainerIP) {
+ t.Errorf("Expected container ips to include the weave IP %q, got %q", mockContainerIP, have)
+ }
+ // Should have Weave container ip (with scope)
+ if have, ok := node.Sets.Lookup(docker.ContainerIPsWithScopes); !ok || !have.Contains(mockContainerIPWithScope) {
+ t.Errorf("Expected container ips to include the weave IP (with scope) %q, got %q", mockContainerIPWithScope, have)
}
}
}
diff --git a/probe/process/reporter.go b/probe/process/reporter.go
index 2bb9342e3..a5d7ce5c9 100644
--- a/probe/process/reporter.go
+++ b/probe/process/reporter.go
@@ -70,12 +70,12 @@ func (r *Reporter) processTopology() (report.Topology, error) {
{Threads, strconv.Itoa(p.Threads)},
} {
if tuple.value != "" {
- node.Metadata[tuple.key] = tuple.value
+ node = node.WithLatests(map[string]string{tuple.key: tuple.value})
}
}
if p.PPID > 0 {
- node.Metadata[PPID] = strconv.Itoa(p.PPID)
+ node = node.WithLatests(map[string]string{PPID: strconv.Itoa(p.PPID)})
}
if deltaTotal > 0 {
diff --git a/probe/process/reporter_test.go b/probe/process/reporter_test.go
index 5bc9b75cb..0e664bcad 100644
--- a/probe/process/reporter_test.go
+++ b/probe/process/reporter_test.go
@@ -1,14 +1,13 @@
package process_test
import (
- "reflect"
+ "fmt"
"testing"
"time"
"github.com/weaveworks/scope/common/mtime"
"github.com/weaveworks/scope/probe/process"
"github.com/weaveworks/scope/report"
- "github.com/weaveworks/scope/test"
)
type mockWalker struct {
@@ -23,61 +22,79 @@ func (m *mockWalker) Walk(f func(process.Process, process.Process)) error {
}
func TestReporter(t *testing.T) {
- walker := &mockWalker{
- processes: []process.Process{
- {PID: 1, PPID: 0, Name: "init"},
- {PID: 2, PPID: 1, Name: "bash"},
- {PID: 3, PPID: 1, Name: "apache", Threads: 2},
- {PID: 4, PPID: 2, Name: "ping", Cmdline: "ping foo.bar.local"},
- {PID: 5, PPID: 1, Cmdline: "tail -f /var/log/syslog"},
- },
+ processes := []process.Process{
+ {PID: 1, PPID: 0, Name: "init"},
+ {PID: 2, PPID: 1, Name: "bash"},
+ {PID: 3, PPID: 1, Name: "apache", Threads: 2},
+ {PID: 4, PPID: 2, Name: "ping", Cmdline: "ping foo.bar.local"},
+ {PID: 5, PPID: 1, Cmdline: "tail -f /var/log/syslog"},
}
+ walker := &mockWalker{processes: processes}
getDeltaTotalJiffies := func() (uint64, float64, error) { return 0, 0., nil }
now := time.Now()
mtime.NowForce(now)
defer mtime.NowReset()
- reporter := process.NewReporter(walker, "", getDeltaTotalJiffies)
- want := report.MakeReport()
- want.Process = report.MakeTopology().AddNode(
- report.MakeProcessNodeID("", "1"), report.MakeNodeWith(map[string]string{
- process.PID: "1",
- process.Name: "init",
- process.Threads: "0",
- }).WithMetric(process.MemoryUsage, report.MakeMetric().Add(now, 0.)),
- ).AddNode(
- report.MakeProcessNodeID("", "2"), report.MakeNodeWith(map[string]string{
- process.PID: "2",
- process.Name: "bash",
- process.PPID: "1",
- process.Threads: "0",
- }).WithMetric(process.MemoryUsage, report.MakeMetric().Add(now, 0.)),
- ).AddNode(
- report.MakeProcessNodeID("", "3"), report.MakeNodeWith(map[string]string{
- process.PID: "3",
- process.Name: "apache",
- process.PPID: "1",
- process.Threads: "2",
- }).WithMetric(process.MemoryUsage, report.MakeMetric().Add(now, 0.)),
- ).AddNode(
- report.MakeProcessNodeID("", "4"), report.MakeNodeWith(map[string]string{
- process.PID: "4",
- process.Name: "ping",
- process.PPID: "2",
- process.Cmdline: "ping foo.bar.local",
- process.Threads: "0",
- }).WithMetric(process.MemoryUsage, report.MakeMetric().Add(now, 0.)),
- ).AddNode(
- report.MakeProcessNodeID("", "5"), report.MakeNodeWith(map[string]string{
- process.PID: "5",
- process.PPID: "1",
- process.Cmdline: "tail -f /var/log/syslog",
- process.Threads: "0",
- }).WithMetric(process.MemoryUsage, report.MakeMetric().Add(now, 0.)),
- )
+ rpt, err := process.NewReporter(walker, "", getDeltaTotalJiffies).Report()
+ if err != nil {
+ t.Error(err)
+ }
- have, err := reporter.Report()
- if err != nil || !reflect.DeepEqual(want, have) {
- t.Errorf("%s (%v)", test.Diff(want, have), err)
+ // It reports the init process
+ node, ok := rpt.Process.Nodes[report.MakeProcessNodeID("", "1")]
+ if !ok {
+ t.Errorf("Expected report to include the pid 1 init")
+ }
+ if name, ok := node.Latest.Lookup(process.Name); !ok || name != processes[0].Name {
+ t.Errorf("Expected %q got %q", processes[0].Name, name)
+ }
+
+ // It reports plain processes (with parent pid, and metrics)
+ node, ok = rpt.Process.Nodes[report.MakeProcessNodeID("", "2")]
+ if !ok {
+ t.Errorf("Expected report to include the pid 2 bash")
+ }
+ if name, ok := node.Latest.Lookup(process.Name); !ok || name != processes[1].Name {
+ t.Errorf("Expected %q got %q", processes[1].Name, name)
+ }
+ if ppid, ok := node.Latest.Lookup(process.PPID); !ok || ppid != fmt.Sprint(processes[1].PPID) {
+ t.Errorf("Expected %d got %q", processes[1].PPID, ppid)
+ }
+ if memoryUsage, ok := node.Metrics[process.MemoryUsage]; !ok {
+ t.Errorf("Expected memory usage metric, but not found")
+ } else if sample := memoryUsage.LastSample(); sample == nil {
+ t.Errorf("Expected memory usage metric to have a sample, but there were none")
+ } else if sample.Value != 0. {
+ t.Errorf("Expected memory usage metric sample %f, got %f", 0., sample.Value)
+ }
+
+ // It reports thread-counts
+ node, ok = rpt.Process.Nodes[report.MakeProcessNodeID("", "3")]
+ if !ok {
+ t.Errorf("Expected report to include the pid 3 apache")
+ }
+ if threads, ok := node.Latest.Lookup(process.Threads); !ok || threads != fmt.Sprint(processes[2].Threads) {
+ t.Errorf("Expected %d got %q", processes[2].Threads, threads)
+ }
+
+ // It reports the Cmdline
+ node, ok = rpt.Process.Nodes[report.MakeProcessNodeID("", "4")]
+ if !ok {
+ t.Errorf("Expected report to include the pid 4 ping")
+ }
+ if cmdline, ok := node.Latest.Lookup(process.Cmdline); !ok || cmdline != fmt.Sprint(processes[3].Cmdline) {
+ t.Errorf("Expected %q got %q", processes[3].Cmdline, cmdline)
+ }
+
+ // It reports processes without a Name
+ node, ok = rpt.Process.Nodes[report.MakeProcessNodeID("", "5")]
+ if !ok {
+ t.Errorf("Expected report to include the pid 5 tail")
+ }
+ if name, ok := node.Latest.Lookup(process.Name); ok {
+ t.Errorf("Expected no name, but got %q", name)
+ }
+ if cmdline, ok := node.Latest.Lookup(process.Cmdline); !ok || cmdline != fmt.Sprint(processes[4].Cmdline) {
+ t.Errorf("Expected %q got %q", processes[4].Cmdline, cmdline)
}
}
diff --git a/render/detailed/metadata.go b/render/detailed/metadata.go
index 55ae0c09d..c67b1b618 100644
--- a/render/detailed/metadata.go
+++ b/render/detailed/metadata.go
@@ -15,37 +15,37 @@ import (
var (
processNodeMetadata = renderMetadata(
- meta(process.PID, "PID"),
- meta(process.PPID, "Parent PID"),
- meta(process.Cmdline, "Command"),
- meta(process.Threads, "# Threads"),
+ ltst(process.PID, "PID"),
+ ltst(process.PPID, "Parent PID"),
+ ltst(process.Cmdline, "Command"),
+ ltst(process.Threads, "# Threads"),
)
containerNodeMetadata = renderMetadata(
- meta(docker.ContainerID, "ID"),
- meta(docker.ImageID, "Image ID"),
+ ltst(docker.ContainerID, "ID"),
+ ltst(docker.ImageID, "Image ID"),
ltst(docker.ContainerState, "State"),
sets(docker.ContainerIPs, "IPs"),
sets(docker.ContainerPorts, "Ports"),
- meta(docker.ContainerCreated, "Created"),
- meta(docker.ContainerCommand, "Command"),
- meta(overlay.WeaveMACAddress, "Weave MAC"),
- meta(overlay.WeaveDNSHostname, "Weave DNS Hostname"),
+ ltst(docker.ContainerCreated, "Created"),
+ ltst(docker.ContainerCommand, "Command"),
+ ltst(overlay.WeaveMACAddress, "Weave MAC"),
+ ltst(overlay.WeaveDNSHostname, "Weave DNS Hostname"),
getDockerLabelRows,
)
containerImageNodeMetadata = renderMetadata(
- meta(docker.ImageID, "Image ID"),
+ ltst(docker.ImageID, "Image ID"),
getDockerLabelRows,
)
podNodeMetadata = renderMetadata(
- meta(kubernetes.PodID, "ID"),
- meta(kubernetes.Namespace, "Namespace"),
- meta(kubernetes.PodCreated, "Created"),
+ ltst(kubernetes.PodID, "ID"),
+ ltst(kubernetes.Namespace, "Namespace"),
+ ltst(kubernetes.PodCreated, "Created"),
)
hostNodeMetadata = renderMetadata(
- meta(host.HostName, "Hostname"),
- meta(host.OS, "Operating system"),
- meta(host.KernelVersion, "Kernel version"),
- meta(host.Uptime, "Uptime"),
+ ltst(host.HostName, "Hostname"),
+ ltst(host.OS, "Operating system"),
+ ltst(host.KernelVersion, "Kernel version"),
+ ltst(host.Uptime, "Uptime"),
sets(host.LocalNetworks, "Local Networks"),
)
)
@@ -92,18 +92,9 @@ func renderMetadata(templates ...func(report.Node) []MetadataRow) func(report.No
}
}
-func meta(id, label string) func(report.Node) []MetadataRow {
- return func(n report.Node) []MetadataRow {
- if val, ok := n.Metadata[id]; ok {
- return []MetadataRow{{ID: id, Label: label, Value: val}}
- }
- return nil
- }
-}
-
func sets(id, label string) func(report.Node) []MetadataRow {
return func(n report.Node) []MetadataRow {
- if val, ok := n.Sets[id]; ok && len(val) > 0 {
+ if val, ok := n.Sets.Lookup(id); ok && len(val) > 0 {
return []MetadataRow{{ID: id, Label: label, Value: strings.Join(val, ", ")}}
}
return nil
diff --git a/render/detailed/metadata_test.go b/render/detailed/metadata_test.go
index 9d2622a06..ff4063dca 100644
--- a/render/detailed/metadata_test.go
+++ b/render/detailed/metadata_test.go
@@ -22,9 +22,10 @@ func TestNodeMetadata(t *testing.T) {
node: report.MakeNodeWith(map[string]string{
docker.ContainerID: fixture.ClientContainerID,
docker.LabelPrefix + "label1": "label1value",
- }).WithTopology(report.Container).WithSets(report.Sets{
- docker.ContainerIPs: report.MakeStringSet("10.10.10.0/24", "10.10.10.1/24"),
- }).WithLatest(docker.ContainerState, fixture.Now, docker.StateRunning),
+ docker.ContainerState: docker.StateRunning,
+ }).WithTopology(report.Container).WithSets(report.EmptySets.
+ Add(docker.ContainerIPs, report.MakeStringSet("10.10.10.0/24", "10.10.10.1/24")),
+ ),
want: []detailed.MetadataRow{
{ID: docker.ContainerID, Label: "ID", Value: fixture.ClientContainerID},
{ID: docker.ContainerState, Label: "State", Value: "running"},
diff --git a/render/detailed/node.go b/render/detailed/node.go
index 537c30396..3126cd5d4 100644
--- a/render/detailed/node.go
+++ b/render/detailed/node.go
@@ -62,8 +62,9 @@ func controlsFor(topology report.Topology, nodeID string) []ControlInstance {
for _, id := range node.Controls.Controls {
if control, ok := topology.Controls[id]; ok {
+ probeID, _ := node.Latest.Lookup(report.ProbeID)
result = append(result, ControlInstance{
- ProbeID: node.Metadata[report.ProbeID],
+ ProbeID: probeID,
NodeID: nodeID,
Control: control,
})
@@ -142,7 +143,8 @@ func parents(r report.Report, n render.RenderableNode) (result []Parent) {
sort.Strings(topologyIDs)
for _, topologyID := range topologyIDs {
t := topologies[topologyID]
- for _, id := range n.Node.Parents[topologyID] {
+ parents, _ := n.Node.Parents.Lookup(topologyID)
+ for _, id := range parents {
if topologyID == n.Node.Topology && id == n.ID {
continue
}
@@ -160,31 +162,36 @@ func parents(r report.Report, n render.RenderableNode) (result []Parent) {
func containerParent(n report.Node) Parent {
label, _ := render.GetRenderableContainerName(n)
+ containerID, _ := n.Latest.Lookup(docker.ContainerID)
return Parent{
- ID: render.MakeContainerID(n.Metadata[docker.ContainerID]),
+ ID: render.MakeContainerID(containerID),
Label: label,
TopologyID: "containers",
}
}
func podParent(n report.Node) Parent {
+ podID, _ := n.Latest.Lookup(kubernetes.PodID)
+ podName, _ := n.Latest.Lookup(kubernetes.PodName)
return Parent{
- ID: render.MakePodID(n.Metadata[kubernetes.PodID]),
- Label: n.Metadata[kubernetes.PodName],
+ ID: render.MakePodID(podID),
+ Label: podName,
TopologyID: "pods",
}
}
func serviceParent(n report.Node) Parent {
+ serviceID, _ := n.Latest.Lookup(kubernetes.ServiceID)
+ serviceName, _ := n.Latest.Lookup(kubernetes.ServiceName)
return Parent{
- ID: render.MakeServiceID(n.Metadata[kubernetes.ServiceID]),
- Label: n.Metadata[kubernetes.ServiceName],
+ ID: render.MakeServiceID(serviceID),
+ Label: serviceName,
TopologyID: "pods-by-service",
}
}
func containerImageParent(n report.Node) Parent {
- imageName := n.Metadata[docker.ImageName]
+ imageName, _ := n.Latest.Lookup(docker.ImageName)
return Parent{
ID: render.MakeContainerImageID(render.ImageNameWithoutVersion(imageName)),
Label: imageName,
@@ -193,9 +200,10 @@ func containerImageParent(n report.Node) Parent {
}
func hostParent(n report.Node) Parent {
+ hostName, _ := n.Latest.Lookup(host.HostName)
return Parent{
- ID: render.MakeHostID(n.Metadata[host.HostName]),
- Label: n.Metadata[host.HostName],
+ ID: render.MakeHostID(hostName),
+ Label: hostName,
TopologyID: "hosts",
}
}
diff --git a/render/detailed/summary.go b/render/detailed/summary.go
index db86478bc..83c0ebf92 100644
--- a/render/detailed/summary.go
+++ b/render/detailed/summary.go
@@ -75,15 +75,15 @@ func (n NodeSummary) Copy() NodeSummary {
func processNodeSummary(nmd report.Node) NodeSummary {
var (
id string
- label, nameFound = nmd.Metadata[process.Name]
+ label, nameFound = nmd.Latest.Lookup(process.Name)
)
- if pid, ok := nmd.Metadata[process.PID]; ok {
+ if pid, ok := nmd.Latest.Lookup(process.PID); ok {
if !nameFound {
label = fmt.Sprintf("(%s)", pid)
}
id = render.MakeProcessID(report.ExtractHostID(nmd), pid)
}
- _, isConnected := nmd.Metadata[render.IsConnected]
+ _, isConnected := nmd.Latest.Lookup(render.IsConnected)
return NodeSummary{
ID: id,
Label: label,
@@ -95,8 +95,9 @@ func processNodeSummary(nmd report.Node) NodeSummary {
func containerNodeSummary(nmd report.Node) NodeSummary {
label, _ := render.GetRenderableContainerName(nmd)
+ containerID, _ := nmd.Latest.Lookup(docker.ContainerID)
return NodeSummary{
- ID: render.MakeContainerID(nmd.Metadata[docker.ContainerID]),
+ ID: render.MakeContainerID(containerID),
Label: label,
Linkable: true,
Metadata: containerNodeMetadata(nmd),
@@ -105,7 +106,7 @@ func containerNodeSummary(nmd report.Node) NodeSummary {
}
func containerImageNodeSummary(nmd report.Node) NodeSummary {
- imageName := nmd.Metadata[docker.ImageName]
+ imageName, _ := nmd.Latest.Lookup(docker.ImageName)
return NodeSummary{
ID: render.MakeContainerImageID(render.ImageNameWithoutVersion(imageName)),
Label: imageName,
@@ -115,18 +116,21 @@ func containerImageNodeSummary(nmd report.Node) NodeSummary {
}
func podNodeSummary(nmd report.Node) NodeSummary {
+ podID, _ := nmd.Latest.Lookup(kubernetes.PodID)
+ podName, _ := nmd.Latest.Lookup(kubernetes.PodName)
return NodeSummary{
- ID: render.MakePodID(nmd.Metadata[kubernetes.PodID]),
- Label: nmd.Metadata[kubernetes.PodName],
+ ID: render.MakePodID(podID),
+ Label: podName,
Linkable: true,
Metadata: podNodeMetadata(nmd),
}
}
func hostNodeSummary(nmd report.Node) NodeSummary {
+ hostName, _ := nmd.Latest.Lookup(host.HostName)
return NodeSummary{
- ID: render.MakeHostID(nmd.Metadata[host.HostName]),
- Label: nmd.Metadata[host.HostName],
+ ID: render.MakeHostID(hostName),
+ Label: hostName,
Linkable: true,
Metadata: hostNodeMetadata(nmd),
Metrics: hostNodeMetrics(nmd),
diff --git a/render/filters.go b/render/filters.go
index 4db23be33..205306764 100644
--- a/render/filters.go
+++ b/render/filters.go
@@ -45,9 +45,9 @@ func ColorConnected(r Renderer) Renderer {
}
for id := range connected {
- node := input[id]
- node.Metadata[IsConnected] = "true"
- input[id] = node
+ input[id] = input[id].WithNode(report.MakeNodeWith(map[string]string{
+ IsConnected: "true",
+ }))
}
return input
},
@@ -136,7 +136,7 @@ func FilterUnconnected(r Renderer) Renderer {
return Filter{
Renderer: ColorConnected(r),
FilterFunc: func(node RenderableNode) bool {
- _, ok := node.Metadata[IsConnected]
+ _, ok := node.Latest.Lookup(IsConnected)
return ok
},
}
@@ -163,21 +163,25 @@ func FilterSystem(r Renderer) Renderer {
return Filter{
Renderer: r,
FilterFunc: func(node RenderableNode) bool {
- containerName := node.Metadata[docker.ContainerName]
+ containerName, _ := node.Latest.Lookup(docker.ContainerName)
if _, ok := systemContainerNames[containerName]; ok {
return false
}
- imagePrefix := strings.SplitN(node.Metadata[docker.ImageName], ":", 2)[0] // :(
+ imageName, _ := node.Latest.Lookup(docker.ImageName)
+ imagePrefix := strings.SplitN(imageName, ":", 2)[0] // :(
if _, ok := systemImagePrefixes[imagePrefix]; ok {
return false
}
- if node.Metadata[docker.LabelPrefix+"works.weave.role"] == "system" {
+ roleLabel, _ := node.Latest.Lookup(docker.LabelPrefix + "works.weave.role")
+ if roleLabel == "system" {
return false
}
- if node.Metadata[kubernetes.Namespace] == "kube-system" {
+ namespace, _ := node.Latest.Lookup(kubernetes.Namespace)
+ if namespace == "kube-system" {
return false
}
- if strings.HasPrefix(node.Metadata[docker.LabelPrefix+"io.kubernetes.pod.name"], "kube-system/") {
+ podName, _ := node.Latest.Lookup(docker.LabelPrefix + "io.kubernetes.pod.name")
+ if strings.HasPrefix(podName, "kube-system/") {
return false
}
return true
diff --git a/render/mapping.go b/render/mapping.go
index b3ded7a74..3c4f0ad52 100644
--- a/render/mapping.go
+++ b/render/mapping.go
@@ -42,24 +42,24 @@ type MapFunc func(RenderableNode, report.Networks) RenderableNodes
// renderable node. As it is only ever run on endpoint topology nodes, we
// expect that certain keys are present.
func MapEndpointIdentity(m RenderableNode, local report.Networks) RenderableNodes {
- addr, ok := m.Metadata[endpoint.Addr]
+ addr, ok := m.Latest.Lookup(endpoint.Addr)
if !ok {
return RenderableNodes{}
}
- port, ok := m.Metadata[endpoint.Port]
+ port, ok := m.Latest.Lookup(endpoint.Port)
if !ok {
return RenderableNodes{}
}
// We only show nodes found through procspy in this view.
- _, procspied := m.Metadata[endpoint.Procspied]
+ _, procspied := m.Latest.Lookup(endpoint.Procspied)
if !procspied {
return RenderableNodes{}
}
// Nodes without a hostid are treated as psuedo nodes
- if _, ok = m.Metadata[report.HostNodeID]; !ok {
+ if _, ok = m.Latest.Lookup(report.HostNodeID); !ok {
// If the dstNodeAddr is not in a network local to this report, we emit an
// internet node
if ip := net.ParseIP(addr); ip != nil && !local.Contains(ip) {
@@ -92,7 +92,7 @@ func MapEndpointIdentity(m RenderableNode, local report.Networks) RenderableNode
rank = major
)
- pid, pidOK := m.Metadata[process.PID]
+ pid, pidOK := m.Latest.Lookup(process.PID)
if pidOK {
minor = fmt.Sprintf("%s (%s)", minor, pid)
}
@@ -104,16 +104,16 @@ func MapEndpointIdentity(m RenderableNode, local report.Networks) RenderableNode
// node. As it is only ever run on process topology nodes, we expect that
// certain keys are present.
func MapProcessIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
- pid, ok := m.Metadata[process.PID]
+ pid, ok := m.Latest.Lookup(process.PID)
if !ok {
return RenderableNodes{}
}
var (
- id = MakeProcessID(report.ExtractHostID(m.Node), pid)
- major = m.Metadata[process.Name]
- minor = fmt.Sprintf("%s (%s)", report.ExtractHostID(m.Node), pid)
- rank = m.Metadata[process.Name]
+ id = MakeProcessID(report.ExtractHostID(m.Node), pid)
+ major, _ = m.Latest.Lookup(process.Name)
+ minor = fmt.Sprintf("%s (%s)", report.ExtractHostID(m.Node), pid)
+ rank, _ = m.Latest.Lookup(process.Name)
)
return RenderableNodes{id: NewRenderableNodeWith(id, major, minor, rank, m)}
@@ -123,7 +123,7 @@ func MapProcessIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
// renderable node. As it is only ever run on container topology nodes, we
// expect that certain keys are present.
func MapContainerIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
- containerID, ok := m.Metadata[docker.ContainerID]
+ containerID, ok := m.Latest.Lookup(docker.ContainerID)
if !ok {
return RenderableNodes{}
}
@@ -132,7 +132,7 @@ func MapContainerIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
id = MakeContainerID(containerID)
major, _ = GetRenderableContainerName(m.Node)
minor = report.ExtractHostID(m.Node)
- rank = m.Metadata[docker.ImageID]
+ rank, _ = m.Latest.Lookup(docker.ImageID)
)
node := NewRenderableNodeWith(id, major, minor, rank, m)
@@ -148,7 +148,7 @@ func GetRenderableContainerName(nmd report.Node) (string, bool) {
//
// However, the ecs-agent provides a label containing the original Container
// Definition name.
- if labelValue, ok := nmd.Metadata[docker.LabelPrefix+AmazonECSContainerNameLabel]; ok {
+ if labelValue, ok := nmd.Latest.Lookup(docker.LabelPrefix + AmazonECSContainerNameLabel); ok {
return labelValue, true
}
@@ -156,11 +156,11 @@ func GetRenderableContainerName(nmd report.Node) (string, bool) {
// label with the original container name. However, note that this label
// is only provided by Kubernetes versions >= 1.2 (see
// https://github.com/kubernetes/kubernetes/pull/17234/ )
- if labelValue, ok := nmd.Metadata[docker.LabelPrefix+KubernetesContainerNameLabel]; ok {
+ if labelValue, ok := nmd.Latest.Lookup(docker.LabelPrefix + KubernetesContainerNameLabel); ok {
return labelValue, true
}
- name, ok := nmd.Metadata[docker.ContainerName]
+ name, ok := nmd.Latest.Lookup(docker.ContainerName)
return name, ok
}
@@ -168,15 +168,15 @@ func GetRenderableContainerName(nmd report.Node) (string, bool) {
// image renderable node. As it is only ever run on container image topology
// nodes, we expect that certain keys are present.
func MapContainerImageIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
- imageID, ok := m.Metadata[docker.ImageID]
+ imageID, ok := m.Latest.Lookup(docker.ImageID)
if !ok {
return RenderableNodes{}
}
var (
- id = MakeContainerImageID(imageID)
- major = m.Metadata[docker.ImageName]
- rank = imageID
+ id = MakeContainerImageID(imageID)
+ major, _ = m.Latest.Lookup(docker.ImageName)
+ rank = imageID
)
return RenderableNodes{id: NewRenderableNodeWith(id, major, "", rank, m)}
@@ -186,15 +186,15 @@ func MapContainerImageIdentity(m RenderableNode, _ report.Networks) RenderableNo
// only ever run on pod topology nodes, we expect that certain keys
// are present.
func MapPodIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
- podID, ok := m.Metadata[kubernetes.PodID]
+ podID, ok := m.Latest.Lookup(kubernetes.PodID)
if !ok {
return RenderableNodes{}
}
var (
- id = MakePodID(podID)
- major = m.Metadata[kubernetes.PodName]
- rank = m.Metadata[kubernetes.PodID]
+ id = MakePodID(podID)
+ major, _ = m.Latest.Lookup(kubernetes.PodName)
+ rank, _ = m.Latest.Lookup(kubernetes.PodID)
)
return RenderableNodes{id: NewRenderableNodeWith(id, major, "", rank, m)}
@@ -204,15 +204,15 @@ func MapPodIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
// only ever run on service topology nodes, we expect that certain keys
// are present.
func MapServiceIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
- serviceID, ok := m.Metadata[kubernetes.ServiceID]
+ serviceID, ok := m.Latest.Lookup(kubernetes.ServiceID)
if !ok {
return RenderableNodes{}
}
var (
- id = MakeServiceID(serviceID)
- major = m.Metadata[kubernetes.ServiceName]
- rank = m.Metadata[kubernetes.ServiceID]
+ id = MakeServiceID(serviceID)
+ major, _ = m.Latest.Lookup(kubernetes.ServiceName)
+ rank, _ = m.Latest.Lookup(kubernetes.ServiceID)
)
return RenderableNodes{id: NewRenderableNodeWith(id, major, "", rank, m)}
@@ -222,7 +222,7 @@ func MapServiceIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
// node. As it is only ever run on address topology nodes, we expect that
// certain keys are present.
func MapAddressIdentity(m RenderableNode, local report.Networks) RenderableNodes {
- addr, ok := m.Metadata[endpoint.Addr]
+ addr, ok := m.Latest.Lookup(endpoint.Addr)
if !ok {
return RenderableNodes{}
}
@@ -230,8 +230,8 @@ func MapAddressIdentity(m RenderableNode, local report.Networks) RenderableNodes
// Conntracked connections don't have a host id unless
// they were merged with a procspied connection. Filter
// out those that weren't.
- _, hasHostID := m.Metadata[report.HostNodeID]
- _, conntracked := m.Metadata[endpoint.Conntracked]
+ _, hasHostID := m.Latest.Lookup(report.HostNodeID)
+ _, conntracked := m.Latest.Lookup(endpoint.Conntracked)
if !hasHostID && conntracked {
return RenderableNodes{}
}
@@ -269,7 +269,7 @@ func MapAddressIdentity(m RenderableNode, local report.Networks) RenderableNodes
func MapHostIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
var (
id = MakeHostID(report.ExtractHostID(m.Node))
- hostname = m.Metadata[host.HostName]
+ hostname, _ = m.Latest.Lookup(host.HostName)
parts = strings.SplitN(hostname, ".", 2)
major, minor, rank = "", "", ""
)
@@ -289,7 +289,7 @@ func MapHostIdentity(m RenderableNode, _ report.Networks) RenderableNodes {
// don't want to double count edges.
func MapEndpoint2IP(m RenderableNode, local report.Networks) RenderableNodes {
// Don't include procspied connections, to prevent double counting
- _, ok := m.Metadata[endpoint.Procspied]
+ _, ok := m.Latest.Lookup(endpoint.Procspied)
if ok {
return RenderableNodes{}
}
@@ -308,7 +308,7 @@ func MapEndpoint2IP(m RenderableNode, local report.Networks) RenderableNodes {
// So we need to emit two nodes, for two different cases.
id := report.MakeScopedEndpointNodeID(scope, addr, "")
idWithPort := report.MakeScopedEndpointNodeID(scope, addr, port)
- m = m.WithParents(nil)
+ m = m.WithParents(report.EmptySets)
return RenderableNodes{
id: NewRenderableNodeWith(id, "", "", "", m),
idWithPort: NewRenderableNodeWith(idWithPort, "", "", "", m),
@@ -322,7 +322,7 @@ var portMappingMatch = regexp.MustCompile(`([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.
// the endpoint topology.
func MapContainer2IP(m RenderableNode, _ report.Networks) RenderableNodes {
result := RenderableNodes{}
- if addrs, ok := m.Sets[docker.ContainerIPsWithScopes]; ok {
+ if addrs, ok := m.Sets.Lookup(docker.ContainerIPsWithScopes); ok {
for _, addr := range addrs {
scope, addr, ok := report.ParseAddressNodeID(addr)
if !ok {
@@ -330,19 +330,20 @@ func MapContainer2IP(m RenderableNode, _ report.Networks) RenderableNodes {
}
id := report.MakeScopedEndpointNodeID(scope, addr, "")
node := NewRenderableNodeWith(id, "", "", "", m)
- node.Counters[containersKey] = 1
+ node.Counters = node.Counters.Add(containersKey, 1)
result[id] = node
}
}
// Also output all the host:port port mappings (see above comment).
// In this case we assume this doesn't need a scope, as they are for host IPs.
- for _, portMapping := range m.Sets[docker.ContainerPorts] {
+ ports, _ := m.Sets.Lookup(docker.ContainerPorts)
+ for _, portMapping := range ports {
if mapping := portMappingMatch.FindStringSubmatch(portMapping); mapping != nil {
ip, port := mapping[1], mapping[2]
id := report.MakeScopedEndpointNodeID("", ip, port)
- node := NewRenderableNodeWith(id, "", "", "", m.WithParents(nil))
- node.Counters[containersKey] = 1
+ node := NewRenderableNodeWith(id, "", "", "", m.WithParents(report.EmptySets))
+ node.Counters = node.Counters.Add(containersKey, 1)
result[id] = node
}
}
@@ -356,7 +357,7 @@ func MapContainer2IP(m RenderableNode, _ report.Networks) RenderableNodes {
func MapIP2Container(n RenderableNode, _ report.Networks) RenderableNodes {
// If an IP is shared between multiple containers, we can't
// reliably attribute an connection based on its IP
- if n.Node.Counters[containersKey] > 1 {
+ if count, _ := n.Node.Counters.Lookup(containersKey); count > 1 {
return RenderableNodes{}
}
@@ -368,14 +369,14 @@ func MapIP2Container(n RenderableNode, _ report.Networks) RenderableNodes {
// If this node is not a container, exclude it.
// This excludes all the nodes we've dragged in from endpoint
// that we failed to join to a container.
- containerID, ok := n.Node.Metadata[docker.ContainerID]
+ containerID, ok := n.Node.Latest.Lookup(docker.ContainerID)
if !ok {
return RenderableNodes{}
}
id := MakeContainerID(containerID)
- return RenderableNodes{id: NewDerivedNode(id, n.WithParents(nil))}
+ return RenderableNodes{id: NewDerivedNode(id, n.WithParents(report.EmptySets))}
}
// MapEndpoint2Process maps endpoint RenderableNodes to process
@@ -394,13 +395,13 @@ func MapEndpoint2Process(n RenderableNode, _ report.Networks) RenderableNodes {
return RenderableNodes{n.ID: n}
}
- pid, ok := n.Node.Metadata[process.PID]
+ pid, ok := n.Node.Latest.Lookup(process.PID)
if !ok {
return RenderableNodes{}
}
id := MakeProcessID(report.ExtractHostID(n.Node), pid)
- return RenderableNodes{id: NewDerivedNode(id, n.WithParents(nil))}
+ return RenderableNodes{id: NewDerivedNode(id, n.WithParents(report.EmptySets))}
}
// MapProcess2Container maps process RenderableNodes to container
@@ -434,8 +435,8 @@ func MapProcess2Container(n RenderableNode, _ report.Networks) RenderableNodes {
node RenderableNode
hostID = report.ExtractHostID(n.Node)
)
- n = n.WithParents(nil)
- if containerID, ok := n.Node.Metadata[docker.ContainerID]; ok {
+ n = n.WithParents(report.EmptySets)
+ if containerID, ok := n.Node.Latest.Lookup(docker.ContainerID); ok {
id = MakeContainerID(containerID)
node = NewDerivedNode(id, n)
} else {
@@ -459,7 +460,7 @@ func MapProcess2Name(n RenderableNode, _ report.Networks) RenderableNodes {
return RenderableNodes{n.ID: n}
}
- name, ok := n.Node.Metadata[process.Name]
+ name, ok := n.Node.Latest.Lookup(process.Name)
if !ok {
return RenderableNodes{}
}
@@ -467,7 +468,7 @@ func MapProcess2Name(n RenderableNode, _ report.Networks) RenderableNodes {
node := NewDerivedNode(name, n)
node.LabelMajor = name
node.Rank = name
- node.Node.Counters[processesKey] = 1
+ node.Counters = node.Node.Counters.Add(processesKey, 1)
node.Node.Topology = "process_name"
node.Node.ID = name
node.Children = node.Children.Add(n.Node)
@@ -482,7 +483,7 @@ func MapCountProcessName(n RenderableNode, _ report.Networks) RenderableNodes {
return RenderableNodes{n.ID: n}
}
- processes := n.Node.Counters[processesKey]
+ processes, _ := n.Node.Counters.Lookup(processesKey)
if processes == 1 {
n.LabelMinor = "1 process"
} else {
@@ -510,15 +511,15 @@ func MapContainer2ContainerImage(n RenderableNode, _ report.Networks) Renderable
// Otherwise, if some some reason the container doesn't have a image_id
// (maybe slightly out of sync reports), just drop it
- imageID, ok := n.Node.Metadata[docker.ImageID]
+ imageID, ok := n.Node.Latest.Lookup(docker.ImageID)
if !ok {
return RenderableNodes{}
}
// Add container id key to the counters, which will later be counted to produce the minor label
id := MakeContainerImageID(imageID)
- result := NewDerivedNode(id, n.WithParents(nil))
- result.Node.Counters[containersKey] = 1
+ result := NewDerivedNode(id, n.WithParents(report.EmptySets))
+ result.Node.Counters = result.Node.Counters.Add(containersKey, 1)
// Add the container as a child of the new image node
result.Children = result.Children.Add(n.Node)
@@ -546,7 +547,7 @@ func MapPod2Service(n RenderableNode, _ report.Networks) RenderableNodes {
// Otherwise, if some some reason the pod doesn't have a service_ids (maybe
// slightly out of sync reports, or its not in a service), just drop it
- ids, ok := n.Node.Metadata[kubernetes.ServiceIDs]
+ ids, ok := n.Node.Latest.Lookup(kubernetes.ServiceIDs)
if !ok {
return RenderableNodes{}
}
@@ -554,8 +555,8 @@ func MapPod2Service(n RenderableNode, _ report.Networks) RenderableNodes {
result := RenderableNodes{}
for _, serviceID := range strings.Fields(ids) {
id := MakeServiceID(serviceID)
- n := NewDerivedNode(id, n.WithParents(nil))
- n.Node.Counters[podsKey] = 1
+ n := NewDerivedNode(id, n.WithParents(report.EmptySets))
+ n.Node.Counters = n.Node.Counters.Add(podsKey, 1)
n.Children = n.Children.Add(n.Node)
result[id] = n
}
@@ -584,7 +585,7 @@ func MapContainerImage2Name(n RenderableNode, _ report.Networks) RenderableNodes
return RenderableNodes{n.ID: n}
}
- name, ok := n.Node.Metadata[docker.ImageName]
+ name, ok := n.Node.Latest.Lookup(docker.ImageName)
if !ok {
return RenderableNodes{}
}
@@ -614,11 +615,11 @@ func MapX2Host(n RenderableNode, _ report.Networks) RenderableNodes {
if n.Pseudo {
return RenderableNodes{n.ID: n}
}
- if _, ok := n.Node.Metadata[report.HostNodeID]; !ok {
+ if _, ok := n.Node.Latest.Lookup(report.HostNodeID); !ok {
return RenderableNodes{}
}
id := MakeHostID(report.ExtractHostID(n.Node))
- result := NewDerivedNode(id, n.WithParents(nil))
+ result := NewDerivedNode(id, n.WithParents(report.EmptySets))
result.Children = result.Children.Add(n.Node)
return RenderableNodes{id: result}
}
@@ -642,7 +643,7 @@ func MapContainer2Pod(n RenderableNode, _ report.Networks) RenderableNodes {
// Otherwise, if some some reason the container doesn't have a pod_id (maybe
// slightly out of sync reports, or its not in a pod), just drop it
- podID, ok := n.Node.Metadata[kubernetes.PodID]
+ podID, ok := n.Node.Latest.Lookup(kubernetes.PodID)
if !ok {
return RenderableNodes{}
}
@@ -650,15 +651,18 @@ func MapContainer2Pod(n RenderableNode, _ report.Networks) RenderableNodes {
// Add container-
key to NMD, which will later be counted to produce the
// minor label
- result := NewRenderableNodeWith(id, "", "", podID, n.WithParents(nil))
- result.Node.Counters[containersKey] = 1
+ result := NewRenderableNodeWith(id, "", "", podID, n.WithParents(report.EmptySets))
+ result.Counters = result.Counters.Add(containersKey, 1)
+
// Due to a bug in kubernetes, addon pods on the master node are not returned
// from the API. This is a workaround until
// https://github.com/kubernetes/kubernetes/issues/14738 is fixed.
if s := strings.SplitN(podID, "/", 2); len(s) == 2 {
result.LabelMajor = s[1]
- result.Node.Metadata[kubernetes.Namespace] = s[0]
- result.Node.Metadata[kubernetes.PodName] = s[1]
+ result.Node = result.Node.WithLatests(map[string]string{
+ kubernetes.Namespace: s[0],
+ kubernetes.PodName: s[1],
+ })
}
result.Children = result.Children.Add(n.Node)
@@ -675,7 +679,7 @@ func MapContainer2Hostname(n RenderableNode, _ report.Networks) RenderableNodes
// Otherwise, if some some reason the container doesn't have a hostname
// (maybe slightly out of sync reports), just drop it
- id, ok := n.Node.Metadata[docker.ContainerHostname]
+ id, ok := n.Node.Latest.Lookup(docker.ContainerHostname)
if !ok {
return RenderableNodes{}
}
@@ -685,7 +689,7 @@ func MapContainer2Hostname(n RenderableNode, _ report.Networks) RenderableNodes
result.Rank = id
// Add container id key to the counters, which will later be counted to produce the minor label
- result.Node.Counters[containersKey] = 1
+ result.Counters = result.Counters.Add(containersKey, 1)
result.Node.Topology = "container_hostname"
result.Node.ID = id
@@ -703,7 +707,7 @@ func MapCountContainers(n RenderableNode, _ report.Networks) RenderableNodes {
return RenderableNodes{n.ID: n}
}
- containers := n.Node.Counters[containersKey]
+ containers, _ := n.Node.Counters.Lookup(containersKey)
if containers == 1 {
n.LabelMinor = "1 container"
} else {
@@ -719,7 +723,7 @@ func MapCountPods(n RenderableNode, _ report.Networks) RenderableNodes {
return RenderableNodes{n.ID: n}
}
- pods := n.Node.Counters[podsKey]
+ pods, _ := n.Node.Counters.Lookup(podsKey)
if pods == 1 {
n.LabelMinor = "1 pod"
} else {
diff --git a/render/report.json b/render/report.json
new file mode 100644
index 000000000..9878b3d4d
--- /dev/null
+++ b/render/report.json
@@ -0,0 +1 @@
+{"Endpoint":{"nodes":{";10.0.2.15;22":{"id":";10.0.2.15;22","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004344313Z","value":"10.0.2.15"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.972611835Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.972611835Z","value":"18581"},"port":{"timestamp":"2016-01-22T11:35:54.004344313Z","value":"22"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.0.2.15;39694":{"id":";10.0.2.15;39694","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":[";10.0.2.15;4040"],"edges":{";10.0.2.15;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:40.964983142Z","value":"10.0.2.15"},"conntracked":{"timestamp":"2016-01-22T11:35:40.962188466Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:40.961660638Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:40.961660638Z","value":"5886"},"port":{"timestamp":"2016-01-22T11:35:40.964983142Z","value":"39694"},"procspied":{"timestamp":"2016-01-22T11:35:40.954643722Z","value":"true"}},"parents":{}},";10.0.2.15;39716":{"id":";10.0.2.15;39716","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":[";10.0.2.15;4040"],"edges":{";10.0.2.15;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.987824078Z","value":"10.0.2.15"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:50.98209526Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:50.98209526Z","value":"5063"},"port":{"timestamp":"2016-01-22T11:35:50.987824078Z","value":"39716"},"procspied":{"timestamp":"2016-01-22T11:35:50.96208001Z","value":"true"}},"parents":{}},";10.0.2.15;4040":{"id":";10.0.2.15;4040","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.987837977Z","value":"10.0.2.15"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:50.982005403Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:50.982005403Z","value":"5063"},"port":{"timestamp":"2016-01-22T11:35:50.987837977Z","value":"4040"},"procspied":{"timestamp":"2016-01-22T11:35:50.96208001Z","value":"true"}},"parents":{}},";10.0.2.2;51318":{"id":";10.0.2.2;51318","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.0.2.15;22"],"edges":{";10.0.2.15;22":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004339474Z","value":"10.0.2.2"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:54.004339474Z","value":"51318"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.10;35469":{"id":";10.32.0.10;35469","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.8;80"],"edges":{";10.32.0.8;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:40.964850232Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:40.962188466Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:40.964850232Z","value":"35469"}},"parents":{}},";10.32.0.10;35473":{"id":";10.32.0.10;35473","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.8;80"],"edges":{";10.32.0.8;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:42.980831175Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:42.978948253Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:39.943331298Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:39.943331298Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:42.980831175Z","value":"35473"},"procspied":{"timestamp":"2016-01-22T11:35:39.942173419Z","value":"true"}},"parents":{}},";10.32.0.10;35493":{"id":";10.32.0.10;35493","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.8;80"],"edges":{";10.32.0.8;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.987742911Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:47.967915169Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:47.967915169Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:50.987742911Z","value":"35493"},"procspied":{"timestamp":"2016-01-22T11:35:47.962586266Z","value":"true"}},"parents":{}},";10.32.0.10;42427":{"id":";10.32.0.10;42427","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:42.980907468Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:42.978948253Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:42.980907468Z","value":"42427"}},"parents":{}},";10.32.0.10;42431":{"id":";10.32.0.10;42431","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:44.942643622Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:44.940914336Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:41.934326747Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:41.934326747Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:44.942643622Z","value":"42431"},"procspied":{"timestamp":"2016-01-22T11:35:41.931986733Z","value":"true"}},"parents":{}},";10.32.0.10;42437":{"id":";10.32.0.10;42437","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:44.942679505Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:44.940914336Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:41.934235546Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:41.934235546Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:44.942679505Z","value":"42437"},"procspied":{"timestamp":"2016-01-22T11:35:41.931986733Z","value":"true"}},"parents":{}},";10.32.0.10;42439":{"id":";10.32.0.10;42439","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:46.213215413Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:46.193966785Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:44.006142571Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:44.006142571Z","value":"5063"},"port":{"timestamp":"2016-01-22T11:35:46.213215413Z","value":"42439"},"procspied":{"timestamp":"2016-01-22T11:35:44.004184131Z","value":"true"}},"parents":{}},";10.32.0.10;42443":{"id":";10.32.0.10;42443","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:48.953467702Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:48.951264908Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:44.937237517Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:44.937237517Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:48.953467702Z","value":"42443"},"procspied":{"timestamp":"2016-01-22T11:35:44.932774119Z","value":"true"}},"parents":{}},";10.32.0.10;42447":{"id":";10.32.0.10;42447","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.987690685Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:47.967387467Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:47.967387467Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:50.987690685Z","value":"42447"},"procspied":{"timestamp":"2016-01-22T11:35:47.962586266Z","value":"true"}},"parents":{}},";10.32.0.10;42453":{"id":";10.32.0.10;42453","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:53.018086305Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:53.006895853Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:49.93984488Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:49.93984488Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:53.018086305Z","value":"42453"},"procspied":{"timestamp":"2016-01-22T11:35:49.936362465Z","value":"true"}},"parents":{}},";10.32.0.10;42455":{"id":";10.32.0.10;42455","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.002451458Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:51.954774286Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:51.954774286Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:54.002451458Z","value":"42455"},"procspied":{"timestamp":"2016-01-22T11:35:51.948494889Z","value":"true"}},"parents":{}},";10.32.0.10;42461":{"id":";10.32.0.10;42461","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005812452Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:51.954685543Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:51.954685543Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:54.005812452Z","value":"42461"},"procspied":{"timestamp":"2016-01-22T11:35:51.948494889Z","value":"true"}},"parents":{}},";10.32.0.10;42465":{"id":";10.32.0.10;42465","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004183176Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.976398046Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.976398046Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:54.004183176Z","value":"42465"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.10;80":{"id":";10.32.0.10;80","topology":"endpoint","counters":{},"sets":{"name":["frontend.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.003070192Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.976327662Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.976327662Z","value":"7455"},"port":{"timestamp":"2016-01-22T11:35:54.003070192Z","value":"80"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.11;40723":{"id":";10.32.0.11;40723","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.8;80"],"edges":{";10.32.0.8;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:47.050743837Z","value":"10.32.0.11"},"conntracked":{"timestamp":"2016-01-22T11:35:47.044023609Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:44.007868186Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:44.007868186Z","value":"7880"},"port":{"timestamp":"2016-01-22T11:35:47.050743837Z","value":"40723"},"procspied":{"timestamp":"2016-01-22T11:35:44.004184131Z","value":"true"}},"parents":{}},";10.32.0.11;40727":{"id":";10.32.0.11;40727","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.8;80"],"edges":{";10.32.0.8;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:48.953542234Z","value":"10.32.0.11"},"conntracked":{"timestamp":"2016-01-22T11:35:48.951264908Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:46.179499668Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:46.179499668Z","value":"7880"},"port":{"timestamp":"2016-01-22T11:35:48.953542234Z","value":"40727"},"procspied":{"timestamp":"2016-01-22T11:35:46.179479775Z","value":"true"}},"parents":{}},";10.32.0.11;40733":{"id":";10.32.0.11;40733","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.8;80"],"edges":{";10.32.0.8;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:53.018159021Z","value":"10.32.0.11"},"conntracked":{"timestamp":"2016-01-22T11:35:53.006895853Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:49.938085917Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:49.938085917Z","value":"7880"},"port":{"timestamp":"2016-01-22T11:35:53.018159021Z","value":"40733"},"procspied":{"timestamp":"2016-01-22T11:35:49.936362465Z","value":"true"}},"parents":{}},";10.32.0.11;60161":{"id":";10.32.0.11;60161","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:40.964888594Z","value":"10.32.0.11"},"conntracked":{"timestamp":"2016-01-22T11:35:40.962188466Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:40.964888594Z","value":"60161"}},"parents":{}},";10.32.0.11;60201":{"id":";10.32.0.11;60201","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.9;80"],"edges":{";10.32.0.9;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005470847Z","value":"10.32.0.11"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.976493476Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.976493476Z","value":"7880"},"port":{"timestamp":"2016-01-22T11:35:54.005470847Z","value":"60201"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.11;80":{"id":";10.32.0.11;80","topology":"endpoint","counters":{},"sets":{"name":["frontend.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007403013Z","value":"10.32.0.11"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.981495565Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.981495565Z","value":"7880"},"port":{"timestamp":"2016-01-22T11:35:54.007403013Z","value":"80"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.12;40855":{"id":";10.32.0.12;40855","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.11;80"],"edges":{";10.32.0.11;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:44.942610678Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:44.940914336Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:44.006859056Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:44.006859056Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:44.942610678Z","value":"40855"},"procspied":{"timestamp":"2016-01-22T11:35:44.004184131Z","value":"true"}},"parents":{}},";10.32.0.12;40859":{"id":";10.32.0.12;40859","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.11;80"],"edges":{";10.32.0.11;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:46.213130313Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:46.193966785Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:46.183688861Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:46.183688861Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:46.213130313Z","value":"40859"},"procspied":{"timestamp":"2016-01-22T11:35:46.179479775Z","value":"true"}},"parents":{}},";10.32.0.12;40865":{"id":";10.32.0.12;40865","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.11;80"],"edges":{";10.32.0.11;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.987616032Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:49.938823427Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:49.938823427Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:50.987616032Z","value":"40865"},"procspied":{"timestamp":"2016-01-22T11:35:49.936362465Z","value":"true"}},"parents":{}},";10.32.0.12;40877":{"id":";10.32.0.12;40877","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.11;80"],"edges":{";10.32.0.11;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007402992Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.985209478Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.985209478Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:54.007402992Z","value":"40877"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.12;42270":{"id":";10.32.0.12;42270","topology":"endpoint","counters":{},"sets":{},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:39.9483832Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:39.946675054Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:39.9483832Z","value":"42270"}},"parents":{}},";10.32.0.12;42272":{"id":";10.32.0.12;42272","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:40.964807007Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:40.962188466Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:39.944647633Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:39.944647633Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:40.964807007Z","value":"42272"},"procspied":{"timestamp":"2016-01-22T11:35:39.942173419Z","value":"true"}},"parents":{}},";10.32.0.12;42274":{"id":";10.32.0.12;42274","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:41.939294299Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:41.937543293Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:40.958638444Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:40.958638444Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:41.939294299Z","value":"42274"},"procspied":{"timestamp":"2016-01-22T11:35:41.931986733Z","value":"true"}},"parents":{}},";10.32.0.12;42280":{"id":";10.32.0.12;42280","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:42.980868242Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:42.978948253Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:41.935453278Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:41.935453278Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:42.980868242Z","value":"42280"},"procspied":{"timestamp":"2016-01-22T11:35:41.931986733Z","value":"true"}},"parents":{}},";10.32.0.12;42282":{"id":";10.32.0.12;42282","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:44.011760907Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:44.009731453Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:44.00681036Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:44.00681036Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:44.011760907Z","value":"42282"},"procspied":{"timestamp":"2016-01-22T11:35:44.004184131Z","value":"true"}},"parents":{}},";10.32.0.12;42286":{"id":";10.32.0.12;42286","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:46.213058248Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:46.193966785Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:46.213058248Z","value":"42286"},"procspied":{"timestamp":"2016-01-22T11:35:44.932774119Z","value":"true"}},"parents":{}},";10.32.0.12;42290":{"id":";10.32.0.12;42290","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:47.977173345Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:47.972984926Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:47.968521931Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:47.968521931Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:47.977173345Z","value":"42290"},"procspied":{"timestamp":"2016-01-22T11:35:47.962586266Z","value":"true"}},"parents":{}},";10.32.0.12;42292":{"id":";10.32.0.12;42292","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:48.953400746Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:48.951264908Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:47.968427545Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:47.968427545Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:48.953400746Z","value":"42292"},"procspied":{"timestamp":"2016-01-22T11:35:47.962586266Z","value":"true"}},"parents":{}},";10.32.0.12;42296":{"id":";10.32.0.12;42296","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.9876555Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:49.938890859Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:49.938890859Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:50.9876555Z","value":"42296"},"procspied":{"timestamp":"2016-01-22T11:35:49.936362465Z","value":"true"}},"parents":{}},";10.32.0.12;42298":{"id":";10.32.0.12;42298","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:51.959990829Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:51.957847479Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:51.957002647Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:51.957002647Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:51.959990829Z","value":"42298"},"procspied":{"timestamp":"2016-01-22T11:35:51.948494889Z","value":"true"}},"parents":{}},";10.32.0.12;42304":{"id":";10.32.0.12;42304","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:53.0180183Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:53.006895853Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:51.956951858Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:51.956951858Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:53.0180183Z","value":"42304"},"procspied":{"timestamp":"2016-01-22T11:35:51.948494889Z","value":"true"}},"parents":{}},";10.32.0.12;42308":{"id":";10.32.0.12;42308","topology":"endpoint","counters":{},"sets":{"name":["client.weave.local"]},"adjacency":[";10.32.0.10;80"],"edges":{";10.32.0.10;80":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.003063971Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.984537157Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.984537157Z","value":"7942"},"port":{"timestamp":"2016-01-22T11:35:54.003063971Z","value":"42308"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.1;4040":{"id":";10.32.0.1;4040","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.987787808Z","value":"10.32.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:50.981932868Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:50.981932868Z","value":"5063"},"port":{"timestamp":"2016-01-22T11:35:50.987787808Z","value":"4040"},"procspied":{"timestamp":"2016-01-22T11:35:50.96208001Z","value":"true"}},"parents":{}},";10.32.0.1;58166":{"id":";10.32.0.1;58166","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":[";10.32.0.1;4040"],"edges":{";10.32.0.1;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:40.96505894Z","value":"10.32.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:40.962188466Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:40.961861812Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:40.961861812Z","value":"5886"},"port":{"timestamp":"2016-01-22T11:35:40.96505894Z","value":"58166"},"procspied":{"timestamp":"2016-01-22T11:35:40.954643722Z","value":"true"}},"parents":{}},";10.32.0.1;58189":{"id":";10.32.0.1;58189","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":[";10.32.0.1;4040"],"edges":{";10.32.0.1;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.987785125Z","value":"10.32.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:50.982192667Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:50.982192667Z","value":"5063"},"port":{"timestamp":"2016-01-22T11:35:50.987785125Z","value":"58189"},"procspied":{"timestamp":"2016-01-22T11:35:50.96208001Z","value":"true"}},"parents":{}},";10.32.0.2;9200":{"id":";10.32.0.2;9200","topology":"endpoint","counters":{},"sets":{"name":["elasticsearch.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004556901Z","value":"10.32.0.2"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.984079778Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.984079778Z","value":"4848"},"port":{"timestamp":"2016-01-22T11:35:54.004556901Z","value":"9200"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.3;60845":{"id":";10.32.0.3;60845","topology":"endpoint","counters":{},"sets":{"name":["searchapp.weave.local"]},"adjacency":[";10.32.0.2;9200"],"edges":{";10.32.0.2;9200":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004551132Z","value":"10.32.0.3"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.998897856Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.998897856Z","value":"5063"},"port":{"timestamp":"2016-01-22T11:35:54.004551132Z","value":"60845"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.3;8080":{"id":";10.32.0.3;8080","topology":"endpoint","counters":{},"sets":{"name":["searchapp.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007211922Z","value":"10.32.0.3"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.999824364Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.999824364Z","value":"5063"},"port":{"timestamp":"2016-01-22T11:35:54.007211922Z","value":"8080"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.4;34901":{"id":";10.32.0.4;34901","topology":"endpoint","counters":{},"sets":{"name":["searchapp.weave.local"]},"adjacency":[";10.32.0.2;9200"],"edges":{";10.32.0.2;9200":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.002605281Z","value":"10.32.0.4"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.00031237Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:54.00031237Z","value":"5391"},"port":{"timestamp":"2016-01-22T11:35:54.002605281Z","value":"34901"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.4;36006":{"id":";10.32.0.4;36006","topology":"endpoint","counters":{},"sets":{"name":["searchapp.weave.local"]},"adjacency":[";10.32.0.2;9200"],"edges":{";10.32.0.2;9200":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.003362798Z","value":"10.32.0.4"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.000220871Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:54.000220871Z","value":"5391"},"port":{"timestamp":"2016-01-22T11:35:54.003362798Z","value":"36006"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.4;8080":{"id":";10.32.0.4;8080","topology":"endpoint","counters":{},"sets":{"name":["searchapp.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006837834Z","value":"10.32.0.4"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.001479591Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:54.001479591Z","value":"5391"},"port":{"timestamp":"2016-01-22T11:35:54.006837834Z","value":"8080"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.5;6379":{"id":";10.32.0.5;6379","topology":"endpoint","counters":{},"sets":{"name":["redis.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006931284Z","value":"10.32.0.5"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.982826459Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.982826459Z","value":"5605"},"port":{"timestamp":"2016-01-22T11:35:54.006931284Z","value":"6379"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.6;4446":{"id":";10.32.0.6;4446","topology":"endpoint","counters":{},"sets":{"name":["qotd.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007366545Z","value":"10.32.0.6"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.982041866Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.982041866Z","value":"5886"},"port":{"timestamp":"2016-01-22T11:35:54.007366545Z","value":"4446"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;37093":{"id":";10.32.0.8;37093","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.3;8080"],"edges":{";10.32.0.3;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.00536484Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.986832311Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.986832311Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.00536484Z","value":"37093"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;37109":{"id":";10.32.0.8;37109","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.3;8080"],"edges":{";10.32.0.3;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.002292214Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.997622552Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.997622552Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.002292214Z","value":"37109"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;37173":{"id":";10.32.0.8;37173","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.3;8080"],"edges":{";10.32.0.3;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007204976Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.99823096Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.99823096Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.007204976Z","value":"37173"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;37289":{"id":";10.32.0.8;37289","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.3;8080"],"edges":{";10.32.0.3;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.003687772Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.987764532Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.987764532Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.003687772Z","value":"37289"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;37319":{"id":";10.32.0.8;37319","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.3;8080"],"edges":{";10.32.0.3;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.0048497Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.997964844Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.997964844Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.0048497Z","value":"37319"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;41470":{"id":";10.32.0.8;41470","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.6;4446"],"edges":{";10.32.0.6;4446":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007359607Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.998331447Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.998331447Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.007359607Z","value":"41470"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;43676":{"id":";10.32.0.8;43676","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080",";10.32.0.5;6379"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1},";10.32.0.5;6379":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006930455Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.998499272Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.998499272Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.006930455Z","value":"43676"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;43681":{"id":";10.32.0.8;43681","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.003585617Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.998062064Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.998062064Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.003585617Z","value":"43681"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;43723":{"id":";10.32.0.8;43723","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.002679533Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.997730801Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.997730801Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.002679533Z","value":"43723"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;43786":{"id":";10.32.0.8;43786","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.002058308Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.998418008Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.998418008Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.002058308Z","value":"43786"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;43850":{"id":";10.32.0.8;43850","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006833297Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.998146885Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.998146885Z","value":"6658"},"port":{"timestamp":"2016-01-22T11:35:54.006833297Z","value":"43850"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8;80":{"id":";10.32.0.8;80","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:53.018164108Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:53.006895853Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:53.018164108Z","value":"80"},"procspied":{"timestamp":"2016-01-22T11:35:49.936362465Z","value":"true"}},"parents":{}},";10.32.0.9;33182":{"id":";10.32.0.9;33182","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.5;6379"],"edges":{";10.32.0.5;6379":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.003484591Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.97598756Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.97598756Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.003484591Z","value":"33182"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;40870":{"id":";10.32.0.9;40870","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.3;8080"],"edges":{";10.32.0.3;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.0025262Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974520722Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.974520722Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.0025262Z","value":"40870"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;40936":{"id":";10.32.0.9;40936","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.3;8080"],"edges":{";10.32.0.3;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006745545Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.975205385Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.975205385Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.006745545Z","value":"40936"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;48076":{"id":";10.32.0.9;48076","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.002960211Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.97482387Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.97482387Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.002960211Z","value":"48076"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;48097":{"id":";10.32.0.9;48097","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.002216167Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974738999Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.974738999Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.002216167Z","value":"48097"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;48102":{"id":";10.32.0.9;48102","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006632041Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974979813Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.974979813Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.006632041Z","value":"48102"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;48115":{"id":";10.32.0.9;48115","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004975417Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.976068198Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.976068198Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.004975417Z","value":"48115"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;48126":{"id":";10.32.0.9;48126","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.003788966Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974663265Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.974663265Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.003788966Z","value":"48126"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;48178":{"id":";10.32.0.9;48178","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006474159Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.975057304Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.975057304Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.006474159Z","value":"48178"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;48228":{"id":";10.32.0.9;48228","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005267884Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974901949Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.974901949Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.005267884Z","value":"48228"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;48351":{"id":";10.32.0.9;48351","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.4;8080"],"edges":{";10.32.0.4;8080":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.002751757Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.975883865Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.975883865Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.002751757Z","value":"48351"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;55735":{"id":";10.32.0.9;55735","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.6;4446"],"edges":{";10.32.0.6;4446":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.003887825Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974588568Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.974588568Z","value":"7126"},"port":{"timestamp":"2016-01-22T11:35:54.003887825Z","value":"55735"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9;80":{"id":";10.32.0.9;80","topology":"endpoint","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005819692Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:54.005819692Z","value":"80"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";172.16.0.1;51983":{"id":";172.16.0.1;51983","topology":"endpoint","counters":{},"sets":{},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:42.980943191Z","value":"172.16.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:42.978948253Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:42.980943191Z","value":"51983"},"procspied":{"timestamp":"2016-01-22T11:35:41.931986733Z","value":"true"}},"parents":{}},";172.16.0.1;51984":{"id":";172.16.0.1;51984","topology":"endpoint","counters":{},"sets":{},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005670867Z","value":"172.16.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:54.005670867Z","value":"51984"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";172.16.0.1;51988":{"id":";172.16.0.1;51988","topology":"endpoint","counters":{},"sets":{},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005574082Z","value":"172.16.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:54.005574082Z","value":"51988"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";172.16.0.1;51997":{"id":";172.16.0.1;51997","topology":"endpoint","counters":{},"sets":{},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004064726Z","value":"172.16.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:54.004064726Z","value":"51997"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";172.16.0.1;51998":{"id":";172.16.0.1;51998","topology":"endpoint","counters":{},"sets":{},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:53.018221662Z","value":"172.16.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:53.006895853Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:53.018221662Z","value":"51998"},"procspied":{"timestamp":"2016-01-22T11:35:51.948494889Z","value":"true"}},"parents":{}},";172.16.0.1;51999":{"id":";172.16.0.1;51999","topology":"endpoint","counters":{},"sets":{},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:53.018285824Z","value":"172.16.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:53.006895853Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:53.018285824Z","value":"51999"},"procspied":{"timestamp":"2016-01-22T11:35:51.948494889Z","value":"true"}},"parents":{}},";172.16.0.1;52000":{"id":";172.16.0.1;52000","topology":"endpoint","counters":{},"sets":{},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:53.01834821Z","value":"172.16.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:53.006895853Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:53.01834821Z","value":"52000"},"procspied":{"timestamp":"2016-01-22T11:35:51.948494889Z","value":"true"}},"parents":{}},";172.16.0.1;52001":{"id":";172.16.0.1;52001","topology":"endpoint","counters":{},"sets":{},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.00210619Z","value":"172.16.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:54.00210619Z","value":"52001"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";172.16.0.3;4040":{"id":";172.16.0.3;4040","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005680965Z","value":"172.16.0.3"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974336257Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.974336257Z","value":"30367"},"port":{"timestamp":"2016-01-22T11:35:54.005680965Z","value":"4040"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";172.16.0.3;59510":{"id":";172.16.0.3;59510","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:40.965031167Z","value":"172.16.0.3"},"conntracked":{"timestamp":"2016-01-22T11:35:40.962188466Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:40.961480238Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:40.961480238Z","value":"5886"},"port":{"timestamp":"2016-01-22T11:35:40.965031167Z","value":"59510"},"procspied":{"timestamp":"2016-01-22T11:35:40.954643722Z","value":"true"}},"parents":{}},";172.16.0.3;59534":{"id":";172.16.0.3;59534","topology":"endpoint","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":[";172.16.0.3;4040"],"edges":{";172.16.0.3;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.987879441Z","value":"172.16.0.3"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:50.982226561Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:50.982226561Z","value":"5063"},"port":{"timestamp":"2016-01-22T11:35:50.987879441Z","value":"59534"},"procspied":{"timestamp":"2016-01-22T11:35:50.96208001Z","value":"true"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1;4040":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1;4040","topology":"endpoint","counters":{},"sets":{"name":["localhost"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004442524Z","value":"127.0.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974419852Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.974419852Z","value":"30367"},"port":{"timestamp":"2016-01-22T11:35:54.004442524Z","value":"4040"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1;44325":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1;44325","topology":"endpoint","counters":{},"sets":{"name":["localhost"]},"adjacency":["vagrant-ubuntu-vivid-64;127.0.0.1;6784"],"edges":{"vagrant-ubuntu-vivid-64;127.0.0.1;6784":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.002371654Z","value":"127.0.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.973352394Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.973352394Z","value":"30366"},"port":{"timestamp":"2016-01-22T11:35:54.002371654Z","value":"44325"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1;52902":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1;52902","topology":"endpoint","counters":{},"sets":{"name":["localhost"]},"adjacency":["vagrant-ubuntu-vivid-64;127.0.0.1;6784"],"edges":{"vagrant-ubuntu-vivid-64;127.0.0.1;6784":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004695867Z","value":"127.0.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.972775588Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.972775588Z","value":"2761"},"port":{"timestamp":"2016-01-22T11:35:54.004695867Z","value":"52902"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1;58040":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1;58040","topology":"endpoint","counters":{},"sets":{"name":["localhost"]},"adjacency":["vagrant-ubuntu-vivid-64;127.0.0.1;4040"],"edges":{"vagrant-ubuntu-vivid-64;127.0.0.1;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004436127Z","value":"127.0.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.973485133Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.973485133Z","value":"30366"},"port":{"timestamp":"2016-01-22T11:35:54.004436127Z","value":"58040"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1;58043":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1;58043","topology":"endpoint","counters":{},"sets":{"name":["localhost"]},"adjacency":["vagrant-ubuntu-vivid-64;127.0.0.1;4040"],"edges":{"vagrant-ubuntu-vivid-64;127.0.0.1;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:53.974478529Z","value":"127.0.0.1"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.973654548Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.973654548Z","value":"30366"},"port":{"timestamp":"2016-01-22T11:35:53.974478529Z","value":"58043"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1;58044":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1;58044","topology":"endpoint","counters":{},"sets":{"name":["localhost"]},"adjacency":["vagrant-ubuntu-vivid-64;127.0.0.1;4040"],"edges":{"vagrant-ubuntu-vivid-64;127.0.0.1;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:53.973862189Z","value":"127.0.0.1"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.973216468Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.973216468Z","value":"30366"},"port":{"timestamp":"2016-01-22T11:35:53.973862189Z","value":"58044"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1;58784":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1;58784","topology":"endpoint","counters":{},"sets":{"name":["localhost"]},"adjacency":["vagrant-ubuntu-vivid-64;127.0.0.1;4040"],"edges":{"vagrant-ubuntu-vivid-64;127.0.0.1;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:40.964931391Z","value":"127.0.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:40.962188466Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:40.961312766Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:40.961312766Z","value":"5886"},"port":{"timestamp":"2016-01-22T11:35:40.964931391Z","value":"58784"},"procspied":{"timestamp":"2016-01-22T11:35:40.954643722Z","value":"true"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1;58811":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1;58811","topology":"endpoint","counters":{},"sets":{},"adjacency":["vagrant-ubuntu-vivid-64;127.0.0.1;4040"],"edges":{"vagrant-ubuntu-vivid-64;127.0.0.1;4040":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.98792815Z","value":"127.0.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"port":{"timestamp":"2016-01-22T11:35:50.98792815Z","value":"58811"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1;6784":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1;6784","topology":"endpoint","counters":{},"sets":{"name":["localhost"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004706575Z","value":"127.0.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.972992813Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.972992813Z","value":"2523"},"port":{"timestamp":"2016-01-22T11:35:54.004706575Z","value":"6784"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}}}},"Address":{"nodes":{";10.0.2.15":{"id":";10.0.2.15","topology":"address","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":[";10.0.2.15"],"edges":{";10.0.2.15":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004287632Z","value":"10.0.2.15"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.972611835Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.972639317Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.972611835Z","value":"18581"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.0.2.2":{"id":";10.0.2.2","topology":"address","counters":{},"sets":{},"adjacency":[";10.0.2.15"],"edges":{";10.0.2.15":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004223562Z","value":"10.0.2.2"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"name":{"timestamp":"2016-01-22T11:35:54.004223562Z","value":"vagrant-ubuntu-vivid-64"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.1":{"id":";10.32.0.1","topology":"address","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":[";10.32.0.1"],"edges":{";10.32.0.1":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:50.987764825Z","value":"10.32.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:50.983158915Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:50.982192667Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:50.987762302Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:50.982192667Z","value":"5063"},"procspied":{"timestamp":"2016-01-22T11:35:50.96208001Z","value":"true"}},"parents":{}},";10.32.0.10":{"id":";10.32.0.10","topology":"address","counters":{},"sets":{"name":["frontend.weave.local"]},"adjacency":[";10.32.0.8",";10.32.0.9"],"edges":{";10.32.0.8":{"max_conn_count_tcp":1},";10.32.0.9":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005744275Z","value":"10.32.0.10"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.976398046Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:54.005744275Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.976398046Z","value":"7455"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.11":{"id":";10.32.0.11","topology":"address","counters":{},"sets":{"name":["frontend.weave.local"]},"adjacency":[";10.32.0.8",";10.32.0.9"],"edges":{";10.32.0.8":{"max_conn_count_tcp":1},";10.32.0.9":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007402951Z","value":"10.32.0.11"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.981495565Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:54.005413445Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.981495565Z","value":"7880"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.12":{"id":";10.32.0.12","topology":"address","counters":{},"sets":{},"adjacency":[";10.32.0.10",";10.32.0.11"],"edges":{";10.32.0.10":{"max_conn_count_tcp":1},";10.32.0.11":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.00740293Z","value":"10.32.0.12"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.985209478Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:54.00740293Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.985209478Z","value":"7942"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.2":{"id":";10.32.0.2","topology":"address","counters":{},"sets":{"name":["elasticsearch.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004498225Z","value":"10.32.0.2"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.984079778Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.984089952Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.984079778Z","value":"4848"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.3":{"id":";10.32.0.3","topology":"address","counters":{},"sets":{"name":["searchapp.weave.local"]},"adjacency":[";10.32.0.2"],"edges":{";10.32.0.2":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007005414Z","value":"10.32.0.3"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.999824364Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:54.004492384Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.999824364Z","value":"5063"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.4":{"id":";10.32.0.4","topology":"address","counters":{},"sets":{"name":["searchapp.weave.local"]},"adjacency":[";10.32.0.2"],"edges":{";10.32.0.2":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006791485Z","value":"10.32.0.4"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.001479591Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:54.003100804Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:54.001479591Z","value":"5391"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.5":{"id":";10.32.0.5","topology":"address","counters":{},"sets":{"name":["redis.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006887098Z","value":"10.32.0.5"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.982826459Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.982838153Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.982826459Z","value":"5605"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.6":{"id":";10.32.0.6","topology":"address","counters":{},"sets":{"name":["qotd.weave.local"]},"adjacency":null,"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007285833Z","value":"10.32.0.6"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.982041866Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.982052797Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.982041866Z","value":"5886"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.8":{"id":";10.32.0.8","topology":"address","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.3",";10.32.0.4",";10.32.0.5",";10.32.0.6"],"edges":{";10.32.0.3":{"max_conn_count_tcp":1},";10.32.0.4":{"max_conn_count_tcp":1},";10.32.0.5":{"max_conn_count_tcp":1},";10.32.0.6":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.007224361Z","value":"10.32.0.8"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.998499272Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:54.007224361Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.998499272Z","value":"6658"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";10.32.0.9":{"id":";10.32.0.9","topology":"address","counters":{},"sets":{"name":["app.weave.local"]},"adjacency":[";10.32.0.3",";10.32.0.4",";10.32.0.5",";10.32.0.6"],"edges":{";10.32.0.3":{"max_conn_count_tcp":1},";10.32.0.4":{"max_conn_count_tcp":1},";10.32.0.5":{"max_conn_count_tcp":1},";10.32.0.6":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.006683944Z","value":"10.32.0.9"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.976068198Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:54.006683944Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.976068198Z","value":"7126"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";172.16.0.1":{"id":";172.16.0.1","topology":"address","counters":{},"sets":{},"adjacency":[";172.16.0.3"],"edges":{";172.16.0.3":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005621419Z","value":"172.16.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"name":{"timestamp":"2016-01-22T11:35:54.005621419Z","value":"vagrant-ubuntu-vivid-64"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},";172.16.0.3":{"id":";172.16.0.3","topology":"address","counters":{},"sets":{"name":["scope.weave.local"]},"adjacency":[";172.16.0.3"],"edges":{";172.16.0.3":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.005627008Z","value":"172.16.0.3"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974336257Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.97434211Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.974336257Z","value":"30367"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}},"vagrant-ubuntu-vivid-64;127.0.0.1":{"id":"vagrant-ubuntu-vivid-64;127.0.0.1","topology":"address","counters":{},"sets":{"name":["localhost"]},"adjacency":["vagrant-ubuntu-vivid-64;127.0.0.1"],"edges":{"vagrant-ubuntu-vivid-64;127.0.0.1":{"max_conn_count_tcp":1}},"controls":{},"latest":{"addr":{"timestamp":"2016-01-22T11:35:54.004644189Z","value":"127.0.0.1"},"conntracked":{"timestamp":"2016-01-22T11:35:54.002006016Z","value":"true"},"host_node_id":{"timestamp":"2016-01-22T11:35:53.974419852Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:54.004638412Z","value":"vagrant-ubuntu-vivid-64"},"pid":{"timestamp":"2016-01-22T11:35:53.974419852Z","value":"30367"},"procspied":{"timestamp":"2016-01-22T11:35:53.972570632Z","value":"true"}},"parents":{}}}},"Process":{"nodes":{"vagrant-ubuntu-vivid-64;1":{"id":"vagrant-ubuntu-vivid-64;1","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.911734154Z","value":"/sbin/init "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014924817Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.911729177Z","value":"/sbin/init"},"pid":{"timestamp":"2016-01-22T11:35:53.911725275Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014924817Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.91173725Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":5.357568e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":5.357568e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":5.357568e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":5.357568e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":5.357568e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":5.357568e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":5.357568e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":5.357568e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":5.357568e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":5.357568e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":5.357568e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":5.357568e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":5.357568e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":5.357568e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":5.357568e+06}],"min":0,"max":5.357568e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;10":{"id":"vagrant-ubuntu-vivid-64;10","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.015289737Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.91022188Z","value":"10"},"ppid":{"timestamp":"2016-01-22T11:35:53.910229452Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015289737Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910225036Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;1016":{"id":"vagrant-ubuntu-vivid-64;1016","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901171639Z","value":"/usr/sbin/sshd -D "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.012551907Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901168449Z","value":"/usr/sbin/sshd"},"pid":{"timestamp":"2016-01-22T11:35:53.901165529Z","value":"1016"},"ppid":{"timestamp":"2016-01-22T11:35:53.901179344Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012551907Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901175364Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":3.534848e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":3.534848e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":3.534848e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":3.534848e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":3.534848e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":3.534848e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":3.534848e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":3.534848e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":3.534848e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":3.534848e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":3.534848e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":3.534848e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":3.534848e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":3.534848e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":3.534848e+06}],"min":0,"max":3.534848e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;1025":{"id":"vagrant-ubuntu-vivid-64;1025","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901695813Z","value":"/sbin/agetty --noclear tty1 linux "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01358913Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901692834Z","value":"/sbin/agetty"},"pid":{"timestamp":"2016-01-22T11:35:53.901690181Z","value":"1025"},"ppid":{"timestamp":"2016-01-22T11:35:53.901702565Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01358913Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901698793Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.056192e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":2.056192e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":2.056192e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":2.056192e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":2.056192e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":2.056192e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":2.056192e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":2.056192e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":2.056192e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":2.056192e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":2.056192e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":2.056192e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":2.056192e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":2.056192e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":2.056192e+06}],"min":0,"max":2.056192e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;11":{"id":"vagrant-ubuntu-vivid-64;11","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013252042Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.907512826Z","value":"11"},"ppid":{"timestamp":"2016-01-22T11:35:53.907519206Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013252042Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.907515906Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0.2801120448179272},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;11140":{"id":"vagrant-ubuntu-vivid-64;11140","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013986104Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911517564Z","value":"11140"},"ppid":{"timestamp":"2016-01-22T11:35:53.911523553Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013986104Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911520482Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;11163":{"id":"vagrant-ubuntu-vivid-64;11163","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014647301Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911806353Z","value":"11163"},"ppid":{"timestamp":"2016-01-22T11:35:53.911813025Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014647301Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911809447Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;12":{"id":"vagrant-ubuntu-vivid-64;12","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.015225956Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.907531061Z","value":"12"},"ppid":{"timestamp":"2016-01-22T11:35:53.907627784Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015225956Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.907594687Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;13":{"id":"vagrant-ubuntu-vivid-64;13","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013606038Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902679083Z","value":"13"},"ppid":{"timestamp":"2016-01-22T11:35:53.902688311Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013606038Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902684629Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0.26455026455026454},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;139":{"id":"vagrant-ubuntu-vivid-64;139","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014613128Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911824408Z","value":"139"},"ppid":{"timestamp":"2016-01-22T11:35:53.91183165Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014613128Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911828191Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;14":{"id":"vagrant-ubuntu-vivid-64;14","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013048041Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902158651Z","value":"14"},"ppid":{"timestamp":"2016-01-22T11:35:53.90216497Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013048041Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902161653Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0.30864197530864196},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;15":{"id":"vagrant-ubuntu-vivid-64;15","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.015299024Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911614861Z","value":"15"},"ppid":{"timestamp":"2016-01-22T11:35:53.911620806Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015299024Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911617664Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0.2724795640326975},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;15218":{"id":"vagrant-ubuntu-vivid-64;15218","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014911323Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.90725001Z","value":"15218"},"ppid":{"timestamp":"2016-01-22T11:35:53.907367488Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014911323Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.907363761Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;17":{"id":"vagrant-ubuntu-vivid-64;17","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014205257Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901583933Z","value":"17"},"ppid":{"timestamp":"2016-01-22T11:35:53.901590616Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014205257Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901587254Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;18":{"id":"vagrant-ubuntu-vivid-64;18","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012693151Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901334435Z","value":"18"},"ppid":{"timestamp":"2016-01-22T11:35:53.90134148Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012693151Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.90133788Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;182":{"id":"vagrant-ubuntu-vivid-64;182","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013446885Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901784072Z","value":"182"},"ppid":{"timestamp":"2016-01-22T11:35:53.901790699Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013446885Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901787259Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;183":{"id":"vagrant-ubuntu-vivid-64;183","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013823192Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902228227Z","value":"183"},"ppid":{"timestamp":"2016-01-22T11:35:53.902234428Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013823192Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902231242Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;18472":{"id":"vagrant-ubuntu-vivid-64;18472","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901196262Z","value":"sshd: vagrant [priv] "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013295603Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901192927Z","value":"sshd: vagrant [priv]"},"pid":{"timestamp":"2016-01-22T11:35:53.901189685Z","value":"18472"},"ppid":{"timestamp":"2016-01-22T11:35:53.901203809Z","value":"1016"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013295603Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901200024Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":6.483968e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":6.483968e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":6.483968e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":6.483968e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":6.483968e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":6.483968e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":6.483968e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":6.483968e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":6.483968e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":6.483968e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":6.483968e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":6.483968e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":6.483968e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":6.483968e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":6.483968e+06}],"min":0,"max":6.483968e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;18474":{"id":"vagrant-ubuntu-vivid-64;18474","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.910423633Z","value":"/lib/systemd/systemd --user "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013720557Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.910366945Z","value":"/lib/systemd/systemd"},"pid":{"timestamp":"2016-01-22T11:35:53.910358798Z","value":"18474"},"ppid":{"timestamp":"2016-01-22T11:35:53.910431164Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013720557Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910427174Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":4.726784e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":4.726784e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":4.726784e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":4.726784e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":4.726784e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":4.726784e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":4.726784e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":4.726784e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":4.726784e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":4.726784e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":4.726784e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":4.726784e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":4.726784e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":4.726784e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":4.726784e+06}],"min":0,"max":4.726784e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;18475":{"id":"vagrant-ubuntu-vivid-64;18475","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.91158194Z","value":"(sd-pam) "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013771987Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.911536232Z","value":"(sd-pam)"},"pid":{"timestamp":"2016-01-22T11:35:53.911534136Z","value":"18475"},"ppid":{"timestamp":"2016-01-22T11:35:53.911588842Z","value":"18474"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013771987Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911585022Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.043904e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":2.043904e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":2.043904e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":2.043904e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":2.043904e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":2.043904e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":2.043904e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":2.043904e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":2.043904e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":2.043904e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":2.043904e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":2.043904e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":2.043904e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":2.043904e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":2.043904e+06}],"min":0,"max":2.043904e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;18581":{"id":"vagrant-ubuntu-vivid-64;18581","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901316152Z","value":"sshd: vagrant@pts/0 "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014221659Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901311361Z","value":"sshd: vagrant@pts/0"},"pid":{"timestamp":"2016-01-22T11:35:53.901307975Z","value":"18581"},"ppid":{"timestamp":"2016-01-22T11:35:53.901322992Z","value":"18472"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014221659Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901319413Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":4.83328e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":4.83328e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":4.83328e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":4.83328e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":4.83328e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":4.83328e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":4.83328e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":4.83328e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":4.83328e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":4.83328e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":4.83328e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":4.83328e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":4.83328e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":4.83328e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":4.83328e+06}],"min":0,"max":4.83328e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;18583":{"id":"vagrant-ubuntu-vivid-64;18583","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901052721Z","value":"-bash "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014429652Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901049457Z","value":"-bash"},"pid":{"timestamp":"2016-01-22T11:35:53.901045978Z","value":"18583"},"ppid":{"timestamp":"2016-01-22T11:35:53.901062298Z","value":"18581"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014429652Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901056435Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":6.578176e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":6.578176e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":6.578176e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":6.578176e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":6.578176e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":6.578176e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":6.578176e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":6.578176e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":6.578176e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":6.578176e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":6.578176e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":6.578176e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":6.578176e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":6.578176e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":6.578176e+06}],"min":0,"max":6.578176e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;19":{"id":"vagrant-ubuntu-vivid-64;19","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.015191289Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902367716Z","value":"19"},"ppid":{"timestamp":"2016-01-22T11:35:53.902374474Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015191289Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902371123Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;19088":{"id":"vagrant-ubuntu-vivid-64;19088","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.01370575Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902753893Z","value":"19088"},"ppid":{"timestamp":"2016-01-22T11:35:53.902762005Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01370575Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902757887Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;19754":{"id":"vagrant-ubuntu-vivid-64;19754","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:46.915772362Z","value":"/bin/sh /usr/bin/weave --local ps "},"docker_container_id":{"timestamp":"2016-01-22T11:35:47.094009227Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:47.09135345Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:46.915769559Z","value":"/bin/sh"},"pid":{"timestamp":"2016-01-22T11:35:46.915766407Z","value":"19754"},"ppid":{"timestamp":"2016-01-22T11:35:46.915782903Z","value":"30366"},"probe_id":{"timestamp":"2016-01-22T11:35:47.09135345Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:46.91577892Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0.6172839506172839}],"min":0,"max":400,"first":"2016-01-22T11:35:45.963809315Z","last":"2016-01-22T11:35:46.913470213Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:45.963809315Z","value":4096},{"date":"2016-01-22T11:35:46.913470213Z","value":1.179648e+06}],"min":0,"max":1.179648e+06,"first":"2016-01-22T11:35:45.963809315Z","last":"2016-01-22T11:35:46.913470213Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;19909":{"id":"vagrant-ubuntu-vivid-64;19909","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:46.917719851Z","value":"/bin/sh /usr/bin/weave --local ps "},"docker_container_id":{"timestamp":"2016-01-22T11:35:47.093885197Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:47.091209688Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:46.917716929Z","value":"/bin/sh"},"pid":{"timestamp":"2016-01-22T11:35:46.917713637Z","value":"19909"},"ppid":{"timestamp":"2016-01-22T11:35:46.917747712Z","value":"19754"},"probe_id":{"timestamp":"2016-01-22T11:35:47.091209688Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:46.917722929Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:46.913470213Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:46.913470213Z","last":"2016-01-22T11:35:46.913470213Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:46.913470213Z","value":303104}],"min":0,"max":303104,"first":"2016-01-22T11:35:46.913470213Z","last":"2016-01-22T11:35:46.913470213Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;19910":{"id":"vagrant-ubuntu-vivid-64;19910","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:46.918043078Z","value":"docker inspect --format={{.State.Pid}} 72a55a13a852 "},"docker_container_id":{"timestamp":"2016-01-22T11:35:47.094244359Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:47.092251868Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:46.918039439Z","value":"docker"},"pid":{"timestamp":"2016-01-22T11:35:46.918034858Z","value":"19910"},"ppid":{"timestamp":"2016-01-22T11:35:46.91806815Z","value":"19909"},"probe_id":{"timestamp":"2016-01-22T11:35:47.092251868Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:46.91804607Z","value":"2"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:46.913470213Z","value":0.30864197530864196}],"min":0,"max":400,"first":"2016-01-22T11:35:46.913470213Z","last":"2016-01-22T11:35:46.913470213Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:46.913470213Z","value":9.535488e+06}],"min":0,"max":9.535488e+06,"first":"2016-01-22T11:35:46.913470213Z","last":"2016-01-22T11:35:46.913470213Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;2":{"id":"vagrant-ubuntu-vivid-64;2","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014155683Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.907500907Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014155683Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.90750404Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;20":{"id":"vagrant-ubuntu-vivid-64;20","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014742817Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911631127Z","value":"20"},"ppid":{"timestamp":"2016-01-22T11:35:53.911638213Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014742817Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911634566Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;20101":{"id":"vagrant-ubuntu-vivid-64;20101","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:50.904757179Z","value":"/bin/sh /usr/bin/weave --local ps "},"docker_container_id":{"timestamp":"2016-01-22T11:35:50.994421724Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:50.992999748Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:50.904754187Z","value":"/bin/sh"},"pid":{"timestamp":"2016-01-22T11:35:50.904751444Z","value":"20101"},"ppid":{"timestamp":"2016-01-22T11:35:50.904762977Z","value":"30366"},"probe_id":{"timestamp":"2016-01-22T11:35:50.992999748Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:50.904760045Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:50.902407884Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:50.902407884Z","last":"2016-01-22T11:35:50.902407884Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:50.902407884Z","value":4096}],"min":0,"max":4096,"first":"2016-01-22T11:35:50.902407884Z","last":"2016-01-22T11:35:50.902407884Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;20637":{"id":"vagrant-ubuntu-vivid-64;20637","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014237353Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911905683Z","value":"20637"},"ppid":{"timestamp":"2016-01-22T11:35:53.911911566Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014237353Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911908535Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;21":{"id":"vagrant-ubuntu-vivid-64;21","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013942586Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902086467Z","value":"21"},"ppid":{"timestamp":"2016-01-22T11:35:53.902092929Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013942586Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902089697Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;2187":{"id":"vagrant-ubuntu-vivid-64;2187","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.015166177Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.909250165Z","value":"2187"},"ppid":{"timestamp":"2016-01-22T11:35:53.909258713Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015166177Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.909255125Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;22":{"id":"vagrant-ubuntu-vivid-64;22","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013689562Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901734375Z","value":"22"},"ppid":{"timestamp":"2016-01-22T11:35:53.901740513Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013689562Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.9017375Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0.267379679144385},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0.2631578947368421},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0.2724795640326975},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;232":{"id":"vagrant-ubuntu-vivid-64;232","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014659096Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902505765Z","value":"232"},"ppid":{"timestamp":"2016-01-22T11:35:53.902514177Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014659096Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902508758Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;233":{"id":"vagrant-ubuntu-vivid-64;233","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012637532Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.903059364Z","value":"233"},"ppid":{"timestamp":"2016-01-22T11:35:53.903068037Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012637532Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.903062704Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;24":{"id":"vagrant-ubuntu-vivid-64;24","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013840392Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.910734633Z","value":"24"},"ppid":{"timestamp":"2016-01-22T11:35:53.910741193Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013840392Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910737819Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;25":{"id":"vagrant-ubuntu-vivid-64;25","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013649102Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901599034Z","value":"25"},"ppid":{"timestamp":"2016-01-22T11:35:53.901608995Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013649102Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901602354Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0.267379679144385},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0.2702702702702703}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;2523":{"id":"vagrant-ubuntu-vivid-64;2523","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.911791013Z","value":"/home/weave/weaver --port 6783 --name aa:59:c3:4a:53:61 --nickname vagrant-ubuntu-vivid-64 --datapath datapath --ipalloc-range 10.32.0.0/12 --dns-effective-listen-address 172.17.0.1 --dns-listen-address 172.17.0.1:53 --http-addr 127.0.0.1:6784 --docker-api unix:///var/run/docker.sock "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.01664788Z","value":"8b5a69cd1adbd91949a62f593e606c609cd2f3aba3ae63053976d409aafb7024"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014171629Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.911747613Z","value":"/home/weave/weaver"},"pid":{"timestamp":"2016-01-22T11:35:53.911745811Z","value":"2523"},"ppid":{"timestamp":"2016-01-22T11:35:53.9117976Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014171629Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911794285Z","value":"14"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0.26455026455026454},{"date":"2016-01-22T11:35:40.907204528Z","value":0.2617801047120419},{"date":"2016-01-22T11:35:41.899209952Z","value":0.2801120448179272},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0.2631578947368421},{"date":"2016-01-22T11:35:44.897675001Z","value":0.5434782608695652},{"date":"2016-01-22T11:35:45.963809315Z","value":0.2457002457002457},{"date":"2016-01-22T11:35:46.913470213Z","value":0.9259259259259258},{"date":"2016-01-22T11:35:47.898580504Z","value":1.1111111111111112},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0.7894736842105263},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:52.903547905Z","value":0.2724795640326975},{"date":"2016-01-22T11:35:53.900677481Z","value":0.2702702702702703}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":5.1073024e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":5.1073024e+07}],"min":0,"max":5.1073024e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["8b5a69cd1adbd91949a62f593e606c609cd2f3aba3ae63053976d409aafb7024;\u003ccontainer\u003e"],"container_image":["ca6b2c6df722a6e4eaca4356cd20149dcb0fee804cb6ed0b16e125dcde416e87;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;25745":{"id":"vagrant-ubuntu-vivid-64;25745","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.015072296Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.910678894Z","value":"25745"},"ppid":{"timestamp":"2016-01-22T11:35:53.91068378Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015072296Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910681815Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;26":{"id":"vagrant-ubuntu-vivid-64;26","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013139329Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901365023Z","value":"26"},"ppid":{"timestamp":"2016-01-22T11:35:53.90137164Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013139329Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901368156Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;27":{"id":"vagrant-ubuntu-vivid-64;27","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014108877Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901026959Z","value":"27"},"ppid":{"timestamp":"2016-01-22T11:35:53.901034124Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014108877Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901030207Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;27023":{"id":"vagrant-ubuntu-vivid-64;27023","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012823998Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.900985842Z","value":"27023"},"ppid":{"timestamp":"2016-01-22T11:35:53.900992736Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012823998Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.900989002Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;2761":{"id":"vagrant-ubuntu-vivid-64;2761","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.900912034Z","value":"/home/weave/weaveproxy -H unix:///var/run/weave/weave.sock -H 127.0.0.1:12375 "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016924672Z","value":"6e82afd55f966b074340724d6dfd2a6369421b750745a212b0cbdb93dfbcf207"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014829404Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.900908097Z","value":"/home/weave/weaveproxy"},"pid":{"timestamp":"2016-01-22T11:35:53.900900738Z","value":"2761"},"ppid":{"timestamp":"2016-01-22T11:35:53.900919806Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014829404Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.900915548Z","value":"8"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0.2617801047120419},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0.2631578947368421},{"date":"2016-01-22T11:35:44.897675001Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0.9259259259259258},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0.2724795640326975},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.961408e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":2.961408e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":2.961408e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":2.961408e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":2.961408e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":2.961408e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":2.961408e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":2.961408e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":2.961408e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":2.961408e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":2.961408e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":2.961408e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":2.961408e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":2.961408e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":2.961408e+06}],"min":0,"max":2.961408e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["6e82afd55f966b074340724d6dfd2a6369421b750745a212b0cbdb93dfbcf207;\u003ccontainer\u003e"],"container_image":["09781bcda1eaf44b2580af50eeefc97d2d5e462d8490d796ee88211a48099e3d;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;28":{"id":"vagrant-ubuntu-vivid-64;28","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013926989Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911497499Z","value":"28"},"ppid":{"timestamp":"2016-01-22T11:35:53.91150727Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013926989Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911500452Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0.2702702702702703}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;29":{"id":"vagrant-ubuntu-vivid-64;29","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013215204Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901750338Z","value":"29"},"ppid":{"timestamp":"2016-01-22T11:35:53.901756535Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013215204Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.90175319Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0.267379679144385},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;29880":{"id":"vagrant-ubuntu-vivid-64;29880","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.910110498Z","value":"/home/weave/runsvinit "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.0165562Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014021572Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.909271216Z","value":"/home/weave/runsvinit"},"pid":{"timestamp":"2016-01-22T11:35:53.909268216Z","value":"29880"},"ppid":{"timestamp":"2016-01-22T11:35:53.910197071Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014021572Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.91018795Z","value":"7"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.265088e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":2.265088e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":2.265088e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":2.265088e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":2.265088e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":2.265088e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":2.265088e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":2.265088e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":2.265088e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":2.265088e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":2.265088e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":2.265088e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":2.265088e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":2.265088e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":2.265088e+06}],"min":0,"max":2.265088e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;299":{"id":"vagrant-ubuntu-vivid-64;299","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.01348049Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902770559Z","value":"299"},"ppid":{"timestamp":"2016-01-22T11:35:53.902776733Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01348049Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902773617Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;3":{"id":"vagrant-ubuntu-vivid-64;3","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012230732Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901674685Z","value":"3"},"ppid":{"timestamp":"2016-01-22T11:35:53.901681448Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012230732Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901678029Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0.26455026455026454},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0.2457002457002457},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0.2702702702702703}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;30360":{"id":"vagrant-ubuntu-vivid-64;30360","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.909098495Z","value":"/sbin/runsvdir /etc/service "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016795713Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014464745Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.909035889Z","value":"/sbin/runsvdir"},"pid":{"timestamp":"2016-01-22T11:35:53.909032622Z","value":"30360"},"ppid":{"timestamp":"2016-01-22T11:35:53.909106787Z","value":"29880"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014464745Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.909102564Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":4096},{"date":"2016-01-22T11:35:40.907204528Z","value":4096},{"date":"2016-01-22T11:35:41.899209952Z","value":4096},{"date":"2016-01-22T11:35:42.898407673Z","value":4096},{"date":"2016-01-22T11:35:43.901659139Z","value":4096},{"date":"2016-01-22T11:35:44.897675001Z","value":4096},{"date":"2016-01-22T11:35:45.963809315Z","value":4096},{"date":"2016-01-22T11:35:46.913470213Z","value":4096},{"date":"2016-01-22T11:35:47.898580504Z","value":4096},{"date":"2016-01-22T11:35:48.89706574Z","value":4096},{"date":"2016-01-22T11:35:49.902019607Z","value":4096},{"date":"2016-01-22T11:35:50.902407884Z","value":4096},{"date":"2016-01-22T11:35:51.902313686Z","value":4096},{"date":"2016-01-22T11:35:52.903547905Z","value":4096},{"date":"2016-01-22T11:35:53.900677481Z","value":4096}],"min":0,"max":4096,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;30363":{"id":"vagrant-ubuntu-vivid-64;30363","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901081811Z","value":"runsv app "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.01720457Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01304802Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901078843Z","value":"runsv"},"pid":{"timestamp":"2016-01-22T11:35:53.901075735Z","value":"30363"},"ppid":{"timestamp":"2016-01-22T11:35:53.901090062Z","value":"30360"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01304802Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901085752Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":4096},{"date":"2016-01-22T11:35:40.907204528Z","value":4096},{"date":"2016-01-22T11:35:41.899209952Z","value":4096},{"date":"2016-01-22T11:35:42.898407673Z","value":4096},{"date":"2016-01-22T11:35:43.901659139Z","value":4096},{"date":"2016-01-22T11:35:44.897675001Z","value":4096},{"date":"2016-01-22T11:35:45.963809315Z","value":4096},{"date":"2016-01-22T11:35:46.913470213Z","value":4096},{"date":"2016-01-22T11:35:47.898580504Z","value":4096},{"date":"2016-01-22T11:35:48.89706574Z","value":4096},{"date":"2016-01-22T11:35:49.902019607Z","value":4096},{"date":"2016-01-22T11:35:50.902407884Z","value":4096},{"date":"2016-01-22T11:35:51.902313686Z","value":4096},{"date":"2016-01-22T11:35:52.903547905Z","value":4096},{"date":"2016-01-22T11:35:53.900677481Z","value":4096}],"min":0,"max":4096,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;30364":{"id":"vagrant-ubuntu-vivid-64;30364","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901010766Z","value":"runsv probe "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017201694Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.012900655Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901006585Z","value":"runsv"},"pid":{"timestamp":"2016-01-22T11:35:53.901002955Z","value":"30364"},"ppid":{"timestamp":"2016-01-22T11:35:53.901017149Z","value":"30360"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012900655Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901013865Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":4096},{"date":"2016-01-22T11:35:40.907204528Z","value":4096},{"date":"2016-01-22T11:35:41.899209952Z","value":4096},{"date":"2016-01-22T11:35:42.898407673Z","value":4096},{"date":"2016-01-22T11:35:43.901659139Z","value":4096},{"date":"2016-01-22T11:35:44.897675001Z","value":4096},{"date":"2016-01-22T11:35:45.963809315Z","value":4096},{"date":"2016-01-22T11:35:46.913470213Z","value":4096},{"date":"2016-01-22T11:35:47.898580504Z","value":4096},{"date":"2016-01-22T11:35:48.89706574Z","value":4096},{"date":"2016-01-22T11:35:49.902019607Z","value":4096},{"date":"2016-01-22T11:35:50.902407884Z","value":4096},{"date":"2016-01-22T11:35:51.902313686Z","value":4096},{"date":"2016-01-22T11:35:52.903547905Z","value":4096},{"date":"2016-01-22T11:35:53.900677481Z","value":4096}],"min":0,"max":4096,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;30366":{"id":"vagrant-ubuntu-vivid-64;30366","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.911707485Z","value":"scope-probe probe -docker=true -weave.router.addr=127.0.0.1 "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016785298Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014390067Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.911704216Z","value":"scope-probe"},"pid":{"timestamp":"2016-01-22T11:35:53.911701363Z","value":"30366"},"ppid":{"timestamp":"2016-01-22T11:35:53.911714858Z","value":"30364"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014390067Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911711291Z","value":"15"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":3.7037037037037033},{"date":"2016-01-22T11:35:40.907204528Z","value":4.973821989528796},{"date":"2016-01-22T11:35:41.899209952Z","value":4.481792717086835},{"date":"2016-01-22T11:35:42.898407673Z","value":4.010695187165775},{"date":"2016-01-22T11:35:43.901659139Z","value":6.052631578947368},{"date":"2016-01-22T11:35:44.897675001Z","value":4.076086956521739},{"date":"2016-01-22T11:35:45.963809315Z","value":4.422604422604422},{"date":"2016-01-22T11:35:46.913470213Z","value":18.51851851851852},{"date":"2016-01-22T11:35:47.898580504Z","value":7.5},{"date":"2016-01-22T11:35:48.89706574Z","value":4.8},{"date":"2016-01-22T11:35:49.902019607Z","value":5},{"date":"2016-01-22T11:35:50.902407884Z","value":4},{"date":"2016-01-22T11:35:51.902313686Z","value":5.163043478260869},{"date":"2016-01-22T11:35:52.903547905Z","value":5.722070844686648},{"date":"2016-01-22T11:35:53.900677481Z","value":6.216216216216217}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":4.7132672e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":4.7132672e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":4.7132672e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":4.7132672e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":4.7132672e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":4.7132672e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":4.7136768e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":4.7136768e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":4.7136768e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":4.7136768e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":4.7136768e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":4.7140864e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":4.7140864e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":4.714496e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":4.714496e+07}],"min":0,"max":4.714496e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;30367":{"id":"vagrant-ubuntu-vivid-64;30367","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901479256Z","value":"scope-app app "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016627764Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014090485Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901475791Z","value":"scope-app"},"pid":{"timestamp":"2016-01-22T11:35:53.901472502Z","value":"30367"},"ppid":{"timestamp":"2016-01-22T11:35:53.901487098Z","value":"30363"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014090485Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901482665Z","value":"10"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":10.846560846560847},{"date":"2016-01-22T11:35:40.907204528Z","value":2.8795811518324608},{"date":"2016-01-22T11:35:41.899209952Z","value":2.5210084033613445},{"date":"2016-01-22T11:35:42.898407673Z","value":9.090909090909092},{"date":"2016-01-22T11:35:43.901659139Z","value":13.421052631578947},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":2.211302211302211},{"date":"2016-01-22T11:35:46.913470213Z","value":16.666666666666664},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":26.93333333333333},{"date":"2016-01-22T11:35:49.902019607Z","value":3.684210526315789},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":1.0869565217391304},{"date":"2016-01-22T11:35:52.903547905Z","value":3.2697547683923704},{"date":"2016-01-22T11:35:53.900677481Z","value":10}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":5.4710272e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":5.4710272e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":5.4710272e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":5.523456e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":5.523456e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":5.523456e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":5.523456e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":5.523456e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":5.523456e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":5.523456e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":5.523456e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":5.523456e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":5.523456e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":5.523456e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":5.523456e+07}],"min":0,"max":5.523456e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;30391":{"id":"vagrant-ubuntu-vivid-64;30391","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.907389657Z","value":"conntrack -E -o xml -p tcp --any-nat "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016538077Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013894623Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.907385748Z","value":"conntrack"},"pid":{"timestamp":"2016-01-22T11:35:53.907381514Z","value":"30391"},"ppid":{"timestamp":"2016-01-22T11:35:53.907487522Z","value":"30366"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013894623Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.907421045Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0.2631578947368421},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":688128},{"date":"2016-01-22T11:35:40.907204528Z","value":688128},{"date":"2016-01-22T11:35:41.899209952Z","value":688128},{"date":"2016-01-22T11:35:42.898407673Z","value":688128},{"date":"2016-01-22T11:35:43.901659139Z","value":688128},{"date":"2016-01-22T11:35:44.897675001Z","value":688128},{"date":"2016-01-22T11:35:45.963809315Z","value":688128},{"date":"2016-01-22T11:35:46.913470213Z","value":688128},{"date":"2016-01-22T11:35:47.898580504Z","value":688128},{"date":"2016-01-22T11:35:48.89706574Z","value":688128},{"date":"2016-01-22T11:35:49.902019607Z","value":688128},{"date":"2016-01-22T11:35:50.902407884Z","value":688128},{"date":"2016-01-22T11:35:51.902313686Z","value":688128},{"date":"2016-01-22T11:35:52.903547905Z","value":688128},{"date":"2016-01-22T11:35:53.900677481Z","value":688128}],"min":0,"max":688128,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;30423":{"id":"vagrant-ubuntu-vivid-64;30423","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901505244Z","value":"conntrack -E -o xml -p tcp "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016841695Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014527655Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901502079Z","value":"conntrack"},"pid":{"timestamp":"2016-01-22T11:35:53.901499017Z","value":"30423"},"ppid":{"timestamp":"2016-01-22T11:35:53.901556915Z","value":"30366"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014527655Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901550557Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":626688},{"date":"2016-01-22T11:35:40.907204528Z","value":626688},{"date":"2016-01-22T11:35:41.899209952Z","value":626688},{"date":"2016-01-22T11:35:42.898407673Z","value":626688},{"date":"2016-01-22T11:35:43.901659139Z","value":626688},{"date":"2016-01-22T11:35:44.897675001Z","value":626688},{"date":"2016-01-22T11:35:45.963809315Z","value":626688},{"date":"2016-01-22T11:35:46.913470213Z","value":626688},{"date":"2016-01-22T11:35:47.898580504Z","value":626688},{"date":"2016-01-22T11:35:48.89706574Z","value":626688},{"date":"2016-01-22T11:35:49.902019607Z","value":626688},{"date":"2016-01-22T11:35:50.902407884Z","value":626688},{"date":"2016-01-22T11:35:51.902313686Z","value":626688},{"date":"2016-01-22T11:35:52.903547905Z","value":626688},{"date":"2016-01-22T11:35:53.900677481Z","value":626688}],"min":0,"max":626688,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e"],"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;306":{"id":"vagrant-ubuntu-vivid-64;306","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012765841Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.90212143Z","value":"306"},"ppid":{"timestamp":"2016-01-22T11:35:53.902127846Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012765841Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902124702Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;31":{"id":"vagrant-ubuntu-vivid-64;31","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014249124Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901380041Z","value":"31"},"ppid":{"timestamp":"2016-01-22T11:35:53.901386462Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014249124Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.9013831Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;317":{"id":"vagrant-ubuntu-vivid-64;317","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901293316Z","value":"/lib/systemd/systemd-journald "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01451554Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901290447Z","value":"/lib/systemd/systemd-journald"},"pid":{"timestamp":"2016-01-22T11:35:53.901287515Z","value":"317"},"ppid":{"timestamp":"2016-01-22T11:35:53.901299133Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01451554Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901296107Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0.6172839506172839},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":9.424896e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":9.424896e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":9.433088e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":9.433088e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":9.433088e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":9.433088e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":9.433088e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":9.437184e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":9.44128e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":9.44128e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":9.44128e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":9.44128e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":9.449472e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":9.449472e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":9.449472e+06}],"min":0,"max":9.449472e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;32":{"id":"vagrant-ubuntu-vivid-64;32","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013277207Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911600341Z","value":"32"},"ppid":{"timestamp":"2016-01-22T11:35:53.91160665Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013277207Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911603389Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0.30864197530864196},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;33":{"id":"vagrant-ubuntu-vivid-64;33","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014694739Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.9024704Z","value":"33"},"ppid":{"timestamp":"2016-01-22T11:35:53.902496613Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014694739Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902492393Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;335":{"id":"vagrant-ubuntu-vivid-64;335","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.910575881Z","value":"/lib/systemd/systemd-udevd "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014595696Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.910572834Z","value":"/lib/systemd/systemd-udevd"},"pid":{"timestamp":"2016-01-22T11:35:53.910569729Z","value":"335"},"ppid":{"timestamp":"2016-01-22T11:35:53.910624124Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014595696Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910577706Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":3.104768e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":3.104768e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":3.104768e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":3.104768e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":3.104768e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":3.104768e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":3.104768e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":3.104768e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":3.104768e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":3.104768e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":3.104768e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":3.104768e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":3.104768e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":3.104768e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":3.104768e+06}],"min":0,"max":3.104768e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;34":{"id":"vagrant-ubuntu-vivid-64;34","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014759096Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902452604Z","value":"34"},"ppid":{"timestamp":"2016-01-22T11:35:53.902458946Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014759096Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902455825Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;348":{"id":"vagrant-ubuntu-vivid-64;348","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013429267Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.9013957Z","value":"348"},"ppid":{"timestamp":"2016-01-22T11:35:53.901402491Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013429267Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.90139908Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;35":{"id":"vagrant-ubuntu-vivid-64;35","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014878979Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901237093Z","value":"35"},"ppid":{"timestamp":"2016-01-22T11:35:53.901244334Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014878979Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.90124029Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;36":{"id":"vagrant-ubuntu-vivid-64;36","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013852237Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.903022393Z","value":"36"},"ppid":{"timestamp":"2016-01-22T11:35:53.903029135Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013852237Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.903025718Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;37":{"id":"vagrant-ubuntu-vivid-64;37","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014564916Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.910440635Z","value":"37"},"ppid":{"timestamp":"2016-01-22T11:35:53.910472106Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014564916Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910443589Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;38":{"id":"vagrant-ubuntu-vivid-64;38","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012406552Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.910757047Z","value":"38"},"ppid":{"timestamp":"2016-01-22T11:35:53.91076611Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012406552Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910761887Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;39":{"id":"vagrant-ubuntu-vivid-64;39","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013756671Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.904350066Z","value":"39"},"ppid":{"timestamp":"2016-01-22T11:35:53.907005039Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013756671Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.904367814Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;40":{"id":"vagrant-ubuntu-vivid-64;40","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013739361Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.90292205Z","value":"40"},"ppid":{"timestamp":"2016-01-22T11:35:53.902928583Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013739361Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902925361Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;41":{"id":"vagrant-ubuntu-vivid-64;41","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014336909Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.903038449Z","value":"41"},"ppid":{"timestamp":"2016-01-22T11:35:53.903046299Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014336909Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.903042117Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;42":{"id":"vagrant-ubuntu-vivid-64;42","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014774153Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.907190139Z","value":"42"},"ppid":{"timestamp":"2016-01-22T11:35:53.907199445Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014774153Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.907195682Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;43":{"id":"vagrant-ubuntu-vivid-64;43","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013324521Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.907212515Z","value":"43"},"ppid":{"timestamp":"2016-01-22T11:35:53.907247327Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013324521Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.90721998Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;44":{"id":"vagrant-ubuntu-vivid-64;44","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013958332Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.910549423Z","value":"44"},"ppid":{"timestamp":"2016-01-22T11:35:53.910556434Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013958332Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910552544Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;45":{"id":"vagrant-ubuntu-vivid-64;45","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014847825Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.90161885Z","value":"45"},"ppid":{"timestamp":"2016-01-22T11:35:53.901625426Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014847825Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901621937Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;46":{"id":"vagrant-ubuntu-vivid-64;46","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013341732Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911261889Z","value":"46"},"ppid":{"timestamp":"2016-01-22T11:35:53.911279679Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013341732Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.91127504Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;464":{"id":"vagrant-ubuntu-vivid-64;464","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.9091497Z","value":"/lib/systemd/systemd-timesyncd "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.012362042Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.909146687Z","value":"/lib/systemd/systemd-timesyncd"},"pid":{"timestamp":"2016-01-22T11:35:53.909142177Z","value":"464"},"ppid":{"timestamp":"2016-01-22T11:35:53.909234415Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012362042Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.909153212Z","value":"2"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.338816e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":2.338816e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":2.338816e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":2.338816e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":2.338816e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":2.338816e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":2.338816e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":2.338816e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":2.338816e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":2.338816e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":2.338816e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":2.338816e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":2.338816e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":2.338816e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":2.338816e+06}],"min":0,"max":2.338816e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;47":{"id":"vagrant-ubuntu-vivid-64;47","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013066149Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901255828Z","value":"47"},"ppid":{"timestamp":"2016-01-22T11:35:53.901262494Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013066149Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901259169Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;48":{"id":"vagrant-ubuntu-vivid-64;48","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013977156Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911298464Z","value":"48"},"ppid":{"timestamp":"2016-01-22T11:35:53.911306811Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013977156Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911303233Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;481":{"id":"vagrant-ubuntu-vivid-64;481","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902972246Z","value":"/sbin/rpcbind -w "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01288581Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902968457Z","value":"/sbin/rpcbind"},"pid":{"timestamp":"2016-01-22T11:35:53.902964413Z","value":"481"},"ppid":{"timestamp":"2016-01-22T11:35:53.90297979Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01288581Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902976291Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.248704e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":2.248704e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":2.248704e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":2.248704e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":2.248704e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":2.248704e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":2.248704e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":2.248704e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":2.248704e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":2.248704e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":2.248704e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":2.248704e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":2.248704e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":2.248704e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":2.248704e+06}],"min":0,"max":2.248704e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;4848":{"id":"vagrant-ubuntu-vivid-64;4848","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902711212Z","value":"/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Xms256m -Xmx1g -Djava.awt.headless=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -XX:+DisableExplicitGC -Dfile.encoding=UTF-8 -Djna.nosys=true -Des.path.home=/usr/share/elasticsearch -cp /usr/share/elasticsearch/lib/elasticsearch-2.1.1.jar:/usr/share/elasticsearch/lib/* org.elasticsearch.bootstrap.Elasticsearch start "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016573515Z","value":"1e73af2503bcbe3b100a91663bc2b258a3d1a02faf613f4eb59dae3d5242a149"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013911162Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902707945Z","value":"/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java"},"pid":{"timestamp":"2016-01-22T11:35:53.902704661Z","value":"4848"},"ppid":{"timestamp":"2016-01-22T11:35:53.902718937Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013911162Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902715085Z","value":"53"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0.7853403141361256},{"date":"2016-01-22T11:35:41.899209952Z","value":0.2801120448179272},{"date":"2016-01-22T11:35:42.898407673Z","value":0.53475935828877},{"date":"2016-01-22T11:35:43.901659139Z","value":0.5263157894736842},{"date":"2016-01-22T11:35:44.897675001Z","value":0.5434782608695652},{"date":"2016-01-22T11:35:45.963809315Z","value":0.4914004914004914},{"date":"2016-01-22T11:35:46.913470213Z","value":0.9259259259259258},{"date":"2016-01-22T11:35:47.898580504Z","value":0.5555555555555556},{"date":"2016-01-22T11:35:48.89706574Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:49.902019607Z","value":0.5263157894736842},{"date":"2016-01-22T11:35:50.902407884Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:51.902313686Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:52.903547905Z","value":0.544959128065395},{"date":"2016-01-22T11:35:53.900677481Z","value":0.5405405405405406}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:40.907204528Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:41.899209952Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:42.898407673Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:43.901659139Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:44.897675001Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:45.963809315Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:46.913470213Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:47.898580504Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:48.89706574Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:49.902019607Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:50.902407884Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:51.902313686Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:52.903547905Z","value":2.6361856e+08},{"date":"2016-01-22T11:35:53.900677481Z","value":2.6361856e+08}],"min":0,"max":2.6361856e+08,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["1e73af2503bcbe3b100a91663bc2b258a3d1a02faf613f4eb59dae3d5242a149;\u003ccontainer\u003e"],"container_image":["bb87ed563fee1e1f94f0959b653fc85c6ae4cd0f00cb07d29d76f815acaa7b19;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;5":{"id":"vagrant-ubuntu-vivid-64;5","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014791505Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901431138Z","value":"5"},"ppid":{"timestamp":"2016-01-22T11:35:53.901437672Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014791505Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901434365Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;5063":{"id":"vagrant-ubuntu-vivid-64;5063","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.910662953Z","value":"/home/weave/searchapp elasticsearch.weave.local "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016884255Z","value":"58a54e56ea964e056751b13c1d082653716ebaec82775c0b3b919fac36bda941"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014630821Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.910659821Z","value":"/home/weave/searchapp"},"pid":{"timestamp":"2016-01-22T11:35:53.91065677Z","value":"5063"},"ppid":{"timestamp":"2016-01-22T11:35:53.910669867Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014630821Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.91066616Z","value":"9"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.609728e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.609728e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.609728e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.609728e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.609728e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.609728e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.609728e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.609728e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.609728e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.609728e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.609728e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.609728e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.609728e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.609728e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.609728e+06}],"min":0,"max":1.609728e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["58a54e56ea964e056751b13c1d082653716ebaec82775c0b3b919fac36bda941;\u003ccontainer\u003e"],"container_image":["e937db5a3120c83115dc47e20c9b960503f612848daed7c6e0739b10372fb5db;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;53":{"id":"vagrant-ubuntu-vivid-64;53","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.01432084Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901636304Z","value":"53"},"ppid":{"timestamp":"2016-01-22T11:35:53.90164384Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01432084Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901639539Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;5391":{"id":"vagrant-ubuntu-vivid-64;5391","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.911937877Z","value":"/home/weave/searchapp elasticsearch.weave.local "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.01731983Z","value":"bd366e2994ae4417247a80b04c82072b52efbfeb43236b3c43465e9a4d6a4759"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013572803Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.911933759Z","value":"/home/weave/searchapp"},"pid":{"timestamp":"2016-01-22T11:35:53.911930724Z","value":"5391"},"ppid":{"timestamp":"2016-01-22T11:35:53.911944773Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013572803Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911940987Z","value":"9"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.568768e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.568768e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.568768e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.568768e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.568768e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.568768e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.568768e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.568768e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.568768e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.568768e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.568768e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.568768e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.568768e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.568768e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.568768e+06}],"min":0,"max":1.568768e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["bd366e2994ae4417247a80b04c82072b52efbfeb43236b3c43465e9a4d6a4759;\u003ccontainer\u003e"],"container_image":["e937db5a3120c83115dc47e20c9b960503f612848daed7c6e0739b10372fb5db;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;54":{"id":"vagrant-ubuntu-vivid-64;54","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012467605Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901767538Z","value":"54"},"ppid":{"timestamp":"2016-01-22T11:35:53.901773959Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012467605Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901770737Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;55":{"id":"vagrant-ubuntu-vivid-64;55","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014895609Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902102989Z","value":"55"},"ppid":{"timestamp":"2016-01-22T11:35:53.902109889Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014895609Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902106363Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;5605":{"id":"vagrant-ubuntu-vivid-64;5605","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902436252Z","value":"redis-server *:6379"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016990458Z","value":"8c2c6085895663514c6622a7e4c1ed107479c0e0062ad70cb7f95a0f769d5e01"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015145495Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902431602Z","value":"redis-server *:6379"},"pid":{"timestamp":"2016-01-22T11:35:53.902428439Z","value":"5605"},"ppid":{"timestamp":"2016-01-22T11:35:53.90244326Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015145495Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902439591Z","value":"3"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0.267379679144385},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0.30864197530864196},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":8.216576e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":8.216576e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":8.216576e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":8.216576e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":8.216576e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":8.216576e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":8.216576e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":8.216576e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":8.216576e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":8.216576e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":8.216576e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":8.216576e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":8.216576e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":8.216576e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":8.216576e+06}],"min":0,"max":8.216576e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["8c2c6085895663514c6622a7e4c1ed107479c0e0062ad70cb7f95a0f769d5e01;\u003ccontainer\u003e"],"container_image":["8bccd73928d93c54f3f5e1638a8f45d2cc359f2c3697a5ee6f62e12b4f3049fb;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;5886":{"id":"vagrant-ubuntu-vivid-64;5886","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902180556Z","value":"/home/weave/qotd "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017013179Z","value":"bd03ef4510c87453385906a5b4b9745af9c6b76d8496a452277d2c40d8f22b22"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01517892Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902175932Z","value":"/home/weave/qotd"},"pid":{"timestamp":"2016-01-22T11:35:53.902172962Z","value":"5886"},"ppid":{"timestamp":"2016-01-22T11:35:53.902187387Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01517892Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902183533Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":8.413184e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":8.413184e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":8.413184e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":8.413184e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":8.413184e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":8.413184e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":8.413184e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":8.413184e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":8.413184e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":8.413184e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":8.413184e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":8.413184e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":8.413184e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":8.413184e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":8.413184e+07}],"min":0,"max":8.413184e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["bd03ef4510c87453385906a5b4b9745af9c6b76d8496a452277d2c40d8f22b22;\u003ccontainer\u003e"],"container_image":["85922e1d96d67b3aaeea8314084ea80f0574786af1da688de631a1f06654da91;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;6234":{"id":"vagrant-ubuntu-vivid-64;6234","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.911392723Z","value":"python /home/weave/echo.py "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016033518Z","value":"72a55a13a852c818907f5abd3f1a07197d2e7e6ab6f0225678bc2bc34311d4f5"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013806325Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.911389349Z","value":"python"},"pid":{"timestamp":"2016-01-22T11:35:53.911386129Z","value":"6234"},"ppid":{"timestamp":"2016-01-22T11:35:53.911400714Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013806325Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911396328Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":1.5601664e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":1.5601664e+07}],"min":0,"max":1.5601664e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["72a55a13a852c818907f5abd3f1a07197d2e7e6ab6f0225678bc2bc34311d4f5;\u003ccontainer\u003e"],"container_image":["635b96f5595757f6171f8decec17897234c7a8c1b51aea830a3f31a9ff71fbcb;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;6431":{"id":"vagrant-ubuntu-vivid-64;6431","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902791863Z","value":"/usr/local/bin/python /home/weave/echo.py "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016696255Z","value":"72a55a13a852c818907f5abd3f1a07197d2e7e6ab6f0225678bc2bc34311d4f5"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014188592Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902788577Z","value":"/usr/local/bin/python"},"pid":{"timestamp":"2016-01-22T11:35:53.902785275Z","value":"6431"},"ppid":{"timestamp":"2016-01-22T11:35:53.902798938Z","value":"6234"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014188592Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902795408Z","value":"2"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0.26455026455026454},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0.2631578947368421},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0.2724795640326975},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.67936e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":1.67936e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":1.67936e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":1.67936e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":1.67936e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":1.67936e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":1.67936e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":1.67936e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":1.67936e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":1.67936e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":1.67936e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":1.67936e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":1.67936e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":1.67936e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":1.67936e+07}],"min":0,"max":1.67936e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["72a55a13a852c818907f5abd3f1a07197d2e7e6ab6f0225678bc2bc34311d4f5;\u003ccontainer\u003e"],"container_image":["635b96f5595757f6171f8decec17897234c7a8c1b51aea830a3f31a9ff71fbcb;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;6463":{"id":"vagrant-ubuntu-vivid-64;6463","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.911420932Z","value":"python /home/weave/app.py "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017054406Z","value":"5bcf6b54b9cbe045fb2f04fc75a3de5f6535bb97a35df52fa44e0099939f0d71"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.012611985Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.911417661Z","value":"python"},"pid":{"timestamp":"2016-01-22T11:35:53.91141335Z","value":"6463"},"ppid":{"timestamp":"2016-01-22T11:35:53.911428689Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012611985Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911425034Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":1.8071552e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":1.8071552e+07}],"min":0,"max":1.8071552e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["5bcf6b54b9cbe045fb2f04fc75a3de5f6535bb97a35df52fa44e0099939f0d71;\u003ccontainer\u003e"],"container_image":["eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;6658":{"id":"vagrant-ubuntu-vivid-64;6658","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.909009963Z","value":"/usr/local/bin/python /home/weave/app.py "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016918116Z","value":"5bcf6b54b9cbe045fb2f04fc75a3de5f6535bb97a35df52fa44e0099939f0d71"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014725489Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.909006406Z","value":"/usr/local/bin/python"},"pid":{"timestamp":"2016-01-22T11:35:53.908999274Z","value":"6658"},"ppid":{"timestamp":"2016-01-22T11:35:53.909017364Z","value":"6463"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014725489Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.909013537Z","value":"12"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0.267379679144385},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0.2457002457002457},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0.2724795640326975},{"date":"2016-01-22T11:35:53.900677481Z","value":0.2702702702702703}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":2.4993792e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":2.4993792e+07}],"min":0,"max":2.4993792e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["5bcf6b54b9cbe045fb2f04fc75a3de5f6535bb97a35df52fa44e0099939f0d71;\u003ccontainer\u003e"],"container_image":["eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;6691":{"id":"vagrant-ubuntu-vivid-64;6691","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.903003938Z","value":"python /home/weave/app.py "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017129501Z","value":"548cc4a76e263f5b085a181f7284d02f579f38c651be0110e446d5185a6b550b"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.012661327Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902993412Z","value":"python"},"pid":{"timestamp":"2016-01-22T11:35:53.902989731Z","value":"6691"},"ppid":{"timestamp":"2016-01-22T11:35:53.903013013Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012661327Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.903007609Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":1.8079744e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":1.8079744e+07}],"min":0,"max":1.8079744e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["548cc4a76e263f5b085a181f7284d02f579f38c651be0110e446d5185a6b550b;\u003ccontainer\u003e"],"container_image":["eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;67":{"id":"vagrant-ubuntu-vivid-64;67","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012503642Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902196005Z","value":"67"},"ppid":{"timestamp":"2016-01-22T11:35:53.902202115Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012503642Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902198933Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;68":{"id":"vagrant-ubuntu-vivid-64;68","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012841528Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902213355Z","value":"68"},"ppid":{"timestamp":"2016-01-22T11:35:53.902220213Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012841528Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902216878Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;684":{"id":"vagrant-ubuntu-vivid-64;684","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902531247Z","value":"/usr/lib/accountsservice/accounts-daemon "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013639197Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902527729Z","value":"/usr/lib/accountsservice/accounts-daemon"},"pid":{"timestamp":"2016-01-22T11:35:53.902524468Z","value":"684"},"ppid":{"timestamp":"2016-01-22T11:35:53.902538072Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013639197Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902534461Z","value":"3"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":5.730304e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":5.730304e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":5.730304e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":5.730304e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":5.730304e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":5.730304e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":5.730304e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":5.730304e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":5.730304e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":5.730304e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":5.730304e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":5.730304e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":5.730304e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":5.730304e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":5.730304e+06}],"min":0,"max":5.730304e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;687":{"id":"vagrant-ubuntu-vivid-64;687","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902266692Z","value":"/usr/sbin/atd -f "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013412462Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902262373Z","value":"/usr/sbin/atd"},"pid":{"timestamp":"2016-01-22T11:35:53.902259041Z","value":"687"},"ppid":{"timestamp":"2016-01-22T11:35:53.902273396Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013412462Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902270015Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.892352e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.892352e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.892352e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.892352e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.892352e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.892352e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.892352e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.892352e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.892352e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.892352e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.892352e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.892352e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.892352e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.892352e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.892352e+06}],"min":0,"max":1.892352e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7":{"id":"vagrant-ubuntu-vivid-64;7","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014498539Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.909119465Z","value":"7"},"ppid":{"timestamp":"2016-01-22T11:35:53.909128612Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014498539Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.909122874Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0.2617801047120419},{"date":"2016-01-22T11:35:41.899209952Z","value":0.5602240896358543},{"date":"2016-01-22T11:35:42.898407673Z","value":0.267379679144385},{"date":"2016-01-22T11:35:43.901659139Z","value":0.2631578947368421},{"date":"2016-01-22T11:35:44.897675001Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:45.963809315Z","value":0.2457002457002457},{"date":"2016-01-22T11:35:46.913470213Z","value":1.8518518518518516},{"date":"2016-01-22T11:35:47.898580504Z","value":0.5555555555555556},{"date":"2016-01-22T11:35:48.89706574Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:49.902019607Z","value":0.2631578947368421},{"date":"2016-01-22T11:35:50.902407884Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:51.902313686Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0.5405405405405406}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;709":{"id":"vagrant-ubuntu-vivid-64;709","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902390863Z","value":"/usr/sbin/cron -f "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013621567Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902387738Z","value":"/usr/sbin/cron"},"pid":{"timestamp":"2016-01-22T11:35:53.902384304Z","value":"709"},"ppid":{"timestamp":"2016-01-22T11:35:53.902397643Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013621567Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902394114Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.985984e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":2.985984e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":2.985984e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":2.985984e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":2.985984e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":2.985984e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":2.985984e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":2.985984e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":2.985984e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":2.985984e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":2.985984e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":2.985984e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":2.985984e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":2.985984e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":2.985984e+06}],"min":0,"max":2.985984e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7126":{"id":"vagrant-ubuntu-vivid-64;7126","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901453652Z","value":"/usr/local/bin/python /home/weave/app.py "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016862332Z","value":"548cc4a76e263f5b085a181f7284d02f579f38c651be0110e446d5185a6b550b"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014580078Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901450343Z","value":"/usr/local/bin/python"},"pid":{"timestamp":"2016-01-22T11:35:53.901447139Z","value":"7126"},"ppid":{"timestamp":"2016-01-22T11:35:53.90146039Z","value":"6691"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014580078Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901456867Z","value":"12"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0.2631578947368421},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0.2457002457002457},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0.5555555555555556},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0.2631578947368421},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0.2702702702702703}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":2.5153536e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":2.5153536e+07}],"min":0,"max":2.5153536e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["548cc4a76e263f5b085a181f7284d02f579f38c651be0110e446d5185a6b550b;\u003ccontainer\u003e"],"container_image":["eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;714":{"id":"vagrant-ubuntu-vivid-64;714","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902818534Z","value":"/lib/systemd/systemd-logind "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014481461Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902815271Z","value":"/lib/systemd/systemd-logind"},"pid":{"timestamp":"2016-01-22T11:35:53.902811224Z","value":"714"},"ppid":{"timestamp":"2016-01-22T11:35:53.902832299Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014481461Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902827466Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":3.059712e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":3.059712e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":3.059712e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":3.059712e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":3.059712e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":3.059712e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":3.059712e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":3.059712e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":3.059712e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":3.059712e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":3.059712e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":3.059712e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":3.059712e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":3.059712e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":3.059712e+06}],"min":0,"max":3.059712e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;72":{"id":"vagrant-ubuntu-vivid-64;72","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013357792Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.902944476Z","value":"72"},"ppid":{"timestamp":"2016-01-22T11:35:53.902952416Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013357792Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902948547Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7234":{"id":"vagrant-ubuntu-vivid-64;7234","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901719354Z","value":"nginx: master process nginx -g daemon off;"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016602785Z","value":"41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014037683Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901716555Z","value":"nginx: master process nginx -g daemon off;"},"pid":{"timestamp":"2016-01-22T11:35:53.901713595Z","value":"7234"},"ppid":{"timestamp":"2016-01-22T11:35:53.901726314Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014037683Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901722515Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.626112e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.626112e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.626112e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.626112e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.626112e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.626112e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.626112e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.626112e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.626112e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.626112e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.626112e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.626112e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.626112e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.626112e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.626112e+06}],"min":0,"max":1.626112e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;724":{"id":"vagrant-ubuntu-vivid-64;724","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.910641203Z","value":"/usr/sbin/rsyslogd -n "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015259364Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.910637271Z","value":"/usr/sbin/rsyslogd"},"pid":{"timestamp":"2016-01-22T11:35:53.910634061Z","value":"724"},"ppid":{"timestamp":"2016-01-22T11:35:53.910648511Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015259364Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910644632Z","value":"4"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":4.03456e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":4.03456e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":4.03456e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":4.03456e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":4.03456e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":4.03456e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":4.03456e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":4.03456e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":4.03456e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":4.03456e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":4.03456e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":4.03456e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":4.03456e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":4.03456e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":4.03456e+06}],"min":0,"max":4.03456e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;727":{"id":"vagrant-ubuntu-vivid-64;727","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901658809Z","value":"/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375 -s overlay "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013554399Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901655593Z","value":"/usr/bin/docker"},"pid":{"timestamp":"2016-01-22T11:35:53.901652539Z","value":"727"},"ppid":{"timestamp":"2016-01-22T11:35:53.901665865Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013554399Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901662372Z","value":"87"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.0582010582010581},{"date":"2016-01-22T11:35:40.907204528Z","value":2.094240837696335},{"date":"2016-01-22T11:35:41.899209952Z","value":5.602240896358544},{"date":"2016-01-22T11:35:42.898407673Z","value":2.13903743315508},{"date":"2016-01-22T11:35:43.901659139Z","value":2.1052631578947367},{"date":"2016-01-22T11:35:44.897675001Z","value":1.358695652173913},{"date":"2016-01-22T11:35:45.963809315Z","value":1.71990171990172},{"date":"2016-01-22T11:35:46.913470213Z","value":4.320987654320987},{"date":"2016-01-22T11:35:47.898580504Z","value":3.3333333333333335},{"date":"2016-01-22T11:35:48.89706574Z","value":2.933333333333333},{"date":"2016-01-22T11:35:49.902019607Z","value":1.3157894736842104},{"date":"2016-01-22T11:35:50.902407884Z","value":1.6},{"date":"2016-01-22T11:35:51.902313686Z","value":5.978260869565218},{"date":"2016-01-22T11:35:52.903547905Z","value":2.7247956403269753},{"date":"2016-01-22T11:35:53.900677481Z","value":3.2432432432432434}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":7.4973184e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":6.7944448e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":6.7944448e+07}],"min":0,"max":7.4973184e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;744":{"id":"vagrant-ubuntu-vivid-64;744","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014710957Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901801572Z","value":"744"},"ppid":{"timestamp":"2016-01-22T11:35:53.901808302Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014710957Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901804786Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7454":{"id":"vagrant-ubuntu-vivid-64;7454","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.900943137Z","value":"nginx: worker process"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016762841Z","value":"41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014353244Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.900939344Z","value":"nginx: worker process"},"pid":{"timestamp":"2016-01-22T11:35:53.900935457Z","value":"7454"},"ppid":{"timestamp":"2016-01-22T11:35:53.900950032Z","value":"7234"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014353244Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.900946248Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0.2724795640326975},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.388544e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.388544e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.388544e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.388544e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.388544e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.388544e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.388544e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.388544e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.388544e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.388544e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.388544e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.388544e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.388544e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.388544e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.388544e+06}],"min":0,"max":1.388544e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7455":{"id":"vagrant-ubuntu-vivid-64;7455","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.911479312Z","value":"nginx: worker process"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017106295Z","value":"41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.012544926Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.911476004Z","value":"nginx: worker process"},"pid":{"timestamp":"2016-01-22T11:35:53.911429145Z","value":"7455"},"ppid":{"timestamp":"2016-01-22T11:35:53.911487627Z","value":"7234"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012544926Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911483867Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0.5555555555555556},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.388544e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.388544e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.388544e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.388544e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.388544e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.388544e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.388544e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.388544e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.388544e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.388544e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.388544e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.388544e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.388544e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.388544e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.388544e+06}],"min":0,"max":1.388544e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7456":{"id":"vagrant-ubuntu-vivid-64;7456","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902902625Z","value":"nginx: worker process"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016724108Z","value":"41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014286818Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902899358Z","value":"nginx: worker process"},"pid":{"timestamp":"2016-01-22T11:35:53.902895563Z","value":"7456"},"ppid":{"timestamp":"2016-01-22T11:35:53.902912025Z","value":"7234"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014286818Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902906509Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.388544e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.388544e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.388544e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.388544e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.388544e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.388544e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.388544e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.388544e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.388544e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.388544e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.388544e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.388544e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.388544e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.388544e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.388544e+06}],"min":0,"max":1.388544e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7457":{"id":"vagrant-ubuntu-vivid-64;7457","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.91053382Z","value":"nginx: worker process"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.016740162Z","value":"41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014303887Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.910528218Z","value":"nginx: worker process"},"pid":{"timestamp":"2016-01-22T11:35:53.910525009Z","value":"7457"},"ppid":{"timestamp":"2016-01-22T11:35:53.910540318Z","value":"7234"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014303887Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910536908Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.388544e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.388544e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.388544e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.388544e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.388544e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.388544e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.388544e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.388544e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.388544e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.388544e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.388544e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.388544e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.388544e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.388544e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.388544e+06}],"min":0,"max":1.388544e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;748":{"id":"vagrant-ubuntu-vivid-64;748","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.015274222Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901413322Z","value":"748"},"ppid":{"timestamp":"2016-01-22T11:35:53.90142222Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015274222Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901418684Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;749":{"id":"vagrant-ubuntu-vivid-64;749","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014386595Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911318206Z","value":"749"},"ppid":{"timestamp":"2016-01-22T11:35:53.91137081Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014386595Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.91132124Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;750":{"id":"vagrant-ubuntu-vivid-64;750","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901219622Z","value":"/usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014370543Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901216412Z","value":"/usr/bin/dbus-daemon"},"pid":{"timestamp":"2016-01-22T11:35:53.901213061Z","value":"750"},"ppid":{"timestamp":"2016-01-22T11:35:53.901226594Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014370543Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901223074Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.912256e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":2.912256e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":2.912256e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":2.912256e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":2.912256e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":2.912256e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":2.912256e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":2.912256e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":2.912256e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":2.912256e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":2.912256e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":2.912256e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":2.912256e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":2.912256e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":2.912256e+06}],"min":0,"max":2.912256e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;752":{"id":"vagrant-ubuntu-vivid-64;752","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901104878Z","value":"dhclient -1 -v -pf /run/dhclient.eth0.pid -lf /var/lib/dhcp/dhclient.eth0.leases eth0 "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.014055084Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.90110176Z","value":"dhclient"},"pid":{"timestamp":"2016-01-22T11:35:53.901098672Z","value":"752"},"ppid":{"timestamp":"2016-01-22T11:35:53.901111654Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014055084Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901107796Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":9.150464e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":9.150464e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":9.150464e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":9.150464e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":9.150464e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":9.150464e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":9.150464e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":9.150464e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":9.150464e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":9.150464e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":9.150464e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":9.150464e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":9.150464e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":9.150464e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":9.150464e+06}],"min":0,"max":9.150464e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7575":{"id":"vagrant-ubuntu-vivid-64;7575","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.900970959Z","value":"nginx: master process nginx -g daemon off;"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017181339Z","value":"bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.012867871Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.900967713Z","value":"nginx: master process nginx -g daemon off;"},"pid":{"timestamp":"2016-01-22T11:35:53.900963129Z","value":"7575"},"ppid":{"timestamp":"2016-01-22T11:35:53.900977585Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012867871Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.900974115Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.101824e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.101824e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.101824e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.101824e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.101824e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.101824e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.101824e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.101824e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.101824e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.101824e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.101824e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.101824e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.101824e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.101824e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.101824e+06}],"min":0,"max":1.101824e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;764":{"id":"vagrant-ubuntu-vivid-64;764","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014116956Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.911641644Z","value":"764"},"ppid":{"timestamp":"2016-01-22T11:35:53.911692303Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014116956Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911688676Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7879":{"id":"vagrant-ubuntu-vivid-64;7879","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902068713Z","value":"nginx: worker process"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.01551491Z","value":"bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013788785Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902065036Z","value":"nginx: worker process"},"pid":{"timestamp":"2016-01-22T11:35:53.902059802Z","value":"7879"},"ppid":{"timestamp":"2016-01-22T11:35:53.902076294Z","value":"7575"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013788785Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902072298Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0.26455026455026454},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.384448e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.384448e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.384448e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.384448e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.384448e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.384448e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.384448e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.384448e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.384448e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.384448e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.384448e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.384448e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.384448e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.384448e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.384448e+06}],"min":0,"max":1.384448e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7880":{"id":"vagrant-ubuntu-vivid-64;7880","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.910244456Z","value":"nginx: worker process"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017275974Z","value":"bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013462281Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.910242909Z","value":"nginx: worker process"},"pid":{"timestamp":"2016-01-22T11:35:53.910239576Z","value":"7880"},"ppid":{"timestamp":"2016-01-22T11:35:53.910339482Z","value":"7575"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013462281Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.910334255Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.384448e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.384448e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.384448e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.384448e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.384448e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.384448e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.384448e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.384448e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.384448e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.384448e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.384448e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.384448e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.384448e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.384448e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.384448e+06}],"min":0,"max":1.384448e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7881":{"id":"vagrant-ubuntu-vivid-64;7881","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902143684Z","value":"nginx: worker process"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017296954Z","value":"bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013496524Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902138954Z","value":"nginx: worker process"},"pid":{"timestamp":"2016-01-22T11:35:53.902135973Z","value":"7881"},"ppid":{"timestamp":"2016-01-22T11:35:53.902150315Z","value":"7575"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013496524Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902146934Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.384448e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.384448e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.384448e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.384448e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.384448e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.384448e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.384448e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.384448e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.384448e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.384448e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.384448e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.384448e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.384448e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.384448e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.384448e+06}],"min":0,"max":1.384448e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7882":{"id":"vagrant-ubuntu-vivid-64;7882","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.911848966Z","value":"nginx: worker process"},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017154755Z","value":"bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.012793768Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.911846049Z","value":"nginx: worker process"},"pid":{"timestamp":"2016-01-22T11:35:53.911842917Z","value":"7882"},"ppid":{"timestamp":"2016-01-22T11:35:53.911896424Z","value":"7575"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012793768Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.911851411Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.384448e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.384448e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.384448e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.384448e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.384448e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.384448e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.384448e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.384448e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.384448e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.384448e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.384448e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.384448e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.384448e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.384448e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.384448e+06}],"min":0,"max":1.384448e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16;\u003ccontainer\u003e"],"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;7942":{"id":"vagrant-ubuntu-vivid-64;7942","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902858343Z","value":"python /home/weave/client.py "},"docker_container_id":{"timestamp":"2016-01-22T11:35:54.017035799Z","value":"5a8af2d5e4390c7b17532cc9df60913fbdae2d62114b467d50eb9b545cb49515"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01524043Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902854117Z","value":"python"},"pid":{"timestamp":"2016-01-22T11:35:53.902850277Z","value":"7942"},"ppid":{"timestamp":"2016-01-22T11:35:53.902868205Z","value":"727"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01524043Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902861843Z","value":"3"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0.5602240896358543},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0.30864197530864196},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:51.902313686Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0.2702702702702703}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:40.907204528Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:41.899209952Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:42.898407673Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:43.901659139Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:44.897675001Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:45.963809315Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:46.913470213Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:47.898580504Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:48.89706574Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:49.902019607Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:50.902407884Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:51.902313686Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:52.903547905Z","value":1.2918784e+07},{"date":"2016-01-22T11:35:53.900677481Z","value":1.2918784e+07}],"min":0,"max":1.2918784e+07,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"container":["5a8af2d5e4390c7b17532cc9df60913fbdae2d62114b467d50eb9b545cb49515;\u003ccontainer\u003e"],"container_image":["5c55d192042b9edaf0bd6529daff0931d78446b68ee6e79498ab76bfb28c165d;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;797":{"id":"vagrant-ubuntu-vivid-64;797","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.901131502Z","value":"/usr/sbin/irqbalance --pid=/var/run/irqbalance.pid "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.012716037Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.901126424Z","value":"/usr/sbin/irqbalance"},"pid":{"timestamp":"2016-01-22T11:35:53.901122497Z","value":"797"},"ppid":{"timestamp":"2016-01-22T11:35:53.901138353Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012716037Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901134583Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.818624e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.818624e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.818624e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.818624e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.818624e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.818624e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.818624e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.818624e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.818624e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.818624e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.818624e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.818624e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.818624e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.818624e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.818624e+06}],"min":0,"max":1.818624e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;8":{"id":"vagrant-ubuntu-vivid-64;8","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.012523782Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901350321Z","value":"8"},"ppid":{"timestamp":"2016-01-22T11:35:53.90135674Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.012523782Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901353381Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;800":{"id":"vagrant-ubuntu-vivid-64;800","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.902344614Z","value":"/usr/sbin/VBoxService "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015188743Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902340977Z","value":"/usr/sbin/VBoxService"},"pid":{"timestamp":"2016-01-22T11:35:53.902279857Z","value":"800"},"ppid":{"timestamp":"2016-01-22T11:35:53.902354941Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015188743Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902350597Z","value":"8"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0.30864197530864196},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0.2702702702702703}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":1.212416e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":1.212416e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":1.212416e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":1.212416e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":1.212416e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":1.212416e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":1.212416e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":1.212416e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":1.212416e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":1.212416e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":1.212416e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":1.212416e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":1.212416e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":1.212416e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":1.212416e+06}],"min":0,"max":1.212416e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;819":{"id":"vagrant-ubuntu-vivid-64;819","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"cmdline":{"timestamp":"2016-01-22T11:35:53.90241283Z","value":"/usr/lib/policykit-1/polkitd --no-debug "},"host_node_id":{"timestamp":"2016-01-22T11:35:54.013368479Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"name":{"timestamp":"2016-01-22T11:35:53.902409448Z","value":"/usr/lib/policykit-1/polkitd"},"pid":{"timestamp":"2016-01-22T11:35:53.902406186Z","value":"819"},"ppid":{"timestamp":"2016-01-22T11:35:53.902419771Z","value":"1"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013368479Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902416103Z","value":"3"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":2.756608e+06},{"date":"2016-01-22T11:35:40.907204528Z","value":2.756608e+06},{"date":"2016-01-22T11:35:41.899209952Z","value":2.756608e+06},{"date":"2016-01-22T11:35:42.898407673Z","value":2.756608e+06},{"date":"2016-01-22T11:35:43.901659139Z","value":2.756608e+06},{"date":"2016-01-22T11:35:44.897675001Z","value":2.756608e+06},{"date":"2016-01-22T11:35:45.963809315Z","value":2.756608e+06},{"date":"2016-01-22T11:35:46.913470213Z","value":2.756608e+06},{"date":"2016-01-22T11:35:47.898580504Z","value":2.756608e+06},{"date":"2016-01-22T11:35:48.89706574Z","value":2.756608e+06},{"date":"2016-01-22T11:35:49.902019607Z","value":2.756608e+06},{"date":"2016-01-22T11:35:50.902407884Z","value":2.756608e+06},{"date":"2016-01-22T11:35:51.902313686Z","value":2.756608e+06},{"date":"2016-01-22T11:35:52.903547905Z","value":2.756608e+06},{"date":"2016-01-22T11:35:53.900677481Z","value":2.756608e+06}],"min":0,"max":2.756608e+06,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;896":{"id":"vagrant-ubuntu-vivid-64;896","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.01496372Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901568205Z","value":"896"},"ppid":{"timestamp":"2016-01-22T11:35:53.90157486Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01496372Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901571692Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;9":{"id":"vagrant-ubuntu-vivid-64;9","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014863979Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.90287867Z","value":"9"},"ppid":{"timestamp":"2016-01-22T11:35:53.902886048Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014863979Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.902882383Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0.2617801047120419},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0.30864197530864196},{"date":"2016-01-22T11:35:47.898580504Z","value":0.2777777777777778},{"date":"2016-01-22T11:35:48.89706574Z","value":0.26666666666666666},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0.2717391304347826},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;91":{"id":"vagrant-ubuntu-vivid-64;91","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013502464Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901270776Z","value":"91"},"ppid":{"timestamp":"2016-01-22T11:35:53.901278455Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013502464Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901275319Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;919":{"id":"vagrant-ubuntu-vivid-64;919","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.013539246Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.901146644Z","value":"919"},"ppid":{"timestamp":"2016-01-22T11:35:53.901153535Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.013539246Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.901150241Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"vagrant-ubuntu-vivid-64;92":{"id":"vagrant-ubuntu-vivid-64;92","topology":"process","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.014072233Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"pid":{"timestamp":"2016-01-22T11:35:53.907646159Z","value":"92"},"ppid":{"timestamp":"2016-01-22T11:35:53.907650226Z","value":"2"},"probe_id":{"timestamp":"2016-01-22T11:35:54.014072233Z","value":"1b9ffd17afe8a77e"},"threads":{"timestamp":"2016-01-22T11:35:53.907649295Z","value":"1"}},"metrics":{"process_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"},"process_memory_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897546532Z","value":0},{"date":"2016-01-22T11:35:40.907204528Z","value":0},{"date":"2016-01-22T11:35:41.899209952Z","value":0},{"date":"2016-01-22T11:35:42.898407673Z","value":0},{"date":"2016-01-22T11:35:43.901659139Z","value":0},{"date":"2016-01-22T11:35:44.897675001Z","value":0},{"date":"2016-01-22T11:35:45.963809315Z","value":0},{"date":"2016-01-22T11:35:46.913470213Z","value":0},{"date":"2016-01-22T11:35:47.898580504Z","value":0},{"date":"2016-01-22T11:35:48.89706574Z","value":0},{"date":"2016-01-22T11:35:49.902019607Z","value":0},{"date":"2016-01-22T11:35:50.902407884Z","value":0},{"date":"2016-01-22T11:35:51.902313686Z","value":0},{"date":"2016-01-22T11:35:52.903547905Z","value":0},{"date":"2016-01-22T11:35:53.900677481Z","value":0}],"min":0,"max":0,"first":"2016-01-22T11:35:39.897546532Z","last":"2016-01-22T11:35:53.900677481Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}}}},"Container":{"nodes":{"0d8d05f1a91d655ab03373edc73b163320fdfe9ab0203a2ac4382284aefcbd6c;\u003ccontainer\u003e":{"id":"0d8d05f1a91d655ab03373edc73b163320fdfe9ab0203a2ac4382284aefcbd6c;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.901972976Z","controls":["docker_start_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.901949748Z","value":"/w/w /bin/sh -c while true; do telnet nginx.weave.local 80; done"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.901949748Z","value":"15 Jan 16 15:12 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.901949748Z","value":"alpine.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.901949748Z","value":"0d8d05f1a91d655ab03373edc73b163320fdfe9ab0203a2ac4382284aefcbd6c"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.901949748Z","value":"alpine"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.901962109Z","value":"stopped"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.901949748Z","value":"74e49af2062e222ae048b926d139296f4842db5cf6fa67884ba178edd92d84ac"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015378238Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015378238Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[],"min":0,"max":0},"docker_memory_usage":{"samples":[],"min":0,"max":0}},"parents":{"container_image":["74e49af2062e222ae048b926d139296f4842db5cf6fa67884ba178edd92d84ac;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"1762ed316a06f50396bb1ce2eb79bb1b993dce4779f9ff673fd3012db941b626;\u003ccontainer\u003e":{"id":"1762ed316a06f50396bb1ce2eb79bb1b993dce4779f9ff673fd3012db941b626;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902355882Z","controls":["docker_start_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902332979Z","value":"/w/w /bin/sh"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902332979Z","value":"15 Jan 16 15:53 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902332979Z","value":"alpine.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902332979Z","value":"1762ed316a06f50396bb1ce2eb79bb1b993dce4779f9ff673fd3012db941b626"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902332979Z","value":"alpine2"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.90234501Z","value":"stopped"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902332979Z","value":"74e49af2062e222ae048b926d139296f4842db5cf6fa67884ba178edd92d84ac"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01544491Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01544491Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[],"min":0,"max":0},"docker_memory_usage":{"samples":[],"min":0,"max":0}},"parents":{"container_image":["74e49af2062e222ae048b926d139296f4842db5cf6fa67884ba178edd92d84ac;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"1e73af2503bcbe3b100a91663bc2b258a3d1a02faf613f4eb59dae3d5242a149;\u003ccontainer\u003e":{"id":"1e73af2503bcbe3b100a91663bc2b258a3d1a02faf613f4eb59dae3d5242a149;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.2","172.17.0.2"],"docker_container_ips_with_scopes":[";10.32.0.2","vagrant-ubuntu-vivid-64;172.17.0.2"],"docker_container_ports":["9200/tcp","9300/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902215233Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.90218687Z","value":"/w/w /docker-entrypoint.sh elasticsearch"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.90218687Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.90218687Z","value":"elasticsearch.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.90218687Z","value":"1e73af2503bcbe3b100a91663bc2b258a3d1a02faf613f4eb59dae3d5242a149"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.90218687Z","value":"elasticsearch1"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902203496Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902223188Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902223188Z","value":"940730562374"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902223188Z","value":"65700000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902223188Z","value":"350000000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.90218687Z","value":"bb87ed563fee1e1f94f0959b653fc85c6ae4cd0f00cb07d29d76f815acaa7b19"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902223188Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902223188Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902223188Z","value":"303804416"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902223188Z","value":"268525568"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015378259Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015378259Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.017578849Z","value":"26:3c:2d:93:4c:da"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.521630944Z","value":1.583746380697051},{"date":"2016-01-22T11:35:40.517753254Z","value":1.2771194805194805},{"date":"2016-01-22T11:35:41.513847845Z","value":1.6730273684210526},{"date":"2016-01-22T11:35:42.51826009Z","value":2.0955960533333333},{"date":"2016-01-22T11:35:43.523079416Z","value":2.7725175596816976},{"date":"2016-01-22T11:35:44.517921498Z","value":1.7292695698924732},{"date":"2016-01-22T11:35:45.522182779Z","value":1.4454451041666667},{"date":"2016-01-22T11:35:46.514422924Z","value":5.062015204678363},{"date":"2016-01-22T11:35:47.525557378Z","value":1.2226306406685237},{"date":"2016-01-22T11:35:48.547646407Z","value":1.6188005221932114},{"date":"2016-01-22T11:35:49.519394181Z","value":1.911211229946524},{"date":"2016-01-22T11:35:50.516809771Z","value":1.8351300000000001},{"date":"2016-01-22T11:35:51.539758776Z","value":0.5450189071038251},{"date":"2016-01-22T11:35:52.514822052Z","value":2.667961195652174},{"date":"2016-01-22T11:35:53.522340737Z","value":1.3906065415549598}],"min":0,"max":400,"first":"2016-01-22T11:35:39.521630944Z","last":"2016-01-22T11:35:53.522340737Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.516710732Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:39.521630944Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:40.517753254Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:41.513847845Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:42.51826009Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:43.523079416Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:44.517921498Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:45.522182779Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:46.514422924Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:47.525557378Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:48.547646407Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:49.519394181Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:50.516809771Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:51.539758776Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:52.514822052Z","value":2.68525568e+08},{"date":"2016-01-22T11:35:53.522340737Z","value":2.68525568e+08}],"min":0,"max":2.68525568e+08,"first":"2016-01-22T11:35:38.516710732Z","last":"2016-01-22T11:35:53.522340737Z"}},"parents":{"container_image":["bb87ed563fee1e1f94f0959b653fc85c6ae4cd0f00cb07d29d76f815acaa7b19;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"37ee0ba9dac8042c201f27f9eb476a6d8eb023541a610e6862fc9bda1379c71b;\u003ccontainer\u003e":{"id":"37ee0ba9dac8042c201f27f9eb476a6d8eb023541a610e6862fc9bda1379c71b;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.9022674Z","controls":["docker_start_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902244671Z","value":"/usr/local/go/bin/go test ./report ./render -test.bench=. -bench-report-file slow_report.json"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902244671Z","value":"19 Jan 16 14:53 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902244671Z","value":"37ee0ba9dac8"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902244671Z","value":"37ee0ba9dac8042c201f27f9eb476a6d8eb023541a610e6862fc9bda1379c71b"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902244671Z","value":"stoic_cray"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902257072Z","value":"stopped"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902244671Z","value":"92ad3d6bb1eb6a53def26d21ac6fba98813698ab822b97d26b9770626f3c2516"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015378247Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015378247Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[],"min":0,"max":0},"docker_memory_usage":{"samples":[],"min":0,"max":0}},"parents":{"container_image":["92ad3d6bb1eb6a53def26d21ac6fba98813698ab822b97d26b9770626f3c2516;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16;\u003ccontainer\u003e":{"id":"41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.10","172.17.0.10"],"docker_container_ips_with_scopes":[";10.32.0.10","vagrant-ubuntu-vivid-64;172.17.0.10"],"docker_container_ports":["80/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902459274Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902432371Z","value":"/w/w nginx -g daemon off;"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902432371Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902432371Z","value":"frontend.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902432371Z","value":"41188ef65bd1d1187577c36902bba645c7daad3d46b56054236068e4ff64fe16"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902432371Z","value":"frontend1"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902446899Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902468488Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902468488Z","value":"87122465356"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902468488Z","value":"31010000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902468488Z","value":"10400000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902432371Z","value":"e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902468488Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902468488Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902468488Z","value":"13258752"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902468488Z","value":"3526656"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015378253Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015378253Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.017524612Z","value":"02:37:39:cf:f0:97"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.515970262Z","value":0.15649147453083112},{"date":"2016-01-22T11:35:40.519289662Z","value":0.09531366233766234},{"date":"2016-01-22T11:35:41.514516607Z","value":0.09463656509695291},{"date":"2016-01-22T11:35:42.51551781Z","value":0.13901504},{"date":"2016-01-22T11:35:43.526986266Z","value":0.21278440318302388},{"date":"2016-01-22T11:35:44.518598868Z","value":0.08364290322580645},{"date":"2016-01-22T11:35:45.53365954Z","value":0.0773065625},{"date":"2016-01-22T11:35:46.514927329Z","value":0.17746736842105265},{"date":"2016-01-22T11:35:47.528729535Z","value":0.44945604456824506},{"date":"2016-01-22T11:35:48.518511146Z","value":0.11116156657963447},{"date":"2016-01-22T11:35:49.515654953Z","value":0.20726149732620322},{"date":"2016-01-22T11:35:50.518416299Z","value":0.08270776595744682},{"date":"2016-01-22T11:35:51.514273979Z","value":0.09186010928961748},{"date":"2016-01-22T11:35:52.519152138Z","value":0.5955284782608695},{"date":"2016-01-22T11:35:53.515303791Z","value":0.12460042895442361}],"min":0,"max":400,"first":"2016-01-22T11:35:39.515970262Z","last":"2016-01-22T11:35:53.515303791Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.517208482Z","value":3.526656e+06},{"date":"2016-01-22T11:35:39.515970262Z","value":3.526656e+06},{"date":"2016-01-22T11:35:40.519289662Z","value":3.526656e+06},{"date":"2016-01-22T11:35:41.514516607Z","value":3.526656e+06},{"date":"2016-01-22T11:35:42.51551781Z","value":3.526656e+06},{"date":"2016-01-22T11:35:43.526986266Z","value":3.526656e+06},{"date":"2016-01-22T11:35:44.518598868Z","value":3.526656e+06},{"date":"2016-01-22T11:35:45.53365954Z","value":3.526656e+06},{"date":"2016-01-22T11:35:46.514927329Z","value":3.526656e+06},{"date":"2016-01-22T11:35:47.528729535Z","value":3.526656e+06},{"date":"2016-01-22T11:35:48.518511146Z","value":3.526656e+06},{"date":"2016-01-22T11:35:49.515654953Z","value":3.526656e+06},{"date":"2016-01-22T11:35:50.518416299Z","value":3.526656e+06},{"date":"2016-01-22T11:35:51.514273979Z","value":3.526656e+06},{"date":"2016-01-22T11:35:52.519152138Z","value":3.526656e+06},{"date":"2016-01-22T11:35:53.515303791Z","value":3.526656e+06}],"min":0,"max":3.526656e+06,"first":"2016-01-22T11:35:38.517208482Z","last":"2016-01-22T11:35:53.515303791Z"}},"parents":{"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"48a3c5f555e1124058be3d8883b3306314f7afcdad435d6556fecb45607edc34;\u003ccontainer\u003e":{"id":"48a3c5f555e1124058be3d8883b3306314f7afcdad435d6556fecb45607edc34;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902579565Z","controls":["docker_start_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902548818Z","value":"npm run build"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902548818Z","value":"15 Jan 16 15:41 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902548818Z","value":"48a3c5f555e1"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902548818Z","value":"48a3c5f555e1124058be3d8883b3306314f7afcdad435d6556fecb45607edc34"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902548818Z","value":"goofy_brown"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.9025596Z","value":"stopped"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902548818Z","value":"1814dfe0177cbba933db56982b6ace04f848f7222857c51442f3380ac3fa39c5"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444867Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444867Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[],"min":0,"max":0},"docker_memory_usage":{"samples":[],"min":0,"max":0}},"parents":{"container_image":["1814dfe0177cbba933db56982b6ace04f848f7222857c51442f3380ac3fa39c5;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"51e87fe43ccb146d292da5825931320ca840934d85568e75bc9de08d83f1ab58;\u003ccontainer\u003e":{"id":"51e87fe43ccb146d292da5825931320ca840934d85568e75bc9de08d83f1ab58;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.901844185Z","controls":["docker_start_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.901820432Z","value":"/usr/local/go/bin/go test ./report ./render -test.bench=."},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.901820432Z","value":"19 Jan 16 14:42 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.901820432Z","value":"51e87fe43ccb"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.901820432Z","value":"51e87fe43ccb146d292da5825931320ca840934d85568e75bc9de08d83f1ab58"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.901820432Z","value":"cranky_engelbart"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.901831388Z","value":"stopped"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.901820432Z","value":"92ad3d6bb1eb6a53def26d21ac6fba98813698ab822b97d26b9770626f3c2516"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015328201Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015328201Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[],"min":0,"max":0},"docker_memory_usage":{"samples":[],"min":0,"max":0}},"parents":{"container_image":["92ad3d6bb1eb6a53def26d21ac6fba98813698ab822b97d26b9770626f3c2516;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"548cc4a76e263f5b085a181f7284d02f579f38c651be0110e446d5185a6b550b;\u003ccontainer\u003e":{"id":"548cc4a76e263f5b085a181f7284d02f579f38c651be0110e446d5185a6b550b;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.9","172.17.0.9"],"docker_container_ips_with_scopes":[";10.32.0.9","vagrant-ubuntu-vivid-64;172.17.0.9"],"docker_container_ports":["5000/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902992126Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902942092Z","value":"/w/w python /home/weave/app.py"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902942092Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902942092Z","value":"app.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902942092Z","value":"548cc4a76e263f5b085a181f7284d02f579f38c651be0110e446d5185a6b550b"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902942092Z","value":"app2"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902969755Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.903004307Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.903004307Z","value":"255903801707"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.903004307Z","value":"128200000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.903004307Z","value":"108680000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902942092Z","value":"eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.903004307Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.903004307Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.903004307Z","value":"38174720"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.903004307Z","value":"37543936"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015378224Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015378224Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.017488133Z","value":"36:ad:90:84:d4:71"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.514107718Z","value":0.32473243967828413},{"date":"2016-01-22T11:35:40.51976461Z","value":0.32959376623376624},{"date":"2016-01-22T11:35:41.514867066Z","value":0.4067553462603878},{"date":"2016-01-22T11:35:42.513917927Z","value":0.4008869333333333},{"date":"2016-01-22T11:35:43.525185983Z","value":0.7760836074270557},{"date":"2016-01-22T11:35:44.51882093Z","value":0.264884623655914},{"date":"2016-01-22T11:35:45.533793609Z","value":0.468155},{"date":"2016-01-22T11:35:46.515154284Z","value":0.7509563742690059},{"date":"2016-01-22T11:35:47.526974993Z","value":1.2715245682451253},{"date":"2016-01-22T11:35:48.544151208Z","value":0.562973368146214},{"date":"2016-01-22T11:35:49.515841909Z","value":0.3292631016042781},{"date":"2016-01-22T11:35:50.518642571Z","value":0.3028035106382979},{"date":"2016-01-22T11:35:51.514672069Z","value":0.2795366120218579},{"date":"2016-01-22T11:35:52.516561055Z","value":0.3533878260869565},{"date":"2016-01-22T11:35:53.51624268Z","value":0.7469909919571045}],"min":0,"max":400,"first":"2016-01-22T11:35:39.514107718Z","last":"2016-01-22T11:35:53.51624268Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.517457301Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:39.514107718Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:40.51976461Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:41.514867066Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:42.513917927Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:43.525185983Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:44.51882093Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:45.533793609Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:46.515154284Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:47.526974993Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:48.544151208Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:49.515841909Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:50.518642571Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:51.514672069Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:52.516561055Z","value":3.7543936e+07},{"date":"2016-01-22T11:35:53.51624268Z","value":3.7543936e+07}],"min":0,"max":3.7543936e+07,"first":"2016-01-22T11:35:38.517457301Z","last":"2016-01-22T11:35:53.51624268Z"}},"parents":{"container_image":["eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"58a54e56ea964e056751b13c1d082653716ebaec82775c0b3b919fac36bda941;\u003ccontainer\u003e":{"id":"58a54e56ea964e056751b13c1d082653716ebaec82775c0b3b919fac36bda941;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.3","172.17.0.3"],"docker_container_ips_with_scopes":[";10.32.0.3","vagrant-ubuntu-vivid-64;172.17.0.3"],"docker_container_ports":["8080/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902715916Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902674649Z","value":"/w/w /home/weave/entrypoint.sh"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902674649Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902674649Z","value":"searchapp.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902674649Z","value":"58a54e56ea964e056751b13c1d082653716ebaec82775c0b3b919fac36bda941"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902674649Z","value":"searchapp1"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902695546Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902730032Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902730032Z","value":"2054616903"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902730032Z","value":"760000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902730032Z","value":"810000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902674649Z","value":"e937db5a3120c83115dc47e20c9b960503f612848daed7c6e0739b10372fb5db"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902730032Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902730032Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902730032Z","value":"11292672"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902730032Z","value":"2265088"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444939Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444939Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.017667629Z","value":"1e:a1:42:de:3e:a4"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.517296837Z","value":0},{"date":"2016-01-22T11:35:40.514438483Z","value":0},{"date":"2016-01-22T11:35:41.516533226Z","value":0},{"date":"2016-01-22T11:35:42.515898589Z","value":0},{"date":"2016-01-22T11:35:43.527855139Z","value":0},{"date":"2016-01-22T11:35:44.515053371Z","value":0},{"date":"2016-01-22T11:35:45.534795993Z","value":0},{"date":"2016-01-22T11:35:46.517067465Z","value":0},{"date":"2016-01-22T11:35:47.529712633Z","value":0},{"date":"2016-01-22T11:35:48.544896712Z","value":0},{"date":"2016-01-22T11:35:49.516857463Z","value":0},{"date":"2016-01-22T11:35:50.514546254Z","value":0},{"date":"2016-01-22T11:35:51.515778759Z","value":0},{"date":"2016-01-22T11:35:52.519695312Z","value":0},{"date":"2016-01-22T11:35:53.519323596Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.517296837Z","last":"2016-01-22T11:35:53.519323596Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.519548745Z","value":2.265088e+06},{"date":"2016-01-22T11:35:39.517296837Z","value":2.265088e+06},{"date":"2016-01-22T11:35:40.514438483Z","value":2.265088e+06},{"date":"2016-01-22T11:35:41.516533226Z","value":2.265088e+06},{"date":"2016-01-22T11:35:42.515898589Z","value":2.265088e+06},{"date":"2016-01-22T11:35:43.527855139Z","value":2.265088e+06},{"date":"2016-01-22T11:35:44.515053371Z","value":2.265088e+06},{"date":"2016-01-22T11:35:45.534795993Z","value":2.265088e+06},{"date":"2016-01-22T11:35:46.517067465Z","value":2.265088e+06},{"date":"2016-01-22T11:35:47.529712633Z","value":2.265088e+06},{"date":"2016-01-22T11:35:48.544896712Z","value":2.265088e+06},{"date":"2016-01-22T11:35:49.516857463Z","value":2.265088e+06},{"date":"2016-01-22T11:35:50.514546254Z","value":2.265088e+06},{"date":"2016-01-22T11:35:51.515778759Z","value":2.265088e+06},{"date":"2016-01-22T11:35:52.519695312Z","value":2.265088e+06},{"date":"2016-01-22T11:35:53.519323596Z","value":2.265088e+06}],"min":0,"max":2.265088e+06,"first":"2016-01-22T11:35:38.519548745Z","last":"2016-01-22T11:35:53.519323596Z"}},"parents":{"container_image":["e937db5a3120c83115dc47e20c9b960503f612848daed7c6e0739b10372fb5db;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"5a8af2d5e4390c7b17532cc9df60913fbdae2d62114b467d50eb9b545cb49515;\u003ccontainer\u003e":{"id":"5a8af2d5e4390c7b17532cc9df60913fbdae2d62114b467d50eb9b545cb49515;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.12","172.17.0.12"],"docker_container_ips_with_scopes":[";10.32.0.12","vagrant-ubuntu-vivid-64;172.17.0.12"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902039865Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902018538Z","value":"/w/w python /home/weave/client.py"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902018538Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902018538Z","value":"client.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902018538Z","value":"5a8af2d5e4390c7b17532cc9df60913fbdae2d62114b467d50eb9b545cb49515"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902018538Z","value":"client1"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902028738Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902047772Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902047772Z","value":"239563515824"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902047772Z","value":"90230000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902047772Z","value":"125300000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902018538Z","value":"5c55d192042b9edaf0bd6529daff0931d78446b68ee6e79498ab76bfb28c165d"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902047772Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902047772Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902047772Z","value":"11673600"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902047772Z","value":"10452992"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444886Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444886Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.017632084Z","value":"26:b6:64:e7:5c:12"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.52030943Z","value":0.4337079892761394},{"date":"2016-01-22T11:35:40.514909926Z","value":0.17574877922077922},{"date":"2016-01-22T11:35:41.51683042Z","value":0.5266189473684211},{"date":"2016-01-22T11:35:42.517204503Z","value":0.19809706666666665},{"date":"2016-01-22T11:35:43.529564608Z","value":0.7505784615384615},{"date":"2016-01-22T11:35:44.515449945Z","value":0.20875741935483869},{"date":"2016-01-22T11:35:45.520330002Z","value":0.32467},{"date":"2016-01-22T11:35:46.513060125Z","value":0.8726418713450291},{"date":"2016-01-22T11:35:47.517886249Z","value":1.3917515320334262},{"date":"2016-01-22T11:35:48.545143644Z","value":0.6350480417754569},{"date":"2016-01-22T11:35:49.51710471Z","value":0.6768258823529412},{"date":"2016-01-22T11:35:50.515310196Z","value":0.2458481914893617},{"date":"2016-01-22T11:35:51.53769107Z","value":0.5442765027322405},{"date":"2016-01-22T11:35:52.514344685Z","value":0.3901263043478261},{"date":"2016-01-22T11:35:53.519744671Z","value":1.1145574262734583}],"min":0,"max":400,"first":"2016-01-22T11:35:39.52030943Z","last":"2016-01-22T11:35:53.519744671Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.514598277Z","value":1.019904e+07},{"date":"2016-01-22T11:35:39.52030943Z","value":1.019904e+07},{"date":"2016-01-22T11:35:40.514909926Z","value":1.019904e+07},{"date":"2016-01-22T11:35:41.51683042Z","value":1.019904e+07},{"date":"2016-01-22T11:35:42.517204503Z","value":1.019904e+07},{"date":"2016-01-22T11:35:43.529564608Z","value":1.019904e+07},{"date":"2016-01-22T11:35:44.515449945Z","value":1.019904e+07},{"date":"2016-01-22T11:35:45.520330002Z","value":1.032192e+07},{"date":"2016-01-22T11:35:46.513060125Z","value":1.019904e+07},{"date":"2016-01-22T11:35:47.517886249Z","value":1.019904e+07},{"date":"2016-01-22T11:35:48.545143644Z","value":1.019904e+07},{"date":"2016-01-22T11:35:49.51710471Z","value":1.032192e+07},{"date":"2016-01-22T11:35:50.515310196Z","value":1.019904e+07},{"date":"2016-01-22T11:35:51.53769107Z","value":1.019904e+07},{"date":"2016-01-22T11:35:52.514344685Z","value":1.019904e+07},{"date":"2016-01-22T11:35:53.519744671Z","value":1.0452992e+07}],"min":0,"max":1.0452992e+07,"first":"2016-01-22T11:35:38.514598277Z","last":"2016-01-22T11:35:53.519744671Z"}},"parents":{"container_image":["5c55d192042b9edaf0bd6529daff0931d78446b68ee6e79498ab76bfb28c165d;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"5bcf6b54b9cbe045fb2f04fc75a3de5f6535bb97a35df52fa44e0099939f0d71;\u003ccontainer\u003e":{"id":"5bcf6b54b9cbe045fb2f04fc75a3de5f6535bb97a35df52fa44e0099939f0d71;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.8","172.17.0.8"],"docker_container_ips_with_scopes":[";10.32.0.8","vagrant-ubuntu-vivid-64;172.17.0.8"],"docker_container_ports":["5000/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.90449798Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.903032274Z","value":"/w/w python /home/weave/app.py"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.903032274Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.903032274Z","value":"app.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.903032274Z","value":"5bcf6b54b9cbe045fb2f04fc75a3de5f6535bb97a35df52fa44e0099939f0d71"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.903032274Z","value":"app1"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.903053236Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.904543316Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.904543316Z","value":"222448989584"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.904543316Z","value":"114380000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.904543316Z","value":"91240000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.903032274Z","value":"eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.904543316Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.904543316Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.904543316Z","value":"42237952"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.904543316Z","value":"37408768"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444898Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444898Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.01764887Z","value":"66:c2:7e:aa:4f:cf"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.522445419Z","value":0.4079699731903485},{"date":"2016-01-22T11:35:40.517447322Z","value":0.4176454025974026},{"date":"2016-01-22T11:35:41.513430844Z","value":0.277852188365651},{"date":"2016-01-22T11:35:42.51867508Z","value":0.3849159466666667},{"date":"2016-01-22T11:35:43.524917639Z","value":0.5413919363395225},{"date":"2016-01-22T11:35:44.517638238Z","value":0.4706888172043011},{"date":"2016-01-22T11:35:45.521928738Z","value":0.35729875},{"date":"2016-01-22T11:35:46.513946586Z","value":0.5323568421052632},{"date":"2016-01-22T11:35:47.52663971Z","value":0.3747819498607242},{"date":"2016-01-22T11:35:48.547073768Z","value":0.5093439164490862},{"date":"2016-01-22T11:35:49.518997568Z","value":0.4001035294117647},{"date":"2016-01-22T11:35:50.516585931Z","value":0.37007138297872344},{"date":"2016-01-22T11:35:51.539633338Z","value":0.3000128961748634},{"date":"2016-01-22T11:35:52.51621743Z","value":0.3860254347826087},{"date":"2016-01-22T11:35:53.522131936Z","value":1.0696572654155496}],"min":0,"max":400,"first":"2016-01-22T11:35:39.522445419Z","last":"2016-01-22T11:35:53.522131936Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.516473553Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:39.522445419Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:40.517447322Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:41.513430844Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:42.51867508Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:43.524917639Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:44.517638238Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:45.521928738Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:46.513946586Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:47.52663971Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:48.547073768Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:49.518997568Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:50.516585931Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:51.539633338Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:52.51621743Z","value":3.7408768e+07},{"date":"2016-01-22T11:35:53.522131936Z","value":3.7408768e+07}],"min":0,"max":3.7408768e+07,"first":"2016-01-22T11:35:38.516473553Z","last":"2016-01-22T11:35:53.522131936Z"}},"parents":{"container_image":["eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"6e82afd55f966b074340724d6dfd2a6369421b750745a212b0cbdb93dfbcf207;\u003ccontainer\u003e":{"id":"6e82afd55f966b074340724d6dfd2a6369421b750745a212b0cbdb93dfbcf207;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.901913171Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.901890963Z","value":"/home/weave/weaveproxy -H unix:///var/run/weave/weave.sock -H 127.0.0.1:12375"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.901890963Z","value":"20 Jan 16 10:24 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.901890963Z","value":"vagrant-ubuntu-vivid-64"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.901890963Z","value":"6e82afd55f966b074340724d6dfd2a6369421b750745a212b0cbdb93dfbcf207"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.901890963Z","value":"weaveproxy"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.901902339Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.901925407Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.901925407Z","value":"357389413002"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.901925407Z","value":"93220000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.901925407Z","value":"84850000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.901890963Z","value":"09781bcda1eaf44b2580af50eeefc97d2d5e462d8490d796ee88211a48099e3d"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.901925407Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.901925407Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.901925407Z","value":"18788352"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.901925407Z","value":"3579904"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015311878Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015311878Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.514751607Z","value":0.34166563002680966},{"date":"2016-01-22T11:35:40.520000783Z","value":0.43767896103896103},{"date":"2016-01-22T11:35:41.515495597Z","value":0.26134182825484764},{"date":"2016-01-22T11:35:42.514855868Z","value":0.4068509866666667},{"date":"2016-01-22T11:35:43.526123022Z","value":0.6534890185676392},{"date":"2016-01-22T11:35:44.519026501Z","value":0.9483024731182796},{"date":"2016-01-22T11:35:45.522431657Z","value":0.34173333333333333},{"date":"2016-01-22T11:35:46.515353937Z","value":2.6817506432748535},{"date":"2016-01-22T11:35:47.52783406Z","value":0.8604950417827298},{"date":"2016-01-22T11:35:48.544384704Z","value":0.32829524804177546},{"date":"2016-01-22T11:35:49.516092887Z","value":0.6829699465240642},{"date":"2016-01-22T11:35:50.517031585Z","value":0.43899372340425535},{"date":"2016-01-22T11:35:51.515070467Z","value":0.506052349726776},{"date":"2016-01-22T11:35:52.517694214Z","value":0.9474264130434782},{"date":"2016-01-22T11:35:53.517628611Z","value":0.6597456300268096}],"min":0,"max":400,"first":"2016-01-22T11:35:39.514751607Z","last":"2016-01-22T11:35:53.517628611Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.517664955Z","value":3.579904e+06},{"date":"2016-01-22T11:35:39.514751607Z","value":3.579904e+06},{"date":"2016-01-22T11:35:40.520000783Z","value":3.579904e+06},{"date":"2016-01-22T11:35:41.515495597Z","value":3.579904e+06},{"date":"2016-01-22T11:35:42.514855868Z","value":3.579904e+06},{"date":"2016-01-22T11:35:43.526123022Z","value":3.579904e+06},{"date":"2016-01-22T11:35:44.519026501Z","value":3.579904e+06},{"date":"2016-01-22T11:35:45.522431657Z","value":3.579904e+06},{"date":"2016-01-22T11:35:46.515353937Z","value":3.579904e+06},{"date":"2016-01-22T11:35:47.52783406Z","value":3.579904e+06},{"date":"2016-01-22T11:35:48.544384704Z","value":3.579904e+06},{"date":"2016-01-22T11:35:49.516092887Z","value":3.579904e+06},{"date":"2016-01-22T11:35:50.517031585Z","value":3.579904e+06},{"date":"2016-01-22T11:35:51.515070467Z","value":3.579904e+06},{"date":"2016-01-22T11:35:52.517694214Z","value":3.579904e+06},{"date":"2016-01-22T11:35:53.517628611Z","value":3.579904e+06}],"min":0,"max":3.579904e+06,"first":"2016-01-22T11:35:38.517664955Z","last":"2016-01-22T11:35:53.517628611Z"}},"parents":{"container_image":["09781bcda1eaf44b2580af50eeefc97d2d5e462d8490d796ee88211a48099e3d;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"72a55a13a852c818907f5abd3f1a07197d2e7e6ab6f0225678bc2bc34311d4f5;\u003ccontainer\u003e":{"id":"72a55a13a852c818907f5abd3f1a07197d2e7e6ab6f0225678bc2bc34311d4f5;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.7","172.17.0.7"],"docker_container_ips_with_scopes":[";10.32.0.7","vagrant-ubuntu-vivid-64;172.17.0.7"],"docker_container_ports":["5000/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.90251894Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902493057Z","value":"/w/w python /home/weave/echo.py"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902493057Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902493057Z","value":"echo.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902493057Z","value":"72a55a13a852c818907f5abd3f1a07197d2e7e6ab6f0225678bc2bc34311d4f5"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902493057Z","value":"echo1"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902507118Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902526378Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902526378Z","value":"205310679167"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902526378Z","value":"95940000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902526378Z","value":"78000000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902493057Z","value":"635b96f5595757f6171f8decec17897234c7a8c1b51aea830a3f31a9ff71fbcb"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902526378Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902526378Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902526378Z","value":"42369024"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902526378Z","value":"27844608"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015378244Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015378244Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.017491517Z","value":"2e:1e:4c:06:73:74"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.521057559Z","value":0.4021639678284182},{"date":"2016-01-22T11:35:40.515557607Z","value":0.20268114285714287},{"date":"2016-01-22T11:35:41.517117329Z","value":0.22041905817174515},{"date":"2016-01-22T11:35:42.51744706Z","value":0.41502506666666666},{"date":"2016-01-22T11:35:43.529746347Z","value":0.35182716180371354},{"date":"2016-01-22T11:35:44.515952473Z","value":0.6040718279569893},{"date":"2016-01-22T11:35:45.520748109Z","value":0.2847965625},{"date":"2016-01-22T11:35:46.513154178Z","value":0.5908240935672515},{"date":"2016-01-22T11:35:47.523886568Z","value":0.44992178272980504},{"date":"2016-01-22T11:35:48.545254363Z","value":0.5630106527415144},{"date":"2016-01-22T11:35:49.517339441Z","value":0.320003743315508},{"date":"2016-01-22T11:35:50.515622646Z","value":0.27168191489361704},{"date":"2016-01-22T11:35:51.538600998Z","value":0.22123191256830602},{"date":"2016-01-22T11:35:52.514512706Z","value":0.3631421739130435},{"date":"2016-01-22T11:35:53.520065986Z","value":0.4368963002680965}],"min":0,"max":400,"first":"2016-01-22T11:35:39.521057559Z","last":"2016-01-22T11:35:53.520065986Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.51526201Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:39.521057559Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:40.515557607Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:41.517117329Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:42.51744706Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:43.529746347Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:44.515952473Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:45.520748109Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:46.513154178Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:47.523886568Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:48.545254363Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:49.517339441Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:50.515622646Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:51.538600998Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:52.514512706Z","value":2.7844608e+07},{"date":"2016-01-22T11:35:53.520065986Z","value":2.7844608e+07}],"min":0,"max":2.7844608e+07,"first":"2016-01-22T11:35:38.51526201Z","last":"2016-01-22T11:35:53.520065986Z"}},"parents":{"container_image":["635b96f5595757f6171f8decec17897234c7a8c1b51aea830a3f31a9ff71fbcb;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"8b5a69cd1adbd91949a62f593e606c609cd2f3aba3ae63053976d409aafb7024;\u003ccontainer\u003e":{"id":"8b5a69cd1adbd91949a62f593e606c609cd2f3aba3ae63053976d409aafb7024;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902790041Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902757174Z","value":"/home/weave/weaver --port 6783 --name aa:59:c3:4a:53:61 --nickname vagrant-ubuntu-vivid-64 --datapath datapath --ipalloc-range 10.32.0.0/12 --dns-effective-listen-address 172.17.0.1 --dns-listen-address 172.17.0.1:53 --http-addr 127.0.0.1:6784 --docker-api unix:///var/run/docker.sock"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902757174Z","value":"20 Jan 16 10:24 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902757174Z","value":"vagrant-ubuntu-vivid-64"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902757174Z","value":"8b5a69cd1adbd91949a62f593e606c609cd2f3aba3ae63053976d409aafb7024"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902757174Z","value":"weave"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902771852Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902804962Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902804962Z","value":"709862009001"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902804962Z","value":"217160000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902804962Z","value":"161710000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902757174Z","value":"ca6b2c6df722a6e4eaca4356cd20149dcb0fee804cb6ed0b16e125dcde416e87"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902804962Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902804962Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902804962Z","value":"56963072"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902804962Z","value":"50839552"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444922Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444922Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.515412738Z","value":1.0280540482573728},{"date":"2016-01-22T11:35:40.518509045Z","value":0.3201979220779221},{"date":"2016-01-22T11:35:41.51582192Z","value":1.4200776731301938},{"date":"2016-01-22T11:35:42.515247453Z","value":0.47448544},{"date":"2016-01-22T11:35:43.526424622Z","value":1.6990615384615386},{"date":"2016-01-22T11:35:44.518176783Z","value":1.327214193548387},{"date":"2016-01-22T11:35:45.52269039Z","value":1.358561875},{"date":"2016-01-22T11:35:46.516049382Z","value":2.9895738011695907},{"date":"2016-01-22T11:35:47.528027358Z","value":2.861178495821727},{"date":"2016-01-22T11:35:48.517029901Z","value":1.4708834464751959},{"date":"2016-01-22T11:35:49.516334679Z","value":2.0452010695187166},{"date":"2016-01-22T11:35:50.517272412Z","value":1.2315090425531914},{"date":"2016-01-22T11:35:51.515528687Z","value":0.923452786885246},{"date":"2016-01-22T11:35:52.517766562Z","value":0.959651847826087},{"date":"2016-01-22T11:35:53.513633293Z","value":2.120544986595174}],"min":0,"max":400,"first":"2016-01-22T11:35:39.515412738Z","last":"2016-01-22T11:35:53.513633293Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.518099328Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:39.515412738Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:40.518509045Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:41.51582192Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:42.515247453Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:43.526424622Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:44.518176783Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:45.52269039Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:46.516049382Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:47.528027358Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:48.517029901Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:49.516334679Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:50.517272412Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:51.515528687Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:52.517766562Z","value":5.0839552e+07},{"date":"2016-01-22T11:35:53.513633293Z","value":5.0839552e+07}],"min":0,"max":5.0839552e+07,"first":"2016-01-22T11:35:38.518099328Z","last":"2016-01-22T11:35:53.513633293Z"}},"parents":{"container_image":["ca6b2c6df722a6e4eaca4356cd20149dcb0fee804cb6ed0b16e125dcde416e87;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"8c2c6085895663514c6622a7e4c1ed107479c0e0062ad70cb7f95a0f769d5e01;\u003ccontainer\u003e":{"id":"8c2c6085895663514c6622a7e4c1ed107479c0e0062ad70cb7f95a0f769d5e01;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.5","172.17.0.5"],"docker_container_ips_with_scopes":[";10.32.0.5","vagrant-ubuntu-vivid-64;172.17.0.5"],"docker_container_ports":["6379/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902098385Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902071007Z","value":"/w/w /entrypoint.sh redis-server"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902071007Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902071007Z","value":"redis.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902071007Z","value":"8c2c6085895663514c6622a7e4c1ed107479c0e0062ad70cb7f95a0f769d5e01"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902071007Z","value":"redis1"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902087078Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902105519Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902105519Z","value":"215513521410"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902105519Z","value":"57540000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902105519Z","value":"68450000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902071007Z","value":"8bccd73928d93c54f3f5e1638a8f45d2cc359f2c3697a5ee6f62e12b4f3049fb"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902105519Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902105519Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902105519Z","value":"17727488"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902105519Z","value":"6598656"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444872Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444872Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.017591294Z","value":"6e:34:af:cd:1c:a1"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.517859922Z","value":0.3216158713136729},{"date":"2016-01-22T11:35:40.516004114Z","value":0.1495043116883117},{"date":"2016-01-22T11:35:41.517393109Z","value":0.21492886426592797},{"date":"2016-01-22T11:35:42.516229487Z","value":0.4193072},{"date":"2016-01-22T11:35:43.52878482Z","value":0.3047052519893899},{"date":"2016-01-22T11:35:44.51620439Z","value":0.39841806451612904},{"date":"2016-01-22T11:35:45.521123549Z","value":0.3556930208333334},{"date":"2016-01-22T11:35:46.513420761Z","value":0.8376225730994151},{"date":"2016-01-22T11:35:47.513160717Z","value":0.2985059610027855},{"date":"2016-01-22T11:35:48.545890354Z","value":0.7885301305483029},{"date":"2016-01-22T11:35:49.517510583Z","value":0.44487122994652406},{"date":"2016-01-22T11:35:50.515862145Z","value":0.14136617021276596},{"date":"2016-01-22T11:35:51.539004592Z","value":0.25067497267759564},{"date":"2016-01-22T11:35:52.513241932Z","value":0.38953065217391303},{"date":"2016-01-22T11:35:53.520869112Z","value":0.6376994101876676}],"min":0,"max":400,"first":"2016-01-22T11:35:39.517859922Z","last":"2016-01-22T11:35:53.520869112Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.515650496Z","value":6.598656e+06},{"date":"2016-01-22T11:35:39.517859922Z","value":6.598656e+06},{"date":"2016-01-22T11:35:40.516004114Z","value":6.598656e+06},{"date":"2016-01-22T11:35:41.517393109Z","value":6.598656e+06},{"date":"2016-01-22T11:35:42.516229487Z","value":6.598656e+06},{"date":"2016-01-22T11:35:43.52878482Z","value":6.598656e+06},{"date":"2016-01-22T11:35:44.51620439Z","value":6.598656e+06},{"date":"2016-01-22T11:35:45.521123549Z","value":6.598656e+06},{"date":"2016-01-22T11:35:46.513420761Z","value":6.598656e+06},{"date":"2016-01-22T11:35:47.513160717Z","value":6.598656e+06},{"date":"2016-01-22T11:35:48.545890354Z","value":6.598656e+06},{"date":"2016-01-22T11:35:49.517510583Z","value":6.598656e+06},{"date":"2016-01-22T11:35:50.515862145Z","value":6.598656e+06},{"date":"2016-01-22T11:35:51.539004592Z","value":6.598656e+06},{"date":"2016-01-22T11:35:52.513241932Z","value":6.598656e+06},{"date":"2016-01-22T11:35:53.520869112Z","value":6.598656e+06}],"min":0,"max":6.598656e+06,"first":"2016-01-22T11:35:38.515650496Z","last":"2016-01-22T11:35:53.520869112Z"}},"parents":{"container_image":["8bccd73928d93c54f3f5e1638a8f45d2cc359f2c3697a5ee6f62e12b4f3049fb;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"ba8306aa0932476cf07beb82c28dfe69955ca2711f968462b5661d820aa7896e;\u003ccontainer\u003e":{"id":"ba8306aa0932476cf07beb82c28dfe69955ca2711f968462b5661d820aa7896e;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902006233Z","controls":["docker_start_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.901983266Z","value":"/build.sh SCOPE_VERSION=bfa40f9 GO_BUILD_INSTALL_DEPS=-i prog/scope"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.901983266Z","value":"20 Jan 16 13:18 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.901983266Z","value":"ba8306aa0932"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.901983266Z","value":"ba8306aa0932476cf07beb82c28dfe69955ca2711f968462b5661d820aa7896e"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.901983266Z","value":"condescending_blackwell"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.901994676Z","value":"stopped"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.901983266Z","value":"92ad3d6bb1eb6a53def26d21ac6fba98813698ab822b97d26b9770626f3c2516"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015378241Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015378241Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[],"min":0,"max":0},"docker_memory_usage":{"samples":[],"min":0,"max":0}},"parents":{"container_image":["92ad3d6bb1eb6a53def26d21ac6fba98813698ab822b97d26b9770626f3c2516;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"bd03ef4510c87453385906a5b4b9745af9c6b76d8496a452277d2c40d8f22b22;\u003ccontainer\u003e":{"id":"bd03ef4510c87453385906a5b4b9745af9c6b76d8496a452277d2c40d8f22b22;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.6","172.17.0.6"],"docker_container_ips_with_scopes":[";10.32.0.6","vagrant-ubuntu-vivid-64;172.17.0.6"],"docker_container_ports":["4446/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.901787475Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.901745211Z","value":"/w/w /home/weave/qotd"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.901745211Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.901745211Z","value":"qotd.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.901745211Z","value":"bd03ef4510c87453385906a5b4b9745af9c6b76d8496a452277d2c40d8f22b22"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.901745211Z","value":"qotd1"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.90177034Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.901797196Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.901797196Z","value":"2539902225"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.901797196Z","value":"2880000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.901797196Z","value":"90000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.901745211Z","value":"85922e1d96d67b3aaeea8314084ea80f0574786af1da688de631a1f06654da91"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.901797196Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.901797196Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.901797196Z","value":"84426752"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.901797196Z","value":"84213760"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01537825Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01537825Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.017509056Z","value":"b2:4e:72:a5:64:f0"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.516581194Z","value":0},{"date":"2016-01-22T11:35:40.513396002Z","value":0},{"date":"2016-01-22T11:35:41.516191211Z","value":0},{"date":"2016-01-22T11:35:42.515664804Z","value":0},{"date":"2016-01-22T11:35:43.52755343Z","value":0},{"date":"2016-01-22T11:35:44.514369532Z","value":0},{"date":"2016-01-22T11:35:45.534138189Z","value":0},{"date":"2016-01-22T11:35:46.516660895Z","value":0},{"date":"2016-01-22T11:35:47.529196367Z","value":0},{"date":"2016-01-22T11:35:48.544648694Z","value":0},{"date":"2016-01-22T11:35:49.516626022Z","value":0},{"date":"2016-01-22T11:35:50.513454805Z","value":0},{"date":"2016-01-22T11:35:51.515766209Z","value":0},{"date":"2016-01-22T11:35:52.519529444Z","value":0},{"date":"2016-01-22T11:35:53.518359136Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.516581194Z","last":"2016-01-22T11:35:53.518359136Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.518748058Z","value":8.421376e+07},{"date":"2016-01-22T11:35:39.516581194Z","value":8.421376e+07},{"date":"2016-01-22T11:35:40.513396002Z","value":8.421376e+07},{"date":"2016-01-22T11:35:41.516191211Z","value":8.421376e+07},{"date":"2016-01-22T11:35:42.515664804Z","value":8.421376e+07},{"date":"2016-01-22T11:35:43.52755343Z","value":8.421376e+07},{"date":"2016-01-22T11:35:44.514369532Z","value":8.421376e+07},{"date":"2016-01-22T11:35:45.534138189Z","value":8.421376e+07},{"date":"2016-01-22T11:35:46.516660895Z","value":8.421376e+07},{"date":"2016-01-22T11:35:47.529196367Z","value":8.421376e+07},{"date":"2016-01-22T11:35:48.544648694Z","value":8.421376e+07},{"date":"2016-01-22T11:35:49.516626022Z","value":8.421376e+07},{"date":"2016-01-22T11:35:50.513454805Z","value":8.421376e+07},{"date":"2016-01-22T11:35:51.515766209Z","value":8.421376e+07},{"date":"2016-01-22T11:35:52.519529444Z","value":8.421376e+07},{"date":"2016-01-22T11:35:53.518359136Z","value":8.421376e+07}],"min":0,"max":8.421376e+07,"first":"2016-01-22T11:35:38.518748058Z","last":"2016-01-22T11:35:53.518359136Z"}},"parents":{"container_image":["85922e1d96d67b3aaeea8314084ea80f0574786af1da688de631a1f06654da91;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"bd366e2994ae4417247a80b04c82072b52efbfeb43236b3c43465e9a4d6a4759;\u003ccontainer\u003e":{"id":"bd366e2994ae4417247a80b04c82072b52efbfeb43236b3c43465e9a4d6a4759;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.4","172.17.0.4"],"docker_container_ips_with_scopes":[";10.32.0.4","vagrant-ubuntu-vivid-64;172.17.0.4"],"docker_container_ports":["8080/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902153965Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902126781Z","value":"/w/w /home/weave/entrypoint.sh"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902126781Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902126781Z","value":"searchapp.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902126781Z","value":"bd366e2994ae4417247a80b04c82072b52efbfeb43236b3c43465e9a4d6a4759"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902126781Z","value":"searchapp2"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902140572Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902162136Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902162136Z","value":"4078763702"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902162136Z","value":"1470000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902162136Z","value":"1870000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902126781Z","value":"e937db5a3120c83115dc47e20c9b960503f612848daed7c6e0739b10372fb5db"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902162136Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902162136Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902162136Z","value":"6635520"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902162136Z","value":"2207744"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444942Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444942Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.01768168Z","value":"fa:ac:90:72:9d:70"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.519657447Z","value":0},{"date":"2016-01-22T11:35:40.516599347Z","value":0},{"date":"2016-01-22T11:35:41.51774317Z","value":0},{"date":"2016-01-22T11:35:42.51706594Z","value":0},{"date":"2016-01-22T11:35:43.52918757Z","value":0},{"date":"2016-01-22T11:35:44.51648835Z","value":0},{"date":"2016-01-22T11:35:45.519800854Z","value":0},{"date":"2016-01-22T11:35:46.51362178Z","value":0},{"date":"2016-01-22T11:35:47.513899793Z","value":0},{"date":"2016-01-22T11:35:48.546274433Z","value":0},{"date":"2016-01-22T11:35:49.517748044Z","value":0},{"date":"2016-01-22T11:35:50.514905474Z","value":0},{"date":"2016-01-22T11:35:51.539122142Z","value":0},{"date":"2016-01-22T11:35:52.514202984Z","value":0},{"date":"2016-01-22T11:35:53.521031639Z","value":0}],"min":0,"max":400,"first":"2016-01-22T11:35:39.519657447Z","last":"2016-01-22T11:35:53.521031639Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.515928307Z","value":2.207744e+06},{"date":"2016-01-22T11:35:39.519657447Z","value":2.207744e+06},{"date":"2016-01-22T11:35:40.516599347Z","value":2.207744e+06},{"date":"2016-01-22T11:35:41.51774317Z","value":2.207744e+06},{"date":"2016-01-22T11:35:42.51706594Z","value":2.207744e+06},{"date":"2016-01-22T11:35:43.52918757Z","value":2.207744e+06},{"date":"2016-01-22T11:35:44.51648835Z","value":2.207744e+06},{"date":"2016-01-22T11:35:45.519800854Z","value":2.207744e+06},{"date":"2016-01-22T11:35:46.51362178Z","value":2.207744e+06},{"date":"2016-01-22T11:35:47.513899793Z","value":2.207744e+06},{"date":"2016-01-22T11:35:48.546274433Z","value":2.207744e+06},{"date":"2016-01-22T11:35:49.517748044Z","value":2.207744e+06},{"date":"2016-01-22T11:35:50.514905474Z","value":2.207744e+06},{"date":"2016-01-22T11:35:51.539122142Z","value":2.207744e+06},{"date":"2016-01-22T11:35:52.514202984Z","value":2.207744e+06},{"date":"2016-01-22T11:35:53.521031639Z","value":2.207744e+06}],"min":0,"max":2.207744e+06,"first":"2016-01-22T11:35:38.515928307Z","last":"2016-01-22T11:35:53.521031639Z"}},"parents":{"container_image":["e937db5a3120c83115dc47e20c9b960503f612848daed7c6e0739b10372fb5db;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"beb8197891ad98248d5d0cd2dc8c483e0573322043b59d2bd5e06d0858e60318;\u003ccontainer\u003e":{"id":"beb8197891ad98248d5d0cd2dc8c483e0573322043b59d2bd5e06d0858e60318;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.901878996Z","controls":["docker_start_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.901857082Z","value":"/w/w nginx -g daemon off;"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.901857082Z","value":"15 Jan 16 15:25 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.901857082Z","value":"nginx.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.901857082Z","value":"beb8197891ad98248d5d0cd2dc8c483e0573322043b59d2bd5e06d0858e60318"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.901857082Z","value":"nginx"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.901868483Z","value":"stopped"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.901857082Z","value":"407195ab8b072ce8b237f664b8d032704e8047b8e64139cc2e017163f7161647"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444934Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444934Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[],"min":0,"max":0},"docker_memory_usage":{"samples":[],"min":0,"max":0}},"parents":{"container_image":["407195ab8b072ce8b237f664b8d032704e8047b8e64139cc2e017163f7161647;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16;\u003ccontainer\u003e":{"id":"bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":["10.32.0.11","172.17.0.11"],"docker_container_ips_with_scopes":[";10.32.0.11","vagrant-ubuntu-vivid-64;172.17.0.11"],"docker_container_ports":["80/tcp"]},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902398077Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902369599Z","value":"/w/w nginx -g daemon off;"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902369599Z","value":"20 Jan 16 10:27 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902369599Z","value":"frontend.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902369599Z","value":"bf2d526a4e405b1f891c93b957602a714077ddbdfc67fc164162cf21d1fc8a16"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902369599Z","value":"frontend2"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902383339Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902407102Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902407102Z","value":"89526002604"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902407102Z","value":"31580000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902407102Z","value":"10600000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902369599Z","value":"e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902407102Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902407102Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902407102Z","value":"5734400"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902407102Z","value":"3096576"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015378256Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015378256Z","value":"1b9ffd17afe8a77e"},"weave_mac_address":{"timestamp":"2016-01-22T11:35:54.017538358Z","value":"de:37:f2:13:fe:f9"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.515716942Z","value":0.2482002144772118},{"date":"2016-01-22T11:35:40.518938576Z","value":0.21209984415584415},{"date":"2016-01-22T11:35:41.514172297Z","value":0.028762991689750696},{"date":"2016-01-22T11:35:42.515382794Z","value":0.1329312},{"date":"2016-01-22T11:35:43.526635972Z","value":0.22542132625994696},{"date":"2016-01-22T11:35:44.518364225Z","value":0.07927591397849462},{"date":"2016-01-22T11:35:45.532968822Z","value":0.27291895833333335},{"date":"2016-01-22T11:35:46.514796846Z","value":0.17148269005847955},{"date":"2016-01-22T11:35:47.528393288Z","value":0.1431766016713092},{"date":"2016-01-22T11:35:48.517868298Z","value":0.0425378590078329},{"date":"2016-01-22T11:35:49.515268348Z","value":0.08900812834224599},{"date":"2016-01-22T11:35:50.517502472Z","value":0.3064084042553191},{"date":"2016-01-22T11:35:51.513653452Z","value":0.023247213114754098},{"date":"2016-01-22T11:35:52.518590998Z","value":0.2815451086956522},{"date":"2016-01-22T11:35:53.51417919Z","value":0.5805713672922252}],"min":0,"max":400,"first":"2016-01-22T11:35:39.515716942Z","last":"2016-01-22T11:35:53.51417919Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.516970707Z","value":3.096576e+06},{"date":"2016-01-22T11:35:39.515716942Z","value":3.096576e+06},{"date":"2016-01-22T11:35:40.518938576Z","value":3.096576e+06},{"date":"2016-01-22T11:35:41.514172297Z","value":3.096576e+06},{"date":"2016-01-22T11:35:42.515382794Z","value":3.096576e+06},{"date":"2016-01-22T11:35:43.526635972Z","value":3.096576e+06},{"date":"2016-01-22T11:35:44.518364225Z","value":3.096576e+06},{"date":"2016-01-22T11:35:45.532968822Z","value":3.096576e+06},{"date":"2016-01-22T11:35:46.514796846Z","value":3.096576e+06},{"date":"2016-01-22T11:35:47.528393288Z","value":3.096576e+06},{"date":"2016-01-22T11:35:48.517868298Z","value":3.096576e+06},{"date":"2016-01-22T11:35:49.515268348Z","value":3.096576e+06},{"date":"2016-01-22T11:35:50.517502472Z","value":3.096576e+06},{"date":"2016-01-22T11:35:51.513653452Z","value":3.096576e+06},{"date":"2016-01-22T11:35:52.518590998Z","value":3.096576e+06},{"date":"2016-01-22T11:35:53.51417919Z","value":3.096576e+06}],"min":0,"max":3.096576e+06,"first":"2016-01-22T11:35:38.516970707Z","last":"2016-01-22T11:35:53.51417919Z"}},"parents":{"container_image":["e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e":{"id":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902874603Z","controls":["docker_attach_container","docker_exec_container","docker_pause_container","docker_restart_container","docker_stop_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902830254Z","value":"/home/weave/entrypoint.sh --probe.docker true"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902830254Z","value":"22 Jan 16 11:30 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902830254Z","value":"vagrant-ubuntu-vivid-64"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902830254Z","value":"c887f8b706b76c5e418e99404ccea84fb19a8edde39eb621dd40f9bd624f9739"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902830254Z","value":"weavescope"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902851833Z","value":"running"},"docker_cpu_system_cpu_usage":{"timestamp":"2016-01-22T11:35:53.902897452Z","value":"237230590000000"},"docker_cpu_total_usage":{"timestamp":"2016-01-22T11:35:53.902897452Z","value":"134931056861"},"docker_cpu_usage_in_kernelmode":{"timestamp":"2016-01-22T11:35:53.902897452Z","value":"37290000000"},"docker_cpu_usage_in_usermode":{"timestamp":"2016-01-22T11:35:53.902897452Z","value":"74510000000"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902830254Z","value":"3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148"},"docker_memory_failcnt":{"timestamp":"2016-01-22T11:35:53.902897452Z","value":"0"},"docker_memory_limit":{"timestamp":"2016-01-22T11:35:53.902897452Z","value":"2097909760"},"docker_memory_max_usage":{"timestamp":"2016-01-22T11:35:53.902897452Z","value":"78581760"},"docker_memory_usage":{"timestamp":"2016-01-22T11:35:53.902897452Z","value":"72421376"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015378235Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015378235Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[{"date":"2016-01-22T11:35:39.522069821Z","value":54.39443935656837},{"date":"2016-01-22T11:35:40.517033574Z","value":38.63773714285714},{"date":"2016-01-22T11:35:41.513185426Z","value":68.88332221606647},{"date":"2016-01-22T11:35:42.518397707Z","value":23.342896746666668},{"date":"2016-01-22T11:35:43.524679786Z","value":113.92734843501327},{"date":"2016-01-22T11:35:44.516712682Z","value":14.929541182795699},{"date":"2016-01-22T11:35:45.521683253Z","value":12.023305416666668},{"date":"2016-01-22T11:35:46.513907064Z","value":188.80450713450293},{"date":"2016-01-22T11:35:47.52625717Z","value":114.92599175487466},{"date":"2016-01-22T11:35:48.546737024Z","value":84.92019937336815},{"date":"2016-01-22T11:35:49.518001373Z","value":76.69307604278075},{"date":"2016-01-22T11:35:50.516223267Z","value":14.66614010638298},{"date":"2016-01-22T11:35:51.539262932Z","value":70.8444262295082},{"date":"2016-01-22T11:35:52.515540949Z","value":35.222635108695656},{"date":"2016-01-22T11:35:53.521337352Z","value":39.939440536193025}],"min":0,"max":400,"first":"2016-01-22T11:35:39.522069821Z","last":"2016-01-22T11:35:53.521337352Z"},"docker_memory_usage":{"samples":[{"date":"2016-01-22T11:35:38.5161921Z","value":7.2167424e+07},{"date":"2016-01-22T11:35:39.522069821Z","value":7.256064e+07},{"date":"2016-01-22T11:35:40.517033574Z","value":7.231488e+07},{"date":"2016-01-22T11:35:41.513185426Z","value":7.4133504e+07},{"date":"2016-01-22T11:35:42.518397707Z","value":7.243776e+07},{"date":"2016-01-22T11:35:43.524679786Z","value":7.2708096e+07},{"date":"2016-01-22T11:35:44.516712682Z","value":7.2368128e+07},{"date":"2016-01-22T11:35:45.521683253Z","value":7.2368128e+07},{"date":"2016-01-22T11:35:46.513907064Z","value":7.41376e+07},{"date":"2016-01-22T11:35:47.52625717Z","value":7.407616e+07},{"date":"2016-01-22T11:35:48.546737024Z","value":7.2593408e+07},{"date":"2016-01-22T11:35:49.518001373Z","value":7.2536064e+07},{"date":"2016-01-22T11:35:50.516223267Z","value":7.2413184e+07},{"date":"2016-01-22T11:35:51.539262932Z","value":7.2413184e+07},{"date":"2016-01-22T11:35:52.515540949Z","value":7.2544256e+07},{"date":"2016-01-22T11:35:53.521337352Z","value":7.2421376e+07}],"min":0,"max":7.41376e+07,"first":"2016-01-22T11:35:38.5161921Z","last":"2016-01-22T11:35:53.521337352Z"}},"parents":{"container_image":["3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"d48a7db1a62aa036d52c675963a94146c476adfb4fcc64606e28663eaead0a2d;\u003ccontainer\u003e":{"id":"d48a7db1a62aa036d52c675963a94146c476adfb4fcc64606e28663eaead0a2d;\u003ccontainer\u003e","topology":"container","counters":{},"sets":{"docker_container_ips":[""],"docker_container_ips_with_scopes":["vagrant-ubuntu-vivid-64;"],"docker_container_ports":null},"adjacency":null,"controls":{"timestamp":"2016-01-22T11:35:53.902319608Z","controls":["docker_start_container"]},"latest":{"docker_container_command":{"timestamp":"2016-01-22T11:35:53.902279076Z","value":"/w/w nginx -g daemon off;"},"docker_container_created":{"timestamp":"2016-01-22T11:35:53.902279076Z","value":"15 Jan 16 15:53 UTC"},"docker_container_hostname":{"timestamp":"2016-01-22T11:35:53.902279076Z","value":"alpine.weave.local"},"docker_container_id":{"timestamp":"2016-01-22T11:35:53.902279076Z","value":"d48a7db1a62aa036d52c675963a94146c476adfb4fcc64606e28663eaead0a2d"},"docker_container_name":{"timestamp":"2016-01-22T11:35:53.902279076Z","value":"alpine3"},"docker_container_state":{"timestamp":"2016-01-22T11:35:53.902279857Z","value":"stopped"},"docker_image_id":{"timestamp":"2016-01-22T11:35:53.902279076Z","value":"407195ab8b072ce8b237f664b8d032704e8047b8e64139cc2e017163f7161647"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015365399Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015365399Z","value":"1b9ffd17afe8a77e"}},"metrics":{"docker_cpu_total_usage":{"samples":[],"min":0,"max":0},"docker_memory_usage":{"samples":[],"min":0,"max":0}},"parents":{"container_image":["407195ab8b072ce8b237f664b8d032704e8047b8e64139cc2e017163f7161647;\u003ccontainer_image\u003e"],"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}}},"controls":{"docker_attach_container":{"id":"docker_attach_container","human":"Attach","icon":"fa-desktop"},"docker_exec_container":{"id":"docker_exec_container","human":"Exec /bin/sh","icon":"fa-terminal"},"docker_pause_container":{"id":"docker_pause_container","human":"Pause","icon":"fa-pause"},"docker_restart_container":{"id":"docker_restart_container","human":"Restart","icon":"fa-repeat"},"docker_start_container":{"id":"docker_start_container","human":"Start","icon":"fa-play"},"docker_stop_container":{"id":"docker_stop_container","human":"Stop","icon":"fa-stop"},"docker_unpause_container":{"id":"docker_unpause_container","human":"Unpause","icon":"fa-play"}}},"Pod":{"nodes":{}},"Service":{"nodes":{}},"ContainerImage":{"nodes":{"09781bcda1eaf44b2580af50eeefc97d2d5e462d8490d796ee88211a48099e3d;\u003ccontainer_image\u003e":{"id":"09781bcda1eaf44b2580af50eeefc97d2d5e462d8490d796ee88211a48099e3d;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904843321Z","value":"09781bcda1eaf44b2580af50eeefc97d2d5e462d8490d796ee88211a48099e3d"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904858268Z","value":"weaveworks/weaveexec:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444969Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444969Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"1814dfe0177cbba933db56982b6ace04f848f7222857c51442f3380ac3fa39c5;\u003ccontainer_image\u003e":{"id":"1814dfe0177cbba933db56982b6ace04f848f7222857c51442f3380ac3fa39c5;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.905045834Z","value":"1814dfe0177cbba933db56982b6ace04f848f7222857c51442f3380ac3fa39c5"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.905052506Z","value":"weaveworks/scope-ui-build:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444948Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444948Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e":{"id":"3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904651104Z","value":"3d866b7b255cd37bcd0dc37d500e86e5b84a11f78ac95846d6cfbcd34b46a148"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904667053Z","value":"weaveworks/scope:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444975Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444975Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"407195ab8b072ce8b237f664b8d032704e8047b8e64139cc2e017163f7161647;\u003ccontainer_image\u003e":{"id":"407195ab8b072ce8b237f664b8d032704e8047b8e64139cc2e017163f7161647;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904886993Z","value":"407195ab8b072ce8b237f664b8d032704e8047b8e64139cc2e017163f7161647"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904892954Z","value":"nginx:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444957Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444957Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"5c55d192042b9edaf0bd6529daff0931d78446b68ee6e79498ab76bfb28c165d;\u003ccontainer_image\u003e":{"id":"5c55d192042b9edaf0bd6529daff0931d78446b68ee6e79498ab76bfb28c165d;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.90480876Z","value":"5c55d192042b9edaf0bd6529daff0931d78446b68ee6e79498ab76bfb28c165d"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904814884Z","value":"tomwilkie/client:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444978Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444978Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"635b96f5595757f6171f8decec17897234c7a8c1b51aea830a3f31a9ff71fbcb;\u003ccontainer_image\u003e":{"id":"635b96f5595757f6171f8decec17897234c7a8c1b51aea830a3f31a9ff71fbcb;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904967373Z","value":"635b96f5595757f6171f8decec17897234c7a8c1b51aea830a3f31a9ff71fbcb"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904972576Z","value":"tomwilkie/echo:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444954Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444954Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"74e49af2062e222ae048b926d139296f4842db5cf6fa67884ba178edd92d84ac;\u003ccontainer_image\u003e":{"id":"74e49af2062e222ae048b926d139296f4842db5cf6fa67884ba178edd92d84ac;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904912373Z","value":"74e49af2062e222ae048b926d139296f4842db5cf6fa67884ba178edd92d84ac"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904918995Z","value":"alpine:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444951Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444951Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"85922e1d96d67b3aaeea8314084ea80f0574786af1da688de631a1f06654da91;\u003ccontainer_image\u003e":{"id":"85922e1d96d67b3aaeea8314084ea80f0574786af1da688de631a1f06654da91;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904744259Z","value":"85922e1d96d67b3aaeea8314084ea80f0574786af1da688de631a1f06654da91"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904749298Z","value":"tomwilkie/qotd:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444966Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444966Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"8bccd73928d93c54f3f5e1638a8f45d2cc359f2c3697a5ee6f62e12b4f3049fb;\u003ccontainer_image\u003e":{"id":"8bccd73928d93c54f3f5e1638a8f45d2cc359f2c3697a5ee6f62e12b4f3049fb;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.90482278Z","value":"8bccd73928d93c54f3f5e1638a8f45d2cc359f2c3697a5ee6f62e12b4f3049fb"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904827488Z","value":"redis:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444981Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444981Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"92ad3d6bb1eb6a53def26d21ac6fba98813698ab822b97d26b9770626f3c2516;\u003ccontainer_image\u003e":{"id":"92ad3d6bb1eb6a53def26d21ac6fba98813698ab822b97d26b9770626f3c2516;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.905026433Z","value":"92ad3d6bb1eb6a53def26d21ac6fba98813698ab822b97d26b9770626f3c2516"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.905032872Z","value":"weaveworks/scope-backend-build:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01544496Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01544496Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"bb87ed563fee1e1f94f0959b653fc85c6ae4cd0f00cb07d29d76f815acaa7b19;\u003ccontainer_image\u003e":{"id":"bb87ed563fee1e1f94f0959b653fc85c6ae4cd0f00cb07d29d76f815acaa7b19;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904997017Z","value":"bb87ed563fee1e1f94f0959b653fc85c6ae4cd0f00cb07d29d76f815acaa7b19"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.90500732Z","value":"elasticsearch:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444987Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444987Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"ca6b2c6df722a6e4eaca4356cd20149dcb0fee804cb6ed0b16e125dcde416e87;\u003ccontainer_image\u003e":{"id":"ca6b2c6df722a6e4eaca4356cd20149dcb0fee804cb6ed0b16e125dcde416e87;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904724989Z","value":"ca6b2c6df722a6e4eaca4356cd20149dcb0fee804cb6ed0b16e125dcde416e87"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904736975Z","value":"weaveworks/weave:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444972Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444972Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e":{"id":"e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904947778Z","value":"e1268df36ab2ae80f2d08210c834cccd40f1e4f3427783ad786d130cb55d3046"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904953733Z","value":"tomwilkie/frontend:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444945Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444945Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"e937db5a3120c83115dc47e20c9b960503f612848daed7c6e0739b10372fb5db;\u003ccontainer_image\u003e":{"id":"e937db5a3120c83115dc47e20c9b960503f612848daed7c6e0739b10372fb5db;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904979575Z","value":"e937db5a3120c83115dc47e20c9b960503f612848daed7c6e0739b10372fb5db"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904984221Z","value":"tomwilkie/searchapp:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444963Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444963Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}},"eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b;\u003ccontainer_image\u003e":{"id":"eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b;\u003ccontainer_image\u003e","topology":"container_image","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"docker_image_id":{"timestamp":"2016-01-22T11:35:53.904690474Z","value":"eaeabcbccade9b8beaa65ea2997d584551656e5a6f4b355b399673e0ce5bdd0b"},"docker_image_name":{"timestamp":"2016-01-22T11:35:53.904694383Z","value":"tomwilkie/app:latest"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444984Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444984Z","value":"1b9ffd17afe8a77e"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}}}},"Host":{"nodes":{"vagrant-ubuntu-vivid-64;\u003chost\u003e":{"id":"vagrant-ubuntu-vivid-64;\u003chost\u003e","topology":"host","counters":{},"sets":{"local_networks":["10.0.2.15/24","10.32.0.1/12","127.0.0.1/8","172.16.0.3/24","172.17.0.1/16","172.18.0.1/16","::1/128","fe80::24cf:8bff:fe40:3f01/64","fe80::2841:c3ff:fe00:9201/64","fe80::28ab:9fff:fe7c:8f5c/64","fe80::2c0c:f9ff:fe9d:2ea5/64","fe80::2cf7:b8ff:fea7:3c67/64","fe80::34c0:1fff:fe11:87f3/64","fe80::3cf4:27ff:feba:932a/64","fe80::42:3bff:fecf:6d9b/64","fe80::48bc:1cff:fe64:f30e/64","fe80::5043:3dff:febf:af5d/64","fe80::58b1:70ff:fe48:d571/64","fe80::60f5:c9ff:fe8f:4be2/64","fe80::6431:8bff:fe92:f7b5/64","fe80::70dc:32ff:fe48:99ff/64","fe80::786e:5aff:fe24:6a6/64","fe80::78a4:efff:fe81:56ec/64","fe80::8457:95ff:fe7a:2683/64","fe80::a00:27ff:fe0a:ff55/64","fe80::a00:27ff:fe9b:9f1d/64","fe80::a859:c3ff:fe4a:5361/64","fe80::b40b:1eff:fea2:c7da/64","fe80::b8a0:47ff:feab:6ca7/64","fe80::c470:7eff:fe3c:41fc/64","fe80::d8de:d9ff:fed3:369f/64","fe80::e077:b4ff:fe53:8537/64","fe80::e882:66ff:feff:f41b/64","fe80::f0a7:5cff:fe6d:8d8f/64","fe80::f4ef:17ff:fece:32ca/64","fe80::f8c1:e5ff:fe53:9306/64"]},"adjacency":null,"controls":{},"latest":{"host_name":{"timestamp":"2016-01-22T11:35:53.906216813Z","value":"vagrant-ubuntu-vivid-64"},"host_node_id":{"timestamp":"2016-01-22T11:35:54.01544499Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"kernel_version":{"timestamp":"2016-01-22T11:35:53.906216813Z","value":"3.19.0-21-generic #21-Ubuntu SMP Sun Jun 14 18:31:11 UTC 2015"},"os":{"timestamp":"2016-01-22T11:35:53.906216813Z","value":"linux"},"probe_id":{"timestamp":"2016-01-22T11:35:54.01544499Z","value":"1b9ffd17afe8a77e"},"ts":{"timestamp":"2016-01-22T11:35:53.906216813Z","value":"2016-01-22T11:35:53.906143656Z"},"uptime":{"timestamp":"2016-01-22T11:35:53.906216813Z","value":"17h40m34s"}},"metrics":{"host_cpu_usage_percent":{"samples":[{"date":"2016-01-22T11:35:39.897601284Z","value":15.873015873015873},{"date":"2016-01-22T11:35:40.911404097Z","value":10.704960835509139},{"date":"2016-01-22T11:35:41.902973164Z","value":19.10112359550562},{"date":"2016-01-22T11:35:42.898478971Z","value":15.508021390374331},{"date":"2016-01-22T11:35:43.901412968Z","value":23.157894736842106},{"date":"2016-01-22T11:35:44.897762115Z","value":5.434782608695652},{"date":"2016-01-22T11:35:45.983249941Z","value":11.893203883495145},{"date":"2016-01-22T11:35:46.913454609Z","value":49.843260188087775},{"date":"2016-01-22T11:35:47.898226279Z","value":23.61111111111111},{"date":"2016-01-22T11:35:48.898921377Z","value":34.4},{"date":"2016-01-22T11:35:49.901753728Z","value":10},{"date":"2016-01-22T11:35:50.906435265Z","value":5.835543766578249},{"date":"2016-01-22T11:35:51.902077134Z","value":20.76502732240437},{"date":"2016-01-22T11:35:52.906451585Z","value":10.869565217391305},{"date":"2016-01-22T11:35:53.905487998Z","value":20.81081081081081}],"min":0,"max":400,"first":"2016-01-22T11:35:39.897601284Z","last":"2016-01-22T11:35:53.905487998Z"},"host_mem_usage_bytes":{"samples":[{"date":"2016-01-22T11:35:39.897601284Z","value":8.74328064e+08},{"date":"2016-01-22T11:35:40.911404097Z","value":8.71010304e+08},{"date":"2016-01-22T11:35:41.902973164Z","value":8.67885056e+08},{"date":"2016-01-22T11:35:42.898478971Z","value":8.6734848e+08},{"date":"2016-01-22T11:35:43.901412968Z","value":8.67127296e+08},{"date":"2016-01-22T11:35:44.897762115Z","value":8.66967552e+08},{"date":"2016-01-22T11:35:45.983249941Z","value":8.70703104e+08},{"date":"2016-01-22T11:35:46.913454609Z","value":8.68913152e+08},{"date":"2016-01-22T11:35:47.898226279Z","value":8.67938304e+08},{"date":"2016-01-22T11:35:48.898921377Z","value":8.675328e+08},{"date":"2016-01-22T11:35:49.901753728Z","value":8.67057664e+08},{"date":"2016-01-22T11:35:50.906435265Z","value":8.6913024e+08},{"date":"2016-01-22T11:35:51.902077134Z","value":8.67180544e+08},{"date":"2016-01-22T11:35:52.906451585Z","value":8.67065856e+08},{"date":"2016-01-22T11:35:53.905487998Z","value":8.68077568e+08}],"min":0,"max":2.09790976e+09,"first":"2016-01-22T11:35:39.897601284Z","last":"2016-01-22T11:35:53.905487998Z"},"load1":{"samples":[{"date":"2016-01-22T11:35:39.897601284Z","value":0.7},{"date":"2016-01-22T11:35:40.911404097Z","value":0.65},{"date":"2016-01-22T11:35:41.902973164Z","value":0.65},{"date":"2016-01-22T11:35:42.898478971Z","value":0.65},{"date":"2016-01-22T11:35:43.901412968Z","value":0.65},{"date":"2016-01-22T11:35:44.897762115Z","value":0.65},{"date":"2016-01-22T11:35:45.983249941Z","value":0.6},{"date":"2016-01-22T11:35:46.913454609Z","value":0.6},{"date":"2016-01-22T11:35:47.898226279Z","value":0.6},{"date":"2016-01-22T11:35:48.898921377Z","value":0.6},{"date":"2016-01-22T11:35:49.901753728Z","value":0.6},{"date":"2016-01-22T11:35:50.906435265Z","value":0.55},{"date":"2016-01-22T11:35:51.902077134Z","value":0.55},{"date":"2016-01-22T11:35:52.906451585Z","value":0.55},{"date":"2016-01-22T11:35:53.905487998Z","value":0.55}],"min":0,"max":0.7,"first":"2016-01-22T11:35:39.897601284Z","last":"2016-01-22T11:35:53.905487998Z"},"load15":{"samples":[{"date":"2016-01-22T11:35:39.897601284Z","value":0.97},{"date":"2016-01-22T11:35:40.911404097Z","value":0.97},{"date":"2016-01-22T11:35:41.902973164Z","value":0.97},{"date":"2016-01-22T11:35:42.898478971Z","value":0.97},{"date":"2016-01-22T11:35:43.901412968Z","value":0.97},{"date":"2016-01-22T11:35:44.897762115Z","value":0.97},{"date":"2016-01-22T11:35:45.983249941Z","value":0.96},{"date":"2016-01-22T11:35:46.913454609Z","value":0.96},{"date":"2016-01-22T11:35:47.898226279Z","value":0.96},{"date":"2016-01-22T11:35:48.898921377Z","value":0.96},{"date":"2016-01-22T11:35:49.901753728Z","value":0.96},{"date":"2016-01-22T11:35:50.906435265Z","value":0.95},{"date":"2016-01-22T11:35:51.902077134Z","value":0.95},{"date":"2016-01-22T11:35:52.906451585Z","value":0.95},{"date":"2016-01-22T11:35:53.905487998Z","value":0.95}],"min":0,"max":0.97,"first":"2016-01-22T11:35:39.897601284Z","last":"2016-01-22T11:35:53.905487998Z"},"load5":{"samples":[{"date":"2016-01-22T11:35:39.897601284Z","value":0.81},{"date":"2016-01-22T11:35:40.911404097Z","value":0.8},{"date":"2016-01-22T11:35:41.902973164Z","value":0.8},{"date":"2016-01-22T11:35:42.898478971Z","value":0.8},{"date":"2016-01-22T11:35:43.901412968Z","value":0.8},{"date":"2016-01-22T11:35:44.897762115Z","value":0.8},{"date":"2016-01-22T11:35:45.983249941Z","value":0.79},{"date":"2016-01-22T11:35:46.913454609Z","value":0.79},{"date":"2016-01-22T11:35:47.898226279Z","value":0.79},{"date":"2016-01-22T11:35:48.898921377Z","value":0.79},{"date":"2016-01-22T11:35:49.901753728Z","value":0.79},{"date":"2016-01-22T11:35:50.906435265Z","value":0.77},{"date":"2016-01-22T11:35:51.902077134Z","value":0.77},{"date":"2016-01-22T11:35:52.906451585Z","value":0.77},{"date":"2016-01-22T11:35:53.905487998Z","value":0.77}],"min":0,"max":0.81,"first":"2016-01-22T11:35:39.897601284Z","last":"2016-01-22T11:35:53.905487998Z"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}}}},"Overlay":{"nodes":{"#aa:59:c3:4a:53:61":{"id":"#aa:59:c3:4a:53:61","topology":"overlay","counters":{},"sets":{},"adjacency":null,"controls":{},"latest":{"host_node_id":{"timestamp":"2016-01-22T11:35:54.015444993Z","value":"vagrant-ubuntu-vivid-64;\u003chost\u003e"},"probe_id":{"timestamp":"2016-01-22T11:35:54.015444993Z","value":"1b9ffd17afe8a77e"},"weave_peer_name":{"timestamp":"2016-01-22T11:35:53.898799044Z","value":"aa:59:c3:4a:53:61"},"weave_peer_nick_name":{"timestamp":"2016-01-22T11:35:53.898799044Z","value":"vagrant-ubuntu-vivid-64"}},"parents":{"host":["vagrant-ubuntu-vivid-64;\u003chost\u003e"]}}}},"Sampling":{"Count":0,"Total":0},"Window":0,"Shortcut":false}
diff --git a/render/selectors.go b/render/selectors.go
index 18032aac9..c7fe54047 100644
--- a/render/selectors.go
+++ b/render/selectors.go
@@ -27,14 +27,13 @@ func MakeRenderableNodes(t report.Topology) RenderableNodes {
// Push EdgeMetadata to both ends of the edges
for srcID, srcNode := range result {
- for dstID, emd := range srcNode.Edges {
+ srcNode.Edges.ForEach(func(dstID string, emd report.EdgeMetadata) {
srcNode.EdgeMetadata = srcNode.EdgeMetadata.Flatten(emd)
dstNode := result[dstID]
dstNode.EdgeMetadata = dstNode.EdgeMetadata.Flatten(emd.Reversed())
result[dstID] = dstNode
- }
-
+ })
result[srcID] = srcNode
}
return result
diff --git a/render/short_lived_connections_test.go b/render/short_lived_connections_test.go
index 74fa46a9b..1ac2f08fc 100644
--- a/render/short_lived_connections_test.go
+++ b/render/short_lived_connections_test.go
@@ -33,13 +33,13 @@ var (
rpt = report.Report{
Endpoint: report.Topology{
Nodes: report.Nodes{
- randomEndpointNodeID: report.MakeNode().WithMetadata(map[string]string{
+ randomEndpointNodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: randomIP,
endpoint.Port: randomPort,
endpoint.Conntracked: "true",
}).WithAdjacent(serverEndpointNodeID).WithID(randomEndpointNodeID).WithTopology(report.Endpoint),
- serverEndpointNodeID: report.MakeNode().WithMetadata(map[string]string{
+ serverEndpointNodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: serverIP,
endpoint.Port: serverPort,
endpoint.Conntracked: "true",
@@ -48,23 +48,23 @@ var (
},
Container: report.Topology{
Nodes: report.Nodes{
- containerNodeID: report.MakeNode().WithMetadata(map[string]string{
+ containerNodeID: report.MakeNode().WithLatests(map[string]string{
docker.ContainerID: containerID,
docker.ContainerName: containerName,
report.HostNodeID: serverHostNodeID,
- }).WithSets(report.Sets{
- docker.ContainerIPs: report.MakeStringSet(containerIP),
- docker.ContainerPorts: report.MakeStringSet(fmt.Sprintf("%s:%s->%s/tcp", serverIP, serverPort, serverPort)),
- }).WithID(containerNodeID).WithTopology(report.Container),
+ }).WithSets(report.EmptySets.
+ Add(docker.ContainerIPs, report.MakeStringSet(containerIP)).
+ Add(docker.ContainerPorts, report.MakeStringSet(fmt.Sprintf("%s:%s->%s/tcp", serverIP, serverPort, serverPort))),
+ ).WithID(containerNodeID).WithTopology(report.Container),
},
},
Host: report.Topology{
Nodes: report.Nodes{
serverHostNodeID: report.MakeNodeWith(map[string]string{
report.HostNodeID: serverHostNodeID,
- }).WithSets(report.Sets{
- host.LocalNetworks: report.MakeStringSet("192.168.0.0/16"),
- }).WithID(serverHostNodeID).WithTopology(report.Host),
+ }).WithSets(report.EmptySets.
+ Add(host.LocalNetworks, report.MakeStringSet("192.168.0.0/16")),
+ ).WithID(serverHostNodeID).WithTopology(report.Host),
},
},
}
diff --git a/render/theinternet.go b/render/theinternet.go
index 4e67bb820..953170578 100644
--- a/render/theinternet.go
+++ b/render/theinternet.go
@@ -18,7 +18,8 @@ func LocalNetworks(r report.Report) report.Networks {
)
for _, md := range r.Host.Nodes {
- for _, s := range md.Sets[host.LocalNetworks] {
+ nets, _ := md.Sets.Lookup(host.LocalNetworks)
+ for _, s := range nets {
_, ipNet, err := net.ParseCIDR(s)
if err != nil {
continue
diff --git a/render/theinternet_test.go b/render/theinternet_test.go
index 9abfdcb1f..230559ed0 100644
--- a/render/theinternet_test.go
+++ b/render/theinternet_test.go
@@ -16,10 +16,10 @@ func TestReportLocalNetworks(t *testing.T) {
Host: report.Topology{
Nodes: report.Nodes{
"nonets": report.MakeNode(),
- "foo": report.MakeNode().WithSets(report.Sets{
- host.LocalNetworks: report.MakeStringSet(
- "10.0.0.1/8", "192.168.1.1/24", "10.0.0.1/8", "badnet/33"),
- }),
+ "foo": report.MakeNode().WithSets(report.EmptySets.
+ Add(host.LocalNetworks, report.MakeStringSet(
+ "10.0.0.1/8", "192.168.1.1/24", "10.0.0.1/8", "badnet/33")),
+ ),
},
},
})
diff --git a/render/topologies.go b/render/topologies.go
index edc914605..92c87029d 100644
--- a/render/topologies.go
+++ b/render/topologies.go
@@ -41,11 +41,11 @@ func (r processWithContainerNameRenderer) Render(rpt report.Report) RenderableNo
}.Render(rpt)
for id, p := range processes {
- pid, ok := p.Node.Metadata[process.PID]
+ pid, ok := p.Node.Latest.Lookup(process.PID)
if !ok {
continue
}
- containerID, ok := p.Node.Metadata[docker.ContainerID]
+ containerID, ok := p.Node.Latest.Lookup(docker.ContainerID)
if !ok {
continue
}
@@ -82,8 +82,8 @@ var ProcessNameRenderer = Map{
var ContainerRenderer = MakeReduce(
Filter{
FilterFunc: func(n RenderableNode) bool {
- _, inContainer := n.Node.Metadata[docker.ContainerID]
- _, isConnected := n.Node.Metadata[IsConnected]
+ _, inContainer := n.Node.Latest.Lookup(docker.ContainerID)
+ _, isConnected := n.Node.Latest.Lookup(IsConnected)
return inContainer || isConnected
},
Renderer: Map{
@@ -131,7 +131,7 @@ func (r containerWithImageNameRenderer) Render(rpt report.Report) RenderableNode
}.Render(rpt)
for id, c := range containers {
- imageID, ok := c.Node.Metadata[docker.ImageID]
+ imageID, ok := c.Node.Latest.Lookup(docker.ImageID)
if !ok {
continue
}
@@ -140,7 +140,7 @@ func (r containerWithImageNameRenderer) Render(rpt report.Report) RenderableNode
continue
}
c.Rank = ImageNameWithoutVersion(image.LabelMajor)
- c.Metadata = image.Metadata.Merge(c.Metadata)
+ c.Latest = c.Latest.Merge(c.Latest)
containers[id] = c
}
diff --git a/render/topologies_test.go b/render/topologies_test.go
index 7a74424df..7c01b0ec3 100644
--- a/render/topologies_test.go
+++ b/render/topologies_test.go
@@ -40,7 +40,9 @@ func TestContainerFilterRenderer(t *testing.T) {
// tag on of the containers in the topology and ensure
// it is filtered out correctly.
input := fixture.Report.Copy()
- input.Container.Nodes[fixture.ClientContainerNodeID].Metadata[docker.LabelPrefix+"works.weave.role"] = "system"
+ input.Container.Nodes[fixture.ClientContainerNodeID] = input.Container.Nodes[fixture.ClientContainerNodeID].WithLatests(map[string]string{
+ docker.LabelPrefix + "works.weave.role": "system",
+ })
have := render.FilterSystem(render.ContainerWithImageNameRenderer).Render(input).Prune()
want := expected.RenderedContainers.Copy()
delete(want, expected.ClientContainerRenderedID)
@@ -77,10 +79,14 @@ func TestPodFilterRenderer(t *testing.T) {
// tag on containers or pod namespace in the topology and ensure
// it is filtered out correctly.
input := fixture.Report.Copy()
- input.Pod.Nodes[fixture.ClientPodNodeID].Metadata[kubernetes.PodID] = "pod:kube-system/foo"
- input.Pod.Nodes[fixture.ClientPodNodeID].Metadata[kubernetes.Namespace] = "kube-system"
- input.Pod.Nodes[fixture.ClientPodNodeID].Metadata[kubernetes.PodName] = "foo"
- input.Container.Nodes[fixture.ClientContainerNodeID].Metadata[docker.LabelPrefix+"io.kubernetes.pod.name"] = "kube-system/foo"
+ input.Pod.Nodes[fixture.ClientPodNodeID] = input.Pod.Nodes[fixture.ClientPodNodeID].WithLatests(map[string]string{
+ kubernetes.PodID: "pod:kube-system/foo",
+ kubernetes.Namespace: "kube-system",
+ kubernetes.PodName: "foo",
+ })
+ input.Container.Nodes[fixture.ClientContainerNodeID] = input.Container.Nodes[fixture.ClientContainerNodeID].WithLatests(map[string]string{
+ docker.LabelPrefix + "io.kubernetes.pod.name": "kube-system/foo",
+ })
have := render.FilterSystem(render.PodRenderer).Render(input).Prune()
want := expected.RenderedPods.Copy()
delete(want, expected.ClientPodRenderedID)
diff --git a/report/counters.go b/report/counters.go
new file mode 100644
index 000000000..4ba60c947
--- /dev/null
+++ b/report/counters.go
@@ -0,0 +1,187 @@
+package report
+
+import (
+ "bytes"
+ "encoding/gob"
+ "encoding/json"
+ "fmt"
+ "reflect"
+ "sort"
+
+ "github.com/mndrix/ps"
+)
+
+// Counters is a string->int map.
+type Counters struct {
+ psMap ps.Map
+}
+
+// EmptyCounters is the set of empty counters.
+var EmptyCounters = Counters{ps.NewMap()}
+
+// MakeCounters returns EmptyCounters
+func MakeCounters() Counters {
+ return EmptyCounters
+}
+
+// Copy is a noop
+func (c Counters) Copy() Counters {
+ return c
+}
+
+// Add value to the counter 'key'
+func (c Counters) Add(key string, value int) Counters {
+ if c.psMap == nil {
+ c = EmptyCounters
+ }
+ if existingValue, ok := c.psMap.Lookup(key); ok {
+ value += existingValue.(int)
+ }
+ return Counters{
+ c.psMap.Set(key, value),
+ }
+}
+
+// Lookup the counter 'key'
+func (c Counters) Lookup(key string) (int, bool) {
+ if c.psMap != nil {
+ existingValue, ok := c.psMap.Lookup(key)
+ if ok {
+ return existingValue.(int), true
+ }
+ }
+ return 0, false
+}
+
+// Size returns the number of counters
+func (c Counters) Size() int {
+ if c.psMap == nil {
+ return 0
+ }
+ return c.psMap.Size()
+}
+
+// Merge produces a fresh Counters, container the keys from both inputs. When
+// both inputs container the same key, the latter value is used.
+func (c Counters) Merge(other Counters) Counters {
+ var (
+ cSize = c.Size()
+ otherSize = other.Size()
+ output = c.psMap
+ iter = other.psMap
+ )
+ switch {
+ case cSize == 0:
+ return other
+ case otherSize == 0:
+ return c
+ case cSize < otherSize:
+ output, iter = iter, output
+ }
+ iter.ForEach(func(key string, otherVal interface{}) {
+ if val, ok := output.Lookup(key); ok {
+ output = output.Set(key, otherVal.(int)+val.(int))
+ } else {
+ output = output.Set(key, otherVal)
+ }
+ })
+ return Counters{output}
+}
+
+func (c Counters) String() string {
+ if c.psMap == nil {
+ return "{}"
+ }
+ keys := []string{}
+ for _, k := range c.psMap.Keys() {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+
+ buf := bytes.NewBufferString("{")
+ for _, key := range keys {
+ val, _ := c.psMap.Lookup(key)
+ fmt.Fprintf(buf, "%s: %d, ", key, val)
+ }
+ fmt.Fprintf(buf, "}\n")
+ return buf.String()
+}
+
+// DeepEqual tests equality with other Counters
+func (c Counters) DeepEqual(i interface{}) bool {
+ d, ok := i.(Counters)
+ if !ok {
+ return false
+ }
+
+ if (c.psMap == nil) != (d.psMap == nil) {
+ return false
+ } else if c.psMap == nil && d.psMap == nil {
+ return true
+ }
+
+ if c.psMap.Size() != d.psMap.Size() {
+ return false
+ }
+
+ equal := true
+ c.psMap.ForEach(func(k string, val interface{}) {
+ if otherValue, ok := d.psMap.Lookup(k); !ok {
+ equal = false
+ } else {
+ equal = equal && reflect.DeepEqual(val, otherValue)
+ }
+ })
+ return equal
+}
+
+func (c Counters) toIntermediate() map[string]int {
+ intermediate := map[string]int{}
+ c.psMap.ForEach(func(key string, val interface{}) {
+ intermediate[key] = val.(int)
+ })
+ return intermediate
+}
+
+func (c Counters) fromIntermediate(in map[string]int) Counters {
+ out := ps.NewMap()
+ for k, v := range in {
+ out = out.Set(k, v)
+ }
+ return Counters{out}
+}
+
+// MarshalJSON implements json.Marshaller
+func (c Counters) MarshalJSON() ([]byte, error) {
+ if c.psMap != nil {
+ return json.Marshal(c.toIntermediate())
+ }
+ return json.Marshal(nil)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (c *Counters) UnmarshalJSON(input []byte) error {
+ in := map[string]int{}
+ if err := json.Unmarshal(input, &in); err != nil {
+ return err
+ }
+ *c = Counters{}.fromIntermediate(in)
+ return nil
+}
+
+// GobEncode implements gob.Marshaller
+func (c Counters) GobEncode() ([]byte, error) {
+ buf := bytes.Buffer{}
+ err := gob.NewEncoder(&buf).Encode(c.toIntermediate())
+ return buf.Bytes(), err
+}
+
+// GobDecode implements gob.Unmarshaller
+func (c *Counters) GobDecode(input []byte) error {
+ in := map[string]int{}
+ if err := gob.NewDecoder(bytes.NewBuffer(input)).Decode(&in); err != nil {
+ return err
+ }
+ *c = Counters{}.fromIntermediate(in)
+ return nil
+}
diff --git a/report/counters_internal_test.go b/report/counters_internal_test.go
new file mode 100644
index 000000000..d67eccdbd
--- /dev/null
+++ b/report/counters_internal_test.go
@@ -0,0 +1,124 @@
+package report
+
+import (
+ "testing"
+
+ "github.com/weaveworks/scope/test"
+ "github.com/weaveworks/scope/test/reflect"
+)
+
+func TestCountersAdd(t *testing.T) {
+ have := EmptyCounters.
+ Add("foo", 1).
+ Add("foo", 2)
+ if v, ok := have.Lookup("foo"); !ok || v != 3 {
+ t.Errorf("foo != 3")
+ }
+ if v, ok := have.Lookup("bar"); ok || v != 0 {
+ t.Errorf("bar != nil")
+ }
+}
+
+func TestCountersDeepEquals(t *testing.T) {
+ want := EmptyCounters.
+ Add("foo", 3)
+ have := EmptyCounters.
+ Add("foo", 3)
+ if !reflect.DeepEqual(want, have) {
+ t.Errorf(test.Diff(want, have))
+ }
+ notequal := EmptyCounters.
+ Add("foo", 4)
+ if reflect.DeepEqual(want, notequal) {
+ t.Errorf(test.Diff(want, have))
+ }
+}
+
+func TestCountersNil(t *testing.T) {
+ want := Counters{}
+ if want.Size() != 0 {
+ t.Errorf("nil.Size != 0")
+ }
+ if v, ok := want.Lookup("foo"); ok || v != 0 {
+ t.Errorf("nil.Lookup != false")
+ }
+ have := want.Add("foo", 1)
+ if v, ok := have.Lookup("foo"); !ok || v != 1 {
+ t.Errorf("nil.Add failed")
+ }
+ if have2 := want.Merge(have); !reflect.DeepEqual(have, have2) {
+ t.Errorf(test.Diff(have, have2))
+ }
+}
+
+func TestCountersMerge(t *testing.T) {
+ for name, c := range map[string]struct {
+ a, b, want Counters
+ }{
+ "Empty a": {
+ a: EmptyCounters,
+ b: EmptyCounters.
+ Add("foo", 1),
+ want: EmptyCounters.
+ Add("foo", 1),
+ },
+ "Empty b": {
+ a: EmptyCounters.
+ Add("foo", 1),
+ b: EmptyCounters,
+ want: EmptyCounters.
+ Add("foo", 1),
+ },
+ "Disjoin a & b": {
+ a: EmptyCounters.
+ Add("foo", 1),
+ b: EmptyCounters.
+ Add("bar", 2),
+ want: EmptyCounters.
+ Add("foo", 1).
+ Add("bar", 2),
+ },
+ "Overlapping a & b": {
+ a: EmptyCounters.
+ Add("foo", 1),
+ b: EmptyCounters.
+ Add("foo", 2),
+ want: EmptyCounters.
+ Add("foo", 3),
+ },
+ } {
+ if have := c.a.Merge(c.b); !reflect.DeepEqual(c.want, have) {
+ t.Errorf("%s:\n%s", name, test.Diff(c.want, have))
+ }
+ }
+}
+
+func TestCountersEncoding(t *testing.T) {
+ want := EmptyCounters.
+ Add("foo", 1).
+ Add("bar", 2)
+
+ {
+ gobs, err := want.GobEncode()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyCounters
+ have.GobDecode(gobs)
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+ }
+
+ {
+ json, err := want.MarshalJSON()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyCounters
+ have.UnmarshalJSON(json)
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+ }
+}
diff --git a/report/edge_metadatas.go b/report/edge_metadatas.go
new file mode 100644
index 000000000..43fb9ef3a
--- /dev/null
+++ b/report/edge_metadatas.go
@@ -0,0 +1,296 @@
+package report
+
+import (
+ "bytes"
+ "encoding/gob"
+ "encoding/json"
+ "fmt"
+ "reflect"
+ "sort"
+
+ "github.com/mndrix/ps"
+)
+
+// EdgeMetadatas collect metadata about each edge in a topology. Keys are the
+// remote node IDs, as in Adjacency.
+type EdgeMetadatas struct {
+ psMap ps.Map
+}
+
+// EmptyEdgeMetadatas is the set of empty EdgeMetadatas.
+var EmptyEdgeMetadatas = EdgeMetadatas{ps.NewMap()}
+
+// MakeEdgeMetadatas returns EmptyEdgeMetadatas
+func MakeEdgeMetadatas() EdgeMetadatas {
+ return EmptyEdgeMetadatas
+}
+
+// Copy is a noop
+func (c EdgeMetadatas) Copy() EdgeMetadatas {
+ return c
+}
+
+// Add value to the counter 'key'
+func (c EdgeMetadatas) Add(key string, value EdgeMetadata) EdgeMetadatas {
+ if c.psMap == nil {
+ c = EmptyEdgeMetadatas
+ }
+ if existingValue, ok := c.psMap.Lookup(key); ok {
+ value = value.Merge(existingValue.(EdgeMetadata))
+ }
+ return EdgeMetadatas{
+ c.psMap.Set(key, value),
+ }
+}
+
+// Lookup the counter 'key'
+func (c EdgeMetadatas) Lookup(key string) (EdgeMetadata, bool) {
+ if c.psMap != nil {
+ existingValue, ok := c.psMap.Lookup(key)
+ if ok {
+ return existingValue.(EdgeMetadata), true
+ }
+ }
+ return EdgeMetadata{}, false
+}
+
+// Size is the number of elements
+func (c EdgeMetadatas) Size() int {
+ if c.psMap == nil {
+ return 0
+ }
+ return c.psMap.Size()
+}
+
+// Merge produces a fresh Counters, container the keys from both inputs. When
+// both inputs container the same key, the latter value is used.
+func (c EdgeMetadatas) Merge(other EdgeMetadatas) EdgeMetadatas {
+ var (
+ cSize = c.Size()
+ otherSize = other.Size()
+ output = c.psMap
+ iter = other.psMap
+ )
+ switch {
+ case cSize == 0:
+ return other
+ case otherSize == 0:
+ return c
+ case cSize < otherSize:
+ output, iter = iter, output
+ }
+ iter.ForEach(func(key string, otherVal interface{}) {
+ if val, ok := output.Lookup(key); ok {
+ output = output.Set(key, otherVal.(EdgeMetadata).Merge(val.(EdgeMetadata)))
+ } else {
+ output = output.Set(key, otherVal)
+ }
+ })
+ return EdgeMetadatas{output}
+}
+
+// Flatten flattens all the EdgeMetadatas in this set and returns the result.
+// The original is not modified.
+func (c EdgeMetadatas) Flatten() EdgeMetadata {
+ result := EdgeMetadata{}
+ c.ForEach(func(_ string, e EdgeMetadata) {
+ result = result.Flatten(e)
+ })
+ return result
+}
+
+// ForEach executes f on each key value pair in the map
+func (c EdgeMetadatas) ForEach(fn func(k string, v EdgeMetadata)) {
+ if c.psMap != nil {
+ c.psMap.ForEach(func(key string, value interface{}) {
+ fn(key, value.(EdgeMetadata))
+ })
+ }
+}
+
+func (c EdgeMetadatas) String() string {
+ keys := []string{}
+ if c.psMap == nil {
+ c = EmptyEdgeMetadatas
+ }
+ for _, k := range c.psMap.Keys() {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+
+ buf := bytes.NewBufferString("{")
+ for _, key := range keys {
+ val, _ := c.psMap.Lookup(key)
+ fmt.Fprintf(buf, "%s: %v, ", key, val)
+ }
+ fmt.Fprintf(buf, "}\n")
+ return buf.String()
+}
+
+// DeepEqual tests equality with other Counters
+func (c EdgeMetadatas) DeepEqual(i interface{}) bool {
+ d, ok := i.(EdgeMetadatas)
+ if !ok {
+ return false
+ }
+
+ if c.Size() != d.Size() {
+ return false
+ }
+ if c.Size() == 0 {
+ return true
+ }
+
+ equal := true
+ c.psMap.ForEach(func(k string, val interface{}) {
+ if otherValue, ok := d.psMap.Lookup(k); !ok {
+ equal = false
+ } else {
+ equal = equal && reflect.DeepEqual(val, otherValue)
+ }
+ })
+ return equal
+}
+
+func (c EdgeMetadatas) toIntermediate() map[string]EdgeMetadata {
+ intermediate := map[string]EdgeMetadata{}
+ if c.psMap != nil {
+ c.psMap.ForEach(func(key string, val interface{}) {
+ intermediate[key] = val.(EdgeMetadata)
+ })
+ }
+ return intermediate
+}
+
+func (c EdgeMetadatas) fromIntermediate(in map[string]EdgeMetadata) EdgeMetadatas {
+ out := ps.NewMap()
+ for k, v := range in {
+ out = out.Set(k, v)
+ }
+ return EdgeMetadatas{out}
+}
+
+// MarshalJSON implements json.Marshaller
+func (c EdgeMetadatas) MarshalJSON() ([]byte, error) {
+ if c.psMap != nil {
+ return json.Marshal(c.toIntermediate())
+ }
+ return json.Marshal(nil)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (c *EdgeMetadatas) UnmarshalJSON(input []byte) error {
+ in := map[string]EdgeMetadata{}
+ if err := json.Unmarshal(input, &in); err != nil {
+ return err
+ }
+ *c = EdgeMetadatas{}.fromIntermediate(in)
+ return nil
+}
+
+// GobEncode implements gob.Marshaller
+func (c EdgeMetadatas) GobEncode() ([]byte, error) {
+ buf := bytes.Buffer{}
+ err := gob.NewEncoder(&buf).Encode(c.toIntermediate())
+ return buf.Bytes(), err
+}
+
+// GobDecode implements gob.Unmarshaller
+func (c *EdgeMetadatas) GobDecode(input []byte) error {
+ in := map[string]EdgeMetadata{}
+ if err := gob.NewDecoder(bytes.NewBuffer(input)).Decode(&in); err != nil {
+ return err
+ }
+ *c = EdgeMetadatas{}.fromIntermediate(in)
+ return nil
+}
+
+// EdgeMetadata describes a superset of the metadata that probes can possibly
+// collect about a directed edge between two nodes in any topology.
+type EdgeMetadata struct {
+ EgressPacketCount *uint64 `json:"egress_packet_count,omitempty"`
+ IngressPacketCount *uint64 `json:"ingress_packet_count,omitempty"`
+ EgressByteCount *uint64 `json:"egress_byte_count,omitempty"` // Transport layer
+ IngressByteCount *uint64 `json:"ingress_byte_count,omitempty"` // Transport layer
+ MaxConnCountTCP *uint64 `json:"max_conn_count_tcp,omitempty"`
+}
+
+// Copy returns a value copy of the EdgeMetadata.
+func (e EdgeMetadata) Copy() EdgeMetadata {
+ return EdgeMetadata{
+ EgressPacketCount: cpu64ptr(e.EgressPacketCount),
+ IngressPacketCount: cpu64ptr(e.IngressPacketCount),
+ EgressByteCount: cpu64ptr(e.EgressByteCount),
+ IngressByteCount: cpu64ptr(e.IngressByteCount),
+ MaxConnCountTCP: cpu64ptr(e.MaxConnCountTCP),
+ }
+}
+
+// Reversed returns a value copy of the EdgeMetadata, with the direction reversed.
+func (e EdgeMetadata) Reversed() EdgeMetadata {
+ return EdgeMetadata{
+ EgressPacketCount: cpu64ptr(e.IngressPacketCount),
+ IngressPacketCount: cpu64ptr(e.EgressPacketCount),
+ EgressByteCount: cpu64ptr(e.IngressByteCount),
+ IngressByteCount: cpu64ptr(e.EgressByteCount),
+ MaxConnCountTCP: cpu64ptr(e.MaxConnCountTCP),
+ }
+}
+
+func cpu64ptr(u *uint64) *uint64 {
+ if u == nil {
+ return nil
+ }
+ value := *u // oh man
+ return &value // this sucks
+}
+
+// Merge merges another EdgeMetadata into the receiver and returns the result.
+// The receiver is not modified. The two edge metadatas should represent the
+// same edge on different times.
+func (e EdgeMetadata) Merge(other EdgeMetadata) EdgeMetadata {
+ cp := e.Copy()
+ cp.EgressPacketCount = merge(cp.EgressPacketCount, other.EgressPacketCount, sum)
+ cp.IngressPacketCount = merge(cp.IngressPacketCount, other.IngressPacketCount, sum)
+ cp.EgressByteCount = merge(cp.EgressByteCount, other.EgressByteCount, sum)
+ cp.IngressByteCount = merge(cp.IngressByteCount, other.IngressByteCount, sum)
+ cp.MaxConnCountTCP = merge(cp.MaxConnCountTCP, other.MaxConnCountTCP, max)
+ return cp
+}
+
+// Flatten sums two EdgeMetadatas and returns the result. The receiver is not
+// modified. The two edge metadata windows should be the same duration; they
+// should represent different edges at the same time.
+func (e EdgeMetadata) Flatten(other EdgeMetadata) EdgeMetadata {
+ cp := e.Copy()
+ cp.EgressPacketCount = merge(cp.EgressPacketCount, other.EgressPacketCount, sum)
+ cp.IngressPacketCount = merge(cp.IngressPacketCount, other.IngressPacketCount, sum)
+ cp.EgressByteCount = merge(cp.EgressByteCount, other.EgressByteCount, sum)
+ cp.IngressByteCount = merge(cp.IngressByteCount, other.IngressByteCount, sum)
+ // Note that summing of two maximums doesn't always give us the true
+ // maximum. But it's a best effort.
+ cp.MaxConnCountTCP = merge(cp.MaxConnCountTCP, other.MaxConnCountTCP, sum)
+ return cp
+}
+
+func merge(dst, src *uint64, op func(uint64, uint64) uint64) *uint64 {
+ if src == nil {
+ return dst
+ }
+ if dst == nil {
+ dst = new(uint64)
+ }
+ (*dst) = op(*dst, *src)
+ return dst
+}
+
+func sum(dst, src uint64) uint64 {
+ return dst + src
+}
+
+func max(dst, src uint64) uint64 {
+ if dst > src {
+ return dst
+ }
+ return src
+}
diff --git a/report/edge_metadatas_internal_test.go b/report/edge_metadatas_internal_test.go
new file mode 100644
index 000000000..b6277a50a
--- /dev/null
+++ b/report/edge_metadatas_internal_test.go
@@ -0,0 +1,284 @@
+package report
+
+import (
+ "testing"
+
+ "github.com/weaveworks/scope/test"
+ "github.com/weaveworks/scope/test/reflect"
+)
+
+func TestEdgeMetadatasAdd(t *testing.T) {
+ have := EmptyEdgeMetadatas.
+ Add("foo",
+ EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ }).
+ Add("foo",
+ EdgeMetadata{
+ EgressPacketCount: newu64(2),
+ })
+ if emd, ok := have.Lookup("foo"); !ok || *emd.EgressPacketCount != 3 {
+ t.Errorf("foo.EgressPacketCount != 3")
+ }
+ if emd, ok := have.Lookup("bar"); ok || emd.EgressPacketCount != nil {
+ t.Errorf("bar.EgressPacketCount != nil")
+ }
+ have.ForEach(func(k string, emd EdgeMetadata) {
+ if k != "foo" || *emd.EgressPacketCount != 3 {
+ t.Errorf("foo.EgressPacketCount != 3")
+ }
+ })
+}
+
+func TestEdgeMetadatasAddNil(t *testing.T) {
+ have := EdgeMetadatas{}.Add("foo", EdgeMetadata{EgressPacketCount: newu64(1)})
+ if have.Size() != 1 {
+ t.Errorf("Adding to a zero-value EdgeMetadatas failed, got: %v", have)
+ }
+}
+
+func TestEdgeMetadatasDeepEquals(t *testing.T) {
+ want := EmptyEdgeMetadatas.
+ Add("foo",
+ EdgeMetadata{
+ EgressPacketCount: newu64(3),
+ })
+ have := EmptyEdgeMetadatas.
+ Add("foo",
+ EdgeMetadata{
+ EgressPacketCount: newu64(3),
+ })
+ if !reflect.DeepEqual(want, have) {
+ t.Errorf(test.Diff(want, have))
+ }
+}
+
+func TestEdgeMetadatasMerge(t *testing.T) {
+ for name, c := range map[string]struct {
+ a, b, want EdgeMetadatas
+ }{
+ "nils": {
+ a: EdgeMetadatas{},
+ b: EdgeMetadatas{},
+ want: EdgeMetadatas{},
+ },
+ "Empty a": {
+ a: EmptyEdgeMetadatas,
+ b: EmptyEdgeMetadatas.
+ Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ MaxConnCountTCP: newu64(2),
+ }),
+ want: EmptyEdgeMetadatas.
+ Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ MaxConnCountTCP: newu64(2),
+ }),
+ },
+ "Empty b": {
+ a: EmptyEdgeMetadatas.
+ Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(12),
+ EgressByteCount: newu64(999),
+ }),
+ b: EmptyEdgeMetadatas,
+ want: EmptyEdgeMetadatas.
+ Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(12),
+ EgressByteCount: newu64(999),
+ }),
+ },
+ "Disjoint a & b": {
+ a: EmptyEdgeMetadatas.
+ Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(12),
+ EgressByteCount: newu64(500),
+ MaxConnCountTCP: newu64(4),
+ }),
+ b: EmptyEdgeMetadatas.
+ Add("hostQ|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ EgressByteCount: newu64(2),
+ MaxConnCountTCP: newu64(6),
+ }),
+ want: EmptyEdgeMetadatas.
+ Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(12),
+ EgressByteCount: newu64(500),
+ MaxConnCountTCP: newu64(4),
+ }).
+ Add("hostQ|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ EgressByteCount: newu64(2),
+ MaxConnCountTCP: newu64(6),
+ }),
+ },
+ "Overlapping a & b": {
+ a: EmptyEdgeMetadatas.
+ Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(12),
+ EgressByteCount: newu64(1000),
+ MaxConnCountTCP: newu64(7),
+ }),
+ b: EmptyEdgeMetadatas.
+ Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ IngressByteCount: newu64(123),
+ EgressByteCount: newu64(2),
+ MaxConnCountTCP: newu64(9),
+ }),
+ want: EmptyEdgeMetadatas.
+ Add("hostA|:192.168.1.1:12345|:192.168.1.2:80",
+ EdgeMetadata{
+ EgressPacketCount: newu64(13),
+ IngressByteCount: newu64(123),
+ EgressByteCount: newu64(1002),
+ MaxConnCountTCP: newu64(9),
+ }),
+ },
+ } {
+ if have := c.a.Merge(c.b); !reflect.DeepEqual(c.want, have) {
+ t.Errorf("%s:\n%s", name, test.Diff(c.want, have))
+ }
+ }
+}
+
+func TestEdgeMetadataFlatten(t *testing.T) {
+ // Test two EdgeMetadatas flatten to the correct values
+ {
+ have := (EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ MaxConnCountTCP: newu64(2),
+ }).Flatten(EdgeMetadata{
+ EgressPacketCount: newu64(4),
+ EgressByteCount: newu64(8),
+ MaxConnCountTCP: newu64(16),
+ })
+ want := EdgeMetadata{
+ EgressPacketCount: newu64(1 + 4),
+ EgressByteCount: newu64(8),
+ MaxConnCountTCP: newu64(2 + 16), // flatten should sum MaxConnCountTCP
+ }
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+ }
+
+ // Test an EdgeMetadatas flatten to the correct value (should
+ // just sum)
+ {
+ have := EmptyEdgeMetadatas.
+ Add("foo", EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ MaxConnCountTCP: newu64(2),
+ }).
+ Add("bar", EdgeMetadata{
+ EgressPacketCount: newu64(3),
+ MaxConnCountTCP: newu64(5),
+ }).Flatten()
+ want := EdgeMetadata{
+ EgressPacketCount: newu64(1 + 3),
+ MaxConnCountTCP: newu64(2 + 5),
+ }
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+ }
+
+ {
+ // Should not panic on nil
+ have := EdgeMetadatas{}.Flatten()
+ want := EdgeMetadata{}
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+ }
+}
+
+func TestEdgeMetadataReversed(t *testing.T) {
+ have := EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ }.Reversed()
+ want := EdgeMetadata{
+ IngressPacketCount: newu64(1),
+ }
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+}
+
+func TestEdgeMetadatasEncoding(t *testing.T) {
+ want := EmptyEdgeMetadatas.
+ Add("foo", EdgeMetadata{
+ EgressPacketCount: newu64(1),
+ MaxConnCountTCP: newu64(2),
+ }).
+ Add("bar", EdgeMetadata{
+ EgressPacketCount: newu64(3),
+ MaxConnCountTCP: newu64(5),
+ })
+
+ {
+ gobs, err := want.GobEncode()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyEdgeMetadatas
+ have.GobDecode(gobs)
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+ }
+
+ {
+ json, err := want.MarshalJSON()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyEdgeMetadatas
+ have.UnmarshalJSON(json)
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+ }
+}
+
+func TestEdgeMetadatasEncodingNil(t *testing.T) {
+ want := EdgeMetadatas{}
+
+ {
+ gobs, err := want.GobEncode()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyEdgeMetadatas
+ have.GobDecode(gobs)
+ if have.psMap == nil {
+ t.Error("needed to get back a non-nil psMap for EdgeMetadata")
+ }
+ }
+
+ {
+ json, err := want.MarshalJSON()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyEdgeMetadatas
+ have.UnmarshalJSON(json)
+ if have.psMap == nil {
+ t.Error("needed to get back a non-nil psMap for EdgeMetadata")
+ }
+ }
+}
+
+func newu64(value uint64) *uint64 { return &value }
diff --git a/report/id.go b/report/id.go
index 23561a7f6..0aefcd5fd 100644
--- a/report/id.go
+++ b/report/id.go
@@ -168,8 +168,9 @@ func ParseAddressNodeID(addressNodeID string) (hostID, address string, ok bool)
// ExtractHostID extracts the host id from Node
func ExtractHostID(m Node) string {
- hostid, _, _ := ParseNodeID(m.Metadata[HostNodeID])
- return hostid
+ hostNodeID, _ := m.Latest.Lookup(HostNodeID)
+ hostID, _, _ := ParseNodeID(hostNodeID)
+ return hostID
}
func isLoopback(address string) bool {
diff --git a/report/id_list.go b/report/id_list.go
index 9c740e69b..50149a0c2 100644
--- a/report/id_list.go
+++ b/report/id_list.go
@@ -5,6 +5,9 @@ import "sort"
// IDList is a list of string IDs, which are always sorted and unique.
type IDList StringSet
+// EmptyIDList is an Empty ID List.
+var EmptyIDList = IDList(EmptyStringSet)
+
// MakeIDList makes a new IDList.
func MakeIDList(ids ...string) IDList {
return IDList(MakeStringSet(ids...))
diff --git a/report/id_list_test.go b/report/id_list_test.go
index fd6f9b1aa..2e0a07e9b 100644
--- a/report/id_list_test.go
+++ b/report/id_list_test.go
@@ -1,10 +1,10 @@
package report_test
import (
- "reflect"
"testing"
"github.com/weaveworks/scope/report"
+ "github.com/weaveworks/scope/test/reflect"
)
func TestIDList(t *testing.T) {
diff --git a/report/latest_map.go b/report/latest_map.go
index f04f035a9..9f5619c28 100644
--- a/report/latest_map.go
+++ b/report/latest_map.go
@@ -5,6 +5,7 @@ import (
"encoding/gob"
"encoding/json"
"fmt"
+ "sort"
"time"
"github.com/mndrix/ps"
@@ -23,12 +24,20 @@ type LatestEntry struct {
}
func (e LatestEntry) String() string {
- return fmt.Sprintf("\"%s\" (%d)", e.Value, e.Timestamp)
+ return fmt.Sprintf("\"%s\" (%s)", e.Value, e.Timestamp.String())
}
+// Equal returns true if the supplied LatestEntry is equal to this one.
+func (e LatestEntry) Equal(e2 LatestEntry) bool {
+ return e.Timestamp.Equal(e2.Timestamp) && e.Value == e2.Value
+}
+
+// EmptyLatestMap is an empty LatestMap. Start with this.
+var EmptyLatestMap = LatestMap{ps.NewMap()}
+
// MakeLatestMap makes an empty LatestMap
func MakeLatestMap() LatestMap {
- return LatestMap{ps.NewMap()}
+ return EmptyLatestMap
}
// Copy is a noop, as LatestMaps are immutable.
@@ -36,21 +45,39 @@ func (m LatestMap) Copy() LatestMap {
return m
}
+// Size returns the number of elements
+func (m LatestMap) Size() int {
+ if m.Map == nil {
+ return 0
+ }
+ return m.Map.Size()
+}
+
// Merge produces a fresh LatestMap, container the kers from both inputs. When
// both inputs container the same key, the latter value is used.
-func (m LatestMap) Merge(newer LatestMap) LatestMap {
- // expect people to do old.Merge(new), optimise for that.
- // ie if you do {k: v}.Merge({k: v'}), we end up just returning
- // newer, unmodified.
- output := newer.Map
+func (m LatestMap) Merge(other LatestMap) LatestMap {
+ var (
+ mSize = m.Size()
+ otherSize = other.Size()
+ output = m.Map
+ iter = other.Map
+ )
+ switch {
+ case mSize == 0:
+ return other
+ case otherSize == 0:
+ return m
+ case mSize < otherSize:
+ output, iter = iter, output
+ }
- m.Map.ForEach(func(key string, olderVal interface{}) {
- if newerVal, ok := newer.Map.Lookup(key); ok {
- if newerVal.(LatestEntry).Timestamp.Before(olderVal.(LatestEntry).Timestamp) {
- output = output.Set(key, olderVal)
+ iter.ForEach(func(key string, iterVal interface{}) {
+ if existingVal, ok := output.Lookup(key); ok {
+ if existingVal.(LatestEntry).Timestamp.Before(iterVal.(LatestEntry).Timestamp) {
+ output = output.Set(key, iterVal)
}
} else {
- output = output.Set(key, olderVal)
+ output = output.Set(key, iterVal)
}
})
@@ -59,6 +86,9 @@ func (m LatestMap) Merge(newer LatestMap) LatestMap {
// Lookup the value for the given key.
func (m LatestMap) Lookup(key string) (string, bool) {
+ if m.Map == nil {
+ return "", false
+ }
value, ok := m.Map.Lookup(key)
if !ok {
return "", false
@@ -68,14 +98,81 @@ func (m LatestMap) Lookup(key string) (string, bool) {
// Set the value for the given key.
func (m LatestMap) Set(key string, timestamp time.Time, value string) LatestMap {
+ if m.Map == nil {
+ m = EmptyLatestMap
+ }
return LatestMap{m.Map.Set(key, LatestEntry{timestamp, value})}
}
+// Delete the value for the given key.
+func (m LatestMap) Delete(key string) LatestMap {
+ if m.Map == nil {
+ m = EmptyLatestMap
+ }
+ return LatestMap{m.Map.Delete(key)}
+}
+
+// ForEach executes f on each key value pair in the map
+func (m LatestMap) ForEach(fn func(k, v string)) {
+ if m.Map == nil {
+ return
+ }
+ m.Map.ForEach(func(key string, value interface{}) {
+ fn(key, value.(LatestEntry).Value)
+ })
+}
+
+func (m LatestMap) String() string {
+ keys := []string{}
+ if m.Map == nil {
+ m = EmptyLatestMap
+ }
+ for _, k := range m.Map.Keys() {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+
+ buf := bytes.NewBufferString("{")
+ for _, key := range keys {
+ val, _ := m.Map.Lookup(key)
+ fmt.Fprintf(buf, "%s: %s, ", key, val)
+ }
+ fmt.Fprintf(buf, "}\n")
+ return buf.String()
+}
+
+// DeepEqual tests equality with other LatestMap
+func (m LatestMap) DeepEqual(i interface{}) bool {
+ n, ok := i.(LatestMap)
+ if !ok {
+ return false
+ }
+
+ if m.Size() != n.Size() {
+ return false
+ }
+ if m.Size() == 0 {
+ return true
+ }
+
+ equal := true
+ m.Map.ForEach(func(k string, val interface{}) {
+ if otherValue, ok := n.Map.Lookup(k); !ok {
+ equal = false
+ } else {
+ equal = equal && val.(LatestEntry).Equal(otherValue.(LatestEntry))
+ }
+ })
+ return equal
+}
+
func (m LatestMap) toIntermediate() map[string]LatestEntry {
intermediate := map[string]LatestEntry{}
- m.ForEach(func(key string, val interface{}) {
- intermediate[key] = val.(LatestEntry)
- })
+ if m.Map != nil {
+ m.Map.ForEach(func(key string, val interface{}) {
+ intermediate[key] = val.(LatestEntry)
+ })
+ }
return intermediate
}
diff --git a/report/latest_map_internal_test.go b/report/latest_map_internal_test.go
new file mode 100644
index 000000000..4ba4e16c8
--- /dev/null
+++ b/report/latest_map_internal_test.go
@@ -0,0 +1,179 @@
+package report
+
+import (
+ "testing"
+ "time"
+
+ "github.com/weaveworks/scope/test"
+ "github.com/weaveworks/scope/test/reflect"
+)
+
+func TestLatestMapAdd(t *testing.T) {
+ now := time.Now()
+ have := EmptyLatestMap.
+ Set("foo", now.Add(-1), "Baz").
+ Set("foo", now, "Bar")
+ if v, ok := have.Lookup("foo"); !ok || v != "Bar" {
+ t.Errorf("v != Bar")
+ }
+ if v, ok := have.Lookup("bar"); ok || v != "" {
+ t.Errorf("v != nil")
+ }
+ have.ForEach(func(k, v string) {
+ if k != "foo" || v != "Bar" {
+ t.Errorf("v != Bar")
+ }
+ })
+}
+
+func TestLatestMapAddNil(t *testing.T) {
+ now := time.Now()
+ have := LatestMap{}.Set("foo", now, "Bar")
+ if v, ok := have.Lookup("foo"); !ok || v != "Bar" {
+ t.Errorf("v != Bar")
+ }
+}
+
+func TestLatestMapDeepEquals(t *testing.T) {
+ now := time.Now()
+ want := EmptyLatestMap.
+ Set("foo", now, "Bar")
+ have := EmptyLatestMap.
+ Set("foo", now, "Bar")
+ if !reflect.DeepEqual(want, have) {
+ t.Errorf(test.Diff(want, have))
+ }
+ notequal := EmptyLatestMap.
+ Set("foo", now, "Baz")
+ if reflect.DeepEqual(want, notequal) {
+ t.Errorf(test.Diff(want, have))
+ }
+}
+
+func TestLatestMapDelete(t *testing.T) {
+ now := time.Now()
+ want := EmptyLatestMap
+ have := EmptyLatestMap.
+ Set("foo", now, "Baz").
+ Delete("foo")
+ if !reflect.DeepEqual(want, have) {
+ t.Errorf(test.Diff(want, have))
+ }
+}
+
+func TestLatestMapDeleteNil(t *testing.T) {
+ want := LatestMap{}
+ have := LatestMap{}.Delete("foo")
+ if !reflect.DeepEqual(want, have) {
+ t.Errorf(test.Diff(want, have))
+ }
+}
+
+func TestLatestMapMerge(t *testing.T) {
+ now := time.Now()
+ then := now.Add(-1)
+
+ for name, c := range map[string]struct {
+ a, b, want LatestMap
+ }{
+ "nils": {
+ a: LatestMap{},
+ b: LatestMap{},
+ want: LatestMap{},
+ },
+ "Empty a": {
+ a: EmptyLatestMap,
+ b: EmptyLatestMap.
+ Set("foo", now, "bar"),
+ want: EmptyLatestMap.
+ Set("foo", now, "bar"),
+ },
+ "Empty b": {
+ a: EmptyLatestMap.
+ Set("foo", now, "bar"),
+ b: EmptyLatestMap,
+ want: EmptyLatestMap.
+ Set("foo", now, "bar"),
+ },
+ "Disjoint a & b": {
+ a: EmptyLatestMap.
+ Set("foo", now, "bar"),
+ b: EmptyLatestMap.
+ Set("baz", now, "bop"),
+ want: EmptyLatestMap.
+ Set("foo", now, "bar").
+ Set("baz", now, "bop"),
+ },
+ "Common a & b": {
+ a: EmptyLatestMap.
+ Set("foo", now, "bar"),
+ b: EmptyLatestMap.
+ Set("foo", then, "baz"),
+ want: EmptyLatestMap.
+ Set("foo", now, "bar"),
+ },
+ } {
+ if have := c.a.Merge(c.b); !reflect.DeepEqual(c.want, have) {
+ t.Errorf("%s:\n%s", name, test.Diff(c.want, have))
+ }
+ }
+}
+
+func TestLatestMapEncoding(t *testing.T) {
+ now := time.Now()
+ want := EmptyLatestMap.
+ Set("foo", now, "bar").
+ Set("bar", now, "baz")
+
+ {
+ gobs, err := want.GobEncode()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyLatestMap
+ have.GobDecode(gobs)
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+ }
+
+ {
+ json, err := want.MarshalJSON()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyLatestMap
+ have.UnmarshalJSON(json)
+ if !reflect.DeepEqual(want, have) {
+ t.Error(test.Diff(want, have))
+ }
+ }
+}
+
+func TestLatestMapEncodingNil(t *testing.T) {
+ want := LatestMap{}
+
+ {
+ gobs, err := want.GobEncode()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyLatestMap
+ have.GobDecode(gobs)
+ if have.Map == nil {
+ t.Error("Decoded LatestMap.psMap should not be nil")
+ }
+ }
+
+ {
+ json, err := want.MarshalJSON()
+ if err != nil {
+ t.Fatal(err)
+ }
+ have := EmptyLatestMap
+ have.UnmarshalJSON(json)
+ if have.Map == nil {
+ t.Error("Decoded LatestMap.psMap should not be nil")
+ }
+ }
+}
diff --git a/report/merge_test.go b/report/merge_test.go
deleted file mode 100644
index e38d89bd1..000000000
--- a/report/merge_test.go
+++ /dev/null
@@ -1,273 +0,0 @@
-package report_test
-
-import (
- "reflect"
- "testing"
-
- "github.com/weaveworks/scope/report"
- "github.com/weaveworks/scope/test"
-)
-
-const (
- PID = "pid"
- Name = "name"
- Domain = "domain"
-)
-
-func TestMergeEdgeMetadatas(t *testing.T) {
- for name, c := range map[string]struct {
- a, b, want report.EdgeMetadatas
- }{
- "Empty a": {
- a: report.EdgeMetadatas{},
- b: report.EdgeMetadatas{
- "hostA|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(1),
- MaxConnCountTCP: newu64(2),
- },
- },
- want: report.EdgeMetadatas{
- "hostA|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(1),
- MaxConnCountTCP: newu64(2),
- },
- },
- },
- "Empty b": {
- a: report.EdgeMetadatas{
- "hostA|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(12),
- EgressByteCount: newu64(999),
- },
- },
- b: report.EdgeMetadatas{},
- want: report.EdgeMetadatas{
- "hostA|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(12),
- EgressByteCount: newu64(999),
- },
- },
- },
- "Host merge": {
- a: report.EdgeMetadatas{
- "hostA|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(12),
- EgressByteCount: newu64(500),
- MaxConnCountTCP: newu64(4),
- },
- },
- b: report.EdgeMetadatas{
- "hostQ|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(1),
- EgressByteCount: newu64(2),
- MaxConnCountTCP: newu64(6),
- },
- },
- want: report.EdgeMetadatas{
- "hostA|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(12),
- EgressByteCount: newu64(500),
- MaxConnCountTCP: newu64(4),
- },
- "hostQ|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(1),
- EgressByteCount: newu64(2),
- MaxConnCountTCP: newu64(6),
- },
- },
- },
- "Edge merge": {
- a: report.EdgeMetadatas{
- "hostA|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(12),
- EgressByteCount: newu64(1000),
- MaxConnCountTCP: newu64(7),
- },
- },
- b: report.EdgeMetadatas{
- "hostA|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(1),
- IngressByteCount: newu64(123),
- EgressByteCount: newu64(2),
- MaxConnCountTCP: newu64(9),
- },
- },
- want: report.EdgeMetadatas{
- "hostA|:192.168.1.1:12345|:192.168.1.2:80": report.EdgeMetadata{
- EgressPacketCount: newu64(13),
- IngressByteCount: newu64(123),
- EgressByteCount: newu64(1002),
- MaxConnCountTCP: newu64(9),
- },
- },
- },
- } {
- if have := c.a.Merge(c.b); !reflect.DeepEqual(c.want, have) {
- t.Errorf("%s:\n%s", name, test.Diff(c.want, have))
- }
- }
-}
-
-func TestFlattenEdgeMetadata(t *testing.T) {
- have := (report.EdgeMetadata{
- EgressPacketCount: newu64(1),
- MaxConnCountTCP: newu64(2),
- }).Flatten(report.EdgeMetadata{
- EgressPacketCount: newu64(4),
- EgressByteCount: newu64(8),
- MaxConnCountTCP: newu64(16),
- })
- want := report.EdgeMetadata{
- EgressPacketCount: newu64(1 + 4),
- EgressByteCount: newu64(8),
- MaxConnCountTCP: newu64(2 + 16), // flatten should sum MaxConnCountTCP
- }
- if !reflect.DeepEqual(want, have) {
- t.Error(test.Diff(want, have))
- }
-}
-
-func TestMergeNodes(t *testing.T) {
- for name, c := range map[string]struct {
- a, b, want report.Nodes
- }{
- "Empty a": {
- a: report.Nodes{},
- b: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- want: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- },
- "Empty b": {
- a: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- b: report.Nodes{},
- want: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- },
- "Simple merge": {
- a: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- b: report.Nodes{
- ":192.168.1.2:12345": report.MakeNodeWith(map[string]string{
- PID: "42",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- want: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- ":192.168.1.2:12345": report.MakeNodeWith(map[string]string{
- PID: "42",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- },
- "Merge conflict with rank difference": {
- a: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- b: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{ // <-- same ID
- PID: "0",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- want: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- },
- "Merge conflict with no rank difference": {
- a: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- b: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{ // <-- same ID
- PID: "0",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- want: report.Nodes{
- ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
- PID: "23128",
- Name: "curl",
- Domain: "node-a.local",
- }),
- },
- },
- "Counters": {
- a: report.Nodes{
- "1": report.MakeNode().WithCounters(map[string]int{
- "a": 13,
- "b": 57,
- "c": 89,
- }),
- },
- b: report.Nodes{
- "1": report.MakeNode().WithCounters(map[string]int{
- "a": 78,
- "b": 3,
- "d": 47,
- }),
- },
- want: report.Nodes{
- "1": report.MakeNode().WithCounters(map[string]int{
- "a": 91,
- "b": 60,
- "c": 89,
- "d": 47,
- }),
- },
- },
- } {
- if have := c.a.Merge(c.b); !reflect.DeepEqual(c.want, have) {
- t.Errorf("%s: want\n\t%#v, have\n\t%#v", name, c.want, have)
- }
- }
-}
-
-func newu64(value uint64) *uint64 { return &value }
diff --git a/report/metrics_test.go b/report/metrics_test.go
index bfa243efb..a82c3a8f8 100644
--- a/report/metrics_test.go
+++ b/report/metrics_test.go
@@ -4,12 +4,12 @@ import (
"bytes"
"encoding/gob"
"encoding/json"
- "reflect"
"testing"
"time"
"github.com/weaveworks/scope/report"
"github.com/weaveworks/scope/test"
+ "github.com/weaveworks/scope/test/reflect"
)
func TestMetricsMerge(t *testing.T) {
diff --git a/report/networks_test.go b/report/networks_test.go
index 0c18207f3..74a33a9f5 100644
--- a/report/networks_test.go
+++ b/report/networks_test.go
@@ -2,11 +2,11 @@ package report_test
import (
"net"
- "reflect"
"testing"
"github.com/weaveworks/scope/report"
"github.com/weaveworks/scope/test"
+ "github.com/weaveworks/scope/test/reflect"
)
func TestContains(t *testing.T) {
diff --git a/report/node.go b/report/node.go
new file mode 100644
index 000000000..043811b36
--- /dev/null
+++ b/report/node.go
@@ -0,0 +1,190 @@
+package report
+
+import (
+ "time"
+
+ "github.com/weaveworks/scope/common/mtime"
+)
+
+// Node describes a superset of the metadata that probes can collect about a
+// given node in a given topology, along with the edges emanating from the
+// node and metadata about those edges.
+type Node struct {
+ ID string `json:"id,omitempty"`
+ Topology string `json:"topology,omitempty"`
+ Counters Counters `json:"counters,omitempty"`
+ Sets Sets `json:"sets,omitempty"`
+ Adjacency IDList `json:"adjacency"`
+ Edges EdgeMetadatas `json:"edges,omitempty"`
+ Controls NodeControls `json:"controls,omitempty"`
+ Latest LatestMap `json:"latest,omitempty"`
+ Metrics Metrics `json:"metrics,omitempty"`
+ Parents Sets `json:"parents,omitempty"`
+}
+
+// MakeNode creates a new Node with no initial metadata.
+func MakeNode() Node {
+ return Node{
+ Counters: EmptyCounters,
+ Sets: EmptySets,
+ Adjacency: EmptyIDList,
+ Edges: EmptyEdgeMetadatas,
+ Controls: MakeNodeControls(),
+ Latest: EmptyLatestMap,
+ Metrics: Metrics{},
+ Parents: EmptySets,
+ }
+}
+
+// MakeNodeWith creates a new Node with the supplied map.
+func MakeNodeWith(m map[string]string) Node {
+ return MakeNode().WithLatests(m)
+}
+
+// WithID returns a fresh copy of n, with ID changed.
+func (n Node) WithID(id string) Node {
+ result := n.Copy()
+ result.ID = id
+ return result
+}
+
+// WithTopology returns a fresh copy of n, with ID changed.
+func (n Node) WithTopology(topology string) Node {
+ result := n.Copy()
+ result.Topology = topology
+ return result
+}
+
+// Before is used for sorting nodes by topology and id
+func (n Node) Before(other Node) bool {
+ return n.Topology < other.Topology || (n.Topology == other.Topology && n.ID < other.ID)
+}
+
+// Equal is used for comparing nodes by topology and id
+func (n Node) Equal(other Node) bool {
+ return n.Topology == other.Topology && n.ID == other.ID
+}
+
+// After is used for sorting nodes by topology and id
+func (n Node) After(other Node) bool {
+ return other.Topology < n.Topology || (other.Topology == n.Topology && other.ID < n.ID)
+}
+
+// WithLatests returns a fresh copy of n, with Metadata m merged in.
+func (n Node) WithLatests(m map[string]string) Node {
+ result := n.Copy()
+ ts := mtime.Now()
+ for k, v := range m {
+ result.Latest = result.Latest.Set(k, ts, v)
+ }
+ return result
+}
+
+// WithLatest produces a new Node with k mapped to v in the Latest metadata.
+func (n Node) WithLatest(k string, ts time.Time, v string) Node {
+ result := n.Copy()
+ result.Latest = result.Latest.Set(k, ts, v)
+ return result
+}
+
+// WithCounters returns a fresh copy of n, with Counters c merged in.
+func (n Node) WithCounters(c map[string]int) Node {
+ result := n.Copy()
+ result.Counters = result.Counters.Merge(Counters{}.fromIntermediate(c))
+ return result
+}
+
+// WithSet returns a fresh copy of n, with set merged in at key.
+func (n Node) WithSet(key string, set StringSet) Node {
+ result := n.Copy()
+ result.Sets = result.Sets.Add(key, set)
+ return result
+}
+
+// WithSets returns a fresh copy of n, with sets merged in.
+func (n Node) WithSets(sets Sets) Node {
+ result := n.Copy()
+ result.Sets = result.Sets.Merge(sets)
+ return result
+}
+
+// WithMetric returns a fresh copy of n, with metric merged in at key.
+func (n Node) WithMetric(key string, metric Metric) Node {
+ result := n.Copy()
+ result.Metrics[key] = n.Metrics[key].Merge(metric)
+ return result
+}
+
+// WithMetrics returns a fresh copy of n, with metrics merged in.
+func (n Node) WithMetrics(metrics Metrics) Node {
+ result := n.Copy()
+ result.Metrics = result.Metrics.Merge(metrics)
+ return result
+}
+
+// WithAdjacent returns a fresh copy of n, with 'a' added to Adjacency
+func (n Node) WithAdjacent(a ...string) Node {
+ result := n.Copy()
+ result.Adjacency = result.Adjacency.Add(a...)
+ return result
+}
+
+// WithEdge returns a fresh copy of n, with 'dst' added to Adjacency and md
+// added to EdgeMetadata.
+func (n Node) WithEdge(dst string, md EdgeMetadata) Node {
+ result := n.Copy()
+ result.Adjacency = result.Adjacency.Add(dst)
+ result.Edges = result.Edges.Add(dst, md)
+ return result
+}
+
+// WithControls returns a fresh copy of n, with cs added to Controls.
+func (n Node) WithControls(cs ...string) Node {
+ result := n.Copy()
+ result.Controls = result.Controls.Add(cs...)
+ return result
+}
+
+// WithParents returns a fresh copy of n, with sets merged in.
+func (n Node) WithParents(parents Sets) Node {
+ result := n.Copy()
+ result.Parents = result.Parents.Merge(parents)
+ return result
+}
+
+// Copy returns a value copy of the Node.
+func (n Node) Copy() Node {
+ cp := MakeNode()
+ cp.ID = n.ID
+ cp.Topology = n.Topology
+ cp.Counters = n.Counters.Copy()
+ cp.Sets = n.Sets.Copy()
+ cp.Adjacency = n.Adjacency.Copy()
+ cp.Edges = n.Edges.Copy()
+ cp.Controls = n.Controls.Copy()
+ cp.Latest = n.Latest.Copy()
+ cp.Metrics = n.Metrics.Copy()
+ cp.Parents = n.Parents.Copy()
+ return cp
+}
+
+// Merge mergses the individual components of a node and returns a
+// fresh node.
+func (n Node) Merge(other Node) Node {
+ cp := n.Copy()
+ if cp.ID == "" {
+ cp.ID = other.ID
+ }
+ if cp.Topology == "" {
+ cp.Topology = other.Topology
+ }
+ cp.Counters = cp.Counters.Merge(other.Counters)
+ cp.Sets = cp.Sets.Merge(other.Sets)
+ cp.Adjacency = cp.Adjacency.Merge(other.Adjacency)
+ cp.Edges = cp.Edges.Merge(other.Edges)
+ cp.Controls = cp.Controls.Merge(other.Controls)
+ cp.Latest = cp.Latest.Merge(other.Latest)
+ cp.Metrics = cp.Metrics.Merge(other.Metrics)
+ cp.Parents = cp.Parents.Merge(other.Parents)
+ return cp
+}
diff --git a/report/node_set_test.go b/report/node_set_test.go
index 0bb0ee825..f0331b4ce 100644
--- a/report/node_set_test.go
+++ b/report/node_set_test.go
@@ -2,10 +2,10 @@ package report_test
import (
"fmt"
- "reflect"
"testing"
"github.com/weaveworks/scope/report"
+ "github.com/weaveworks/scope/test/reflect"
)
var benchmarkResult report.NodeSet
@@ -58,7 +58,7 @@ func TestMakeNodeSet(t *testing.T) {
func BenchmarkMakeNodeSet(b *testing.B) {
nodes := []report.Node{}
for i := 1000; i >= 0; i-- {
- node := report.MakeNode().WithID(fmt.Sprint(i)).WithMetadata(map[string]string{
+ node := report.MakeNode().WithID(fmt.Sprint(i)).WithLatests(map[string]string{
"a": "1",
"b": "2",
})
@@ -129,14 +129,14 @@ func BenchmarkNodeSetAdd(b *testing.B) {
n := report.MakeNodeSet()
for i := 0; i < 600; i++ {
n = n.Add(
- report.MakeNode().WithID(fmt.Sprint(i)).WithMetadata(map[string]string{
+ report.MakeNode().WithID(fmt.Sprint(i)).WithLatests(map[string]string{
"a": "1",
"b": "2",
}),
)
}
- node := report.MakeNode().WithID("401.5").WithMetadata(map[string]string{
+ node := report.MakeNode().WithID("401.5").WithLatests(map[string]string{
"a": "1",
"b": "2",
})
@@ -207,7 +207,7 @@ func BenchmarkNodeSetMerge(b *testing.B) {
n, other := report.MakeNodeSet(), report.MakeNodeSet()
for i := 0; i < 600; i++ {
n = n.Add(
- report.MakeNode().WithID(fmt.Sprint(i)).WithMetadata(map[string]string{
+ report.MakeNode().WithID(fmt.Sprint(i)).WithLatests(map[string]string{
"a": "1",
"b": "2",
}),
@@ -216,7 +216,7 @@ func BenchmarkNodeSetMerge(b *testing.B) {
for i := 400; i < 1000; i++ {
other = other.Add(
- report.MakeNode().WithID(fmt.Sprint(i)).WithMetadata(map[string]string{
+ report.MakeNode().WithID(fmt.Sprint(i)).WithLatests(map[string]string{
"c": "1",
"d": "2",
}),
diff --git a/report/node_test.go b/report/node_test.go
new file mode 100644
index 000000000..70586aa41
--- /dev/null
+++ b/report/node_test.go
@@ -0,0 +1,161 @@
+package report_test
+
+import (
+ "testing"
+ "time"
+
+ "github.com/weaveworks/scope/common/mtime"
+ "github.com/weaveworks/scope/report"
+ "github.com/weaveworks/scope/test"
+ "github.com/weaveworks/scope/test/reflect"
+)
+
+const (
+ PID = "pid"
+ Name = "name"
+ Domain = "domain"
+)
+
+func TestMergeNodes(t *testing.T) {
+ mtime.NowForce(time.Now())
+ defer mtime.NowReset()
+
+ for name, c := range map[string]struct {
+ a, b, want report.Nodes
+ }{
+ "Empty a": {
+ a: report.Nodes{},
+ b: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ want: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ },
+ "Empty b": {
+ a: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ b: report.Nodes{},
+ want: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ },
+ "Simple merge": {
+ a: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ b: report.Nodes{
+ ":192.168.1.2:12345": report.MakeNodeWith(map[string]string{
+ PID: "42",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ want: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ ":192.168.1.2:12345": report.MakeNodeWith(map[string]string{
+ PID: "42",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ },
+ "Merge conflict with rank difference": {
+ a: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ b: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{ // <-- same ID
+ Name: "curl",
+ Domain: "node-a.local",
+ }).WithLatest(PID, time.Now().Add(-1*time.Minute), "0"),
+ },
+ want: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ },
+ "Merge conflict with no rank difference": {
+ a: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ b: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{ // <-- same ID
+ Name: "curl",
+ Domain: "node-a.local",
+ }).WithLatest(PID, time.Now().Add(-1*time.Minute), "0"),
+ },
+ want: report.Nodes{
+ ":192.168.1.1:12345": report.MakeNodeWith(map[string]string{
+ PID: "23128",
+ Name: "curl",
+ Domain: "node-a.local",
+ }),
+ },
+ },
+ "Counters": {
+ a: report.Nodes{
+ "1": report.MakeNode().WithCounters(map[string]int{
+ "a": 13,
+ "b": 57,
+ "c": 89,
+ }),
+ },
+ b: report.Nodes{
+ "1": report.MakeNode().WithCounters(map[string]int{
+ "a": 78,
+ "b": 3,
+ "d": 47,
+ }),
+ },
+ want: report.Nodes{
+ "1": report.MakeNode().WithCounters(map[string]int{
+ "a": 91,
+ "b": 60,
+ "c": 89,
+ "d": 47,
+ }),
+ },
+ },
+ } {
+ if have := c.a.Merge(c.b); !reflect.DeepEqual(c.want, have) {
+ t.Errorf("%s: %s", name, test.Diff(c.want, have))
+ }
+ }
+}
diff --git a/report/report_test.go b/report/report_test.go
index 96be84e29..a36ed0225 100644
--- a/report/report_test.go
+++ b/report/report_test.go
@@ -7,6 +7,8 @@ import (
"github.com/weaveworks/scope/report"
)
+func newu64(value uint64) *uint64 { return &value }
+
// Make sure we don't add a topology and miss it in the Topologies method.
func TestReportTopologies(t *testing.T) {
var (
@@ -28,19 +30,19 @@ func TestReportTopologies(t *testing.T) {
func TestNode(t *testing.T) {
{
- node := report.MakeNode().WithMetadata(report.Metadata{
+ node := report.MakeNode().WithLatests(map[string]string{
"foo": "bar",
})
- if node.Metadata["foo"] != "bar" {
- t.Errorf("want foo, have %s", node.Metadata["foo"])
+ if v, _ := node.Latest.Lookup("foo"); v != "bar" {
+ t.Errorf("want foo, have %s", v)
}
}
{
- node := report.MakeNode().WithCounters(report.Counters{
- "foo": 1,
- })
- if node.Counters["foo"] != 1 {
- t.Errorf("want foo, have %d", node.Counters["foo"])
+ node := report.MakeNode().WithCounters(
+ map[string]int{"foo": 1},
+ )
+ if value, _ := node.Counters.Lookup("foo"); value != 1 {
+ t.Errorf("want foo, have %d", value)
}
}
{
@@ -56,7 +58,7 @@ func TestNode(t *testing.T) {
if node.Adjacency[0] != "foo" {
t.Errorf("want foo, have %v", node.Adjacency)
}
- if *node.Edges["foo"].EgressPacketCount != 13 {
+ if v, ok := node.Edges.Lookup("foo"); ok && *v.EgressPacketCount != 13 {
t.Errorf("want 13, have %v", node.Edges)
}
}
diff --git a/report/sets.go b/report/sets.go
new file mode 100644
index 000000000..8ea9e6dcd
--- /dev/null
+++ b/report/sets.go
@@ -0,0 +1,177 @@
+package report
+
+import (
+ "bytes"
+ "encoding/gob"
+ "encoding/json"
+ "fmt"
+ "reflect"
+ "sort"
+
+ "github.com/mndrix/ps"
+)
+
+// Sets is a string->set-of-strings map.
+// It is immutable.
+type Sets struct {
+ psMap ps.Map
+}
+
+// EmptySets is an empty Sets. Starts with this.
+var EmptySets = Sets{ps.NewMap()}
+
+// MakeSets returns EmptySets
+func MakeSets() Sets {
+ return EmptySets
+}
+
+// Keys returns the keys for this set
+func (s Sets) Keys() []string {
+ return s.psMap.Keys()
+}
+
+// Add the given value to the Sets.
+func (s Sets) Add(key string, value StringSet) Sets {
+ if existingValue, ok := s.psMap.Lookup(key); ok {
+ value = value.Merge(existingValue.(StringSet))
+ }
+ return Sets{
+ psMap: s.psMap.Set(key, value),
+ }
+}
+
+// Lookup returns the sets stored under key.
+func (s Sets) Lookup(key string) (StringSet, bool) {
+ if value, ok := s.psMap.Lookup(key); ok {
+ return value.(StringSet), true
+ }
+ return EmptyStringSet, false
+}
+
+// Size returns the number of elements
+func (s Sets) Size() int {
+ return s.psMap.Size()
+}
+
+// Merge merges two sets maps into a fresh set, performing set-union merges as
+// appropriate.
+func (s Sets) Merge(other Sets) Sets {
+ var (
+ sSize = s.Size()
+ otherSize = other.Size()
+ result = s.psMap
+ iter = other.psMap
+ )
+ switch {
+ case sSize == 0:
+ return other
+ case otherSize == 0:
+ return s
+ case sSize < otherSize:
+ result, iter = iter, result
+ }
+
+ iter.ForEach(func(key string, value interface{}) {
+ set := value.(StringSet)
+ if existingSet, ok := result.Lookup(key); ok {
+ set = set.Merge(existingSet.(StringSet))
+ }
+ result = result.Set(key, set)
+ })
+
+ return Sets{result}
+}
+
+// Copy is a noop
+func (s Sets) Copy() Sets {
+ return s
+}
+
+func (s Sets) String() string {
+ keys := []string{}
+ for _, k := range s.psMap.Keys() {
+ keys = append(keys, k)
+ }
+ sort.Strings(keys)
+
+ buf := bytes.NewBufferString("{")
+ for _, key := range keys {
+ val, _ := s.psMap.Lookup(key)
+ fmt.Fprintf(buf, "%s: %v, ", key, val)
+ }
+ fmt.Fprintf(buf, "}\n")
+ return buf.String()
+}
+
+// DeepEqual tests equality with other Sets
+func (s Sets) DeepEqual(i interface{}) bool {
+ t, ok := i.(Sets)
+ if !ok {
+ return false
+ }
+
+ if s.psMap.Size() != t.psMap.Size() {
+ return false
+ }
+
+ equal := true
+ s.psMap.ForEach(func(k string, val interface{}) {
+ if otherValue, ok := t.psMap.Lookup(k); !ok {
+ equal = false
+ } else {
+ equal = equal && reflect.DeepEqual(val, otherValue)
+ }
+ })
+ return equal
+}
+
+func (s Sets) toIntermediate() map[string]StringSet {
+ intermediate := map[string]StringSet{}
+ s.psMap.ForEach(func(key string, val interface{}) {
+ intermediate[key] = val.(StringSet)
+ })
+ return intermediate
+}
+
+func (s Sets) fromIntermediate(in map[string]StringSet) Sets {
+ out := ps.NewMap()
+ for k, v := range in {
+ out = out.Set(k, v)
+ }
+ return Sets{out}
+}
+
+// MarshalJSON implements json.Marshaller
+func (s Sets) MarshalJSON() ([]byte, error) {
+ if s.psMap != nil {
+ return json.Marshal(s.toIntermediate())
+ }
+ return json.Marshal(nil)
+}
+
+// UnmarshalJSON implements json.Unmarshaler
+func (s *Sets) UnmarshalJSON(input []byte) error {
+ in := map[string]StringSet{}
+ if err := json.Unmarshal(input, &in); err != nil {
+ return err
+ }
+ *s = Sets{}.fromIntermediate(in)
+ return nil
+}
+
+// GobEncode implements gob.Marshaller
+func (s Sets) GobEncode() ([]byte, error) {
+ buf := bytes.Buffer{}
+ err := gob.NewEncoder(&buf).Encode(s.toIntermediate())
+ return buf.Bytes(), err
+}
+
+// GobDecode implements gob.Unmarshaller
+func (s *Sets) GobDecode(input []byte) error {
+ in := map[string]StringSet{}
+ if err := gob.NewDecoder(bytes.NewBuffer(input)).Decode(&in); err != nil {
+ return err
+ }
+ *s = Sets{}.fromIntermediate(in)
+ return nil
+}
diff --git a/report/sets_internal_test.go b/report/sets_internal_test.go
new file mode 100644
index 000000000..4c4253a04
--- /dev/null
+++ b/report/sets_internal_test.go
@@ -0,0 +1,19 @@
+package report
+
+import (
+ "testing"
+
+ "github.com/weaveworks/scope/test/reflect"
+)
+
+func TestSets(t *testing.T) {
+ sets := EmptySets.Add("foo", MakeStringSet("bar"))
+ if v, _ := sets.Lookup("foo"); !reflect.DeepEqual(v, MakeStringSet("bar")) {
+ t.Fatal(v)
+ }
+
+ sets = sets.Merge(EmptySets.Add("foo", MakeStringSet("baz")))
+ if v, _ := sets.Lookup("foo"); !reflect.DeepEqual(v, MakeStringSet("bar", "baz")) {
+ t.Fatal(v)
+ }
+}
diff --git a/report/sets_test.go b/report/sets_test.go
new file mode 100644
index 000000000..31980ffa1
--- /dev/null
+++ b/report/sets_test.go
@@ -0,0 +1,43 @@
+package report_test
+
+import (
+ "testing"
+
+ "github.com/weaveworks/scope/report"
+ "github.com/weaveworks/scope/test/reflect"
+)
+
+func TestSetsMerge(t *testing.T) {
+ for _, testcase := range []struct {
+ a, b report.Sets
+ want map[string][]string
+ }{
+ {report.EmptySets, report.EmptySets, map[string][]string{}},
+ {
+ report.EmptySets,
+ report.EmptySets.Add("a", report.MakeStringSet("b")),
+ map[string][]string{"a": {"b"}},
+ },
+ {
+ report.EmptySets,
+ report.EmptySets.Add("a", report.MakeStringSet("b", "c")),
+ map[string][]string{"a": {"b", "c"}},
+ },
+ {
+ report.EmptySets.Add("a", report.MakeStringSet("1")).Add("b", report.MakeStringSet("2")),
+ report.EmptySets.Add("c", report.MakeStringSet("3")).Add("b", report.MakeStringSet("3")),
+ map[string][]string{"a": {"1"}, "b": {"2", "3"}, "c": {"3"}},
+ },
+ } {
+ haveSets := testcase.a.Merge(testcase.b)
+ have := map[string][]string{}
+ keys := haveSets.Keys()
+ for _, k := range keys {
+ have[k], _ = haveSets.Lookup(k)
+ }
+
+ if !reflect.DeepEqual(testcase.want, have) {
+ t.Errorf("%+v.Merge(%+v): want %+v, have %+v", testcase.a, testcase.b, testcase.want, have)
+ }
+ }
+}
diff --git a/report/string_set.go b/report/string_set.go
new file mode 100644
index 000000000..6a43bee82
--- /dev/null
+++ b/report/string_set.go
@@ -0,0 +1,109 @@
+package report
+
+import (
+ "sort"
+)
+
+// StringSet is a sorted set of unique strings. Clients must use the Add
+// method to add strings.
+type StringSet []string
+
+// EmptyStringSet is an empty string set.
+var EmptyStringSet StringSet
+
+// MakeStringSet makes a new StringSet with the given strings.
+func MakeStringSet(strs ...string) StringSet {
+ if len(strs) <= 0 {
+ return nil
+ }
+ result := make([]string, len(strs))
+ copy(result, strs)
+ sort.Strings(result)
+ for i := 1; i < len(result); { // shuffle down any duplicates
+ if result[i-1] == result[i] {
+ result = append(result[:i-1], result[i:]...)
+ continue
+ }
+ i++
+ }
+ return StringSet(result)
+}
+
+// Contains returns true if the string set includes the given string
+func (s StringSet) Contains(str string) bool {
+ i := sort.Search(len(s), func(i int) bool { return s[i] >= str })
+ return i < len(s) && s[i] == str
+}
+
+// Add adds the strings to the StringSet. Add is the only valid way to grow a
+// StringSet. Add returns the StringSet to enable chaining.
+func (s StringSet) Add(strs ...string) StringSet {
+ for _, str := range strs {
+ i := sort.Search(len(s), func(i int) bool { return s[i] >= str })
+ if i < len(s) && s[i] == str {
+ // The list already has the element.
+ continue
+ }
+ // It a new element, insert it in order.
+ s = append(s, "")
+ copy(s[i+1:], s[i:])
+ s[i] = str
+ }
+ return s
+}
+
+// Remove removes the strings from the StringSet. Remove is the only valid way
+// to shrink a StringSet. Remove returns the StringSet to enable chaining.
+func (s StringSet) Remove(strs ...string) StringSet {
+ for _, str := range strs {
+ i := sort.Search(len(s), func(i int) bool { return s[i] >= str })
+ if i >= len(s) || s[i] != str {
+ // The list does not have the element.
+ continue
+ }
+ // has the element, remove it.
+ s = append(s[:i], s[i+1:]...)
+ }
+ return s
+}
+
+// Merge combines the two StringSets and returns a new result.
+func (s StringSet) Merge(other StringSet) StringSet {
+ switch {
+ case len(other) <= 0: // Optimise special case, to avoid allocating
+ return s // (note unit test DeepEquals breaks if we don't do this)
+ case len(s) <= 0:
+ return other
+ }
+ result := make(StringSet, len(s)+len(other))
+ for i, j, k := 0, 0, 0; ; k++ {
+ switch {
+ case i >= len(s):
+ copy(result[k:], other[j:])
+ return result[:k+len(other)-j]
+ case j >= len(other):
+ copy(result[k:], s[i:])
+ return result[:k+len(s)-i]
+ case s[i] < other[j]:
+ result[k] = s[i]
+ i++
+ case s[i] > other[j]:
+ result[k] = other[j]
+ j++
+ default: // equal
+ result[k] = s[i]
+ i++
+ j++
+ }
+ }
+}
+
+// Copy returns a value copy of the StringSet.
+func (s StringSet) Copy() StringSet {
+ if s == nil {
+ return s
+ }
+ result := make(StringSet, len(s))
+ copy(result, s)
+ return result
+}
diff --git a/report/string_set_test.go b/report/string_set_test.go
new file mode 100644
index 000000000..9671968b1
--- /dev/null
+++ b/report/string_set_test.go
@@ -0,0 +1,26 @@
+package report_test
+
+import (
+ "testing"
+
+ "github.com/weaveworks/scope/report"
+)
+
+func TestStringSetContains(t *testing.T) {
+ for _, testcase := range []struct {
+ contents []string
+ target string
+ want bool
+ }{
+ {nil, "foo", false},
+ {[]string{}, "foo", false},
+ {[]string{"a"}, "foo", false},
+ {[]string{"a", "foo"}, "foo", true},
+ {[]string{"foo", "b"}, "foo", true},
+ } {
+ have := report.MakeStringSet(testcase.contents...).Contains(testcase.target)
+ if testcase.want != have {
+ t.Errorf("%+v.Contains(%q): want %v, have %v", testcase.contents, testcase.target, testcase.want, have)
+ }
+ }
+}
diff --git a/report/topology.go b/report/topology.go
index 8ad064955..2cd890db4 100644
--- a/report/topology.go
+++ b/report/topology.go
@@ -2,9 +2,7 @@ package report
import (
"fmt"
- "sort"
"strings"
- "time"
)
// Topology describes a specific view of a network. It consists of nodes and
@@ -29,11 +27,11 @@ func MakeTopology() Topology {
// The same topology is returned to enable chaining.
// This method is different from all the other similar methods
// in that it mutates the Topology, to solve issues of GC pressure.
-func (t Topology) AddNode(nodeID string, nmd Node) Topology {
+func (t Topology) AddNode(nodeID string, node Node) Topology {
if existing, ok := t.Nodes[nodeID]; ok {
- nmd = nmd.Merge(existing)
+ node = node.Merge(existing)
}
- t.Nodes[nodeID] = nmd
+ t.Nodes[nodeID] = node
return t
}
@@ -80,468 +78,13 @@ func (n Nodes) Merge(other Nodes) Nodes {
return cp
}
-// Node describes a superset of the metadata that probes can collect about a
-// given node in a given topology, along with the edges emanating from the
-// node and metadata about those edges.
-type Node struct {
- ID string `json:"id,omitempty"`
- Topology string `json:"topology,omitempty"`
- Metadata Metadata `json:"metadata,omitempty"`
- Counters Counters `json:"counters,omitempty"`
- Sets Sets `json:"sets,omitempty"`
- Adjacency IDList `json:"adjacency"`
- Edges EdgeMetadatas `json:"edges,omitempty"`
- Controls NodeControls `json:"controls,omitempty"`
- Latest LatestMap `json:"latest,omitempty"`
- Metrics Metrics `json:"metrics,omitempty"`
- Parents Sets `json:"parents,omitempty"`
-}
-
-// MakeNode creates a new Node with no initial metadata.
-func MakeNode() Node {
- return Node{
- Metadata: Metadata{},
- Counters: Counters{},
- Adjacency: MakeIDList(),
- Edges: EdgeMetadatas{},
- Controls: MakeNodeControls(),
- Latest: MakeLatestMap(),
- Metrics: Metrics{},
- Parents: Sets{},
- }
-}
-
-// MakeNodeWith creates a new Node with the supplied map.
-func MakeNodeWith(m map[string]string) Node {
- return MakeNode().WithMetadata(m)
-}
-
-// WithID returns a fresh copy of n, with ID changed.
-func (n Node) WithID(id string) Node {
- result := n.Copy()
- result.ID = id
- return result
-}
-
-// WithTopology returns a fresh copy of n, with ID changed.
-func (n Node) WithTopology(topology string) Node {
- result := n.Copy()
- result.Topology = topology
- return result
-}
-
-// Before is used for sorting nodes by topology and id
-func (n Node) Before(other Node) bool {
- return n.Topology < other.Topology || (n.Topology == other.Topology && n.ID < other.ID)
-}
-
-// Equal is used for comparing nodes by topology and id
-func (n Node) Equal(other Node) bool {
- return n.Topology == other.Topology && n.ID == other.ID
-}
-
-// After is used for sorting nodes by topology and id
-func (n Node) After(other Node) bool {
- return other.Topology < n.Topology || (other.Topology == n.Topology && other.ID < n.ID)
-}
-
-// WithMetadata returns a fresh copy of n, with Metadata m merged in.
-func (n Node) WithMetadata(m map[string]string) Node {
- result := n.Copy()
- result.Metadata = result.Metadata.Merge(m)
- return result
-}
-
-// WithCounters returns a fresh copy of n, with Counters c merged in.
-func (n Node) WithCounters(c map[string]int) Node {
- result := n.Copy()
- result.Counters = result.Counters.Merge(c)
- return result
-}
-
-// WithSet returns a fresh copy of n, with set merged in at key.
-func (n Node) WithSet(key string, set StringSet) Node {
- result := n.Copy()
- result.Sets = result.Sets.Merge(Sets{key: set})
- return result
-}
-
-// WithSets returns a fresh copy of n, with sets merged in.
-func (n Node) WithSets(sets Sets) Node {
- result := n.Copy()
- result.Sets = result.Sets.Merge(sets)
- return result
-}
-
-// WithMetric returns a fresh copy of n, with metric merged in at key.
-func (n Node) WithMetric(key string, metric Metric) Node {
- result := n.Copy()
- result.Metrics[key] = n.Metrics[key].Merge(metric)
- return result
-}
-
-// WithMetrics returns a fresh copy of n, with metrics merged in.
-func (n Node) WithMetrics(metrics Metrics) Node {
- result := n.Copy()
- result.Metrics = result.Metrics.Merge(metrics)
- return result
-}
-
-// WithAdjacent returns a fresh copy of n, with 'a' added to Adjacency
-func (n Node) WithAdjacent(a ...string) Node {
- result := n.Copy()
- result.Adjacency = result.Adjacency.Add(a...)
- return result
-}
-
-// WithEdge returns a fresh copy of n, with 'dst' added to Adjacency and md
-// added to EdgeMetadata.
-func (n Node) WithEdge(dst string, md EdgeMetadata) Node {
- result := n.Copy()
- result.Adjacency = result.Adjacency.Add(dst)
- result.Edges[dst] = md
- return result
-}
-
-// WithControls returns a fresh copy of n, with cs added to Controls.
-func (n Node) WithControls(cs ...string) Node {
- result := n.Copy()
- result.Controls = result.Controls.Add(cs...)
- return result
-}
-
-// WithLatest produces a new Node with k mapped to v in the Latest metadata.
-func (n Node) WithLatest(k string, ts time.Time, v string) Node {
- result := n.Copy()
- result.Latest = result.Latest.Set(k, ts, v)
- return result
-}
-
-// WithParents returns a fresh copy of n, with sets merged in.
-func (n Node) WithParents(parents Sets) Node {
- result := n.Copy()
- result.Parents = result.Parents.Merge(parents)
- return result
-}
-
-// Copy returns a value copy of the Node.
-func (n Node) Copy() Node {
- cp := MakeNode()
- cp.ID = n.ID
- cp.Topology = n.Topology
- cp.Metadata = n.Metadata.Copy()
- cp.Counters = n.Counters.Copy()
- cp.Sets = n.Sets.Copy()
- cp.Adjacency = n.Adjacency.Copy()
- cp.Edges = n.Edges.Copy()
- cp.Controls = n.Controls.Copy()
- cp.Latest = n.Latest.Copy()
- cp.Metrics = n.Metrics.Copy()
- cp.Parents = n.Parents.Copy()
- return cp
-}
-
-// Merge mergses the individual components of a node and returns a
-// fresh node.
-func (n Node) Merge(other Node) Node {
- cp := n.Copy()
- if cp.ID == "" {
- cp.ID = other.ID
- }
- if cp.Topology == "" {
- cp.Topology = other.Topology
- }
- cp.Metadata = cp.Metadata.Merge(other.Metadata)
- cp.Counters = cp.Counters.Merge(other.Counters)
- cp.Sets = cp.Sets.Merge(other.Sets)
- cp.Adjacency = cp.Adjacency.Merge(other.Adjacency)
- cp.Edges = cp.Edges.Merge(other.Edges)
- cp.Controls = cp.Controls.Merge(other.Controls)
- cp.Latest = cp.Latest.Merge(other.Latest)
- cp.Metrics = cp.Metrics.Merge(other.Metrics)
- cp.Parents = cp.Parents.Merge(other.Parents)
- return cp
-}
-
-// Metadata is a string->string map.
-type Metadata map[string]string
-
-// Merge merges two node metadata maps together. In case of conflict, the
-// other (right-hand) side wins. Always reassign the result of merge to the
-// destination. Merge does not modify the receiver.
-func (m Metadata) Merge(other Metadata) Metadata {
- result := m.Copy()
- for k, v := range other {
- result[k] = v // other takes precedence
- }
- return result
-}
-
-// Copy creates a deep copy of the Metadata.
-func (m Metadata) Copy() Metadata {
- result := Metadata{}
- for k, v := range m {
- result[k] = v
- }
- return result
-}
-
-// Counters is a string->int map.
-type Counters map[string]int
-
-// Merge merges two sets of counters into a fresh set of counters, summing
-// values where appropriate.
-func (c Counters) Merge(other Counters) Counters {
- result := c.Copy()
- for k, v := range other {
- result[k] = result[k] + v
- }
- return result
-}
-
-// Copy creates a deep copy of the Counters.
-func (c Counters) Copy() Counters {
- result := Counters{}
- for k, v := range c {
- result[k] = v
- }
- return result
-}
-
-// Sets is a string->set-of-strings map.
-type Sets map[string]StringSet
-
-// Merge merges two sets maps into a fresh set, performing set-union merges as
-// appropriate.
-func (s Sets) Merge(other Sets) Sets {
- result := s.Copy()
- for k, v := range other {
- if result == nil {
- result = Sets{}
- }
- result[k] = result[k].Merge(v)
- }
- return result
-}
-
-// Copy returns a value copy of the sets map.
-func (s Sets) Copy() Sets {
- if s == nil {
- return s
- }
- result := Sets{}
- for k, v := range s {
- result[k] = v.Copy()
- }
- return result
-}
-
-// StringSet is a sorted set of unique strings. Clients must use the Add
-// method to add strings.
-type StringSet []string
-
-// MakeStringSet makes a new StringSet with the given strings.
-func MakeStringSet(strs ...string) StringSet {
- if len(strs) <= 0 {
- return nil
- }
- result := make([]string, len(strs))
- copy(result, strs)
- sort.Strings(result)
- for i := 1; i < len(result); { // shuffle down any duplicates
- if result[i-1] == result[i] {
- result = append(result[:i-1], result[i:]...)
- continue
- }
- i++
- }
- return StringSet(result)
-}
-
-// Add adds the strings to the StringSet. Add is the only valid way to grow a
-// StringSet. Add returns the StringSet to enable chaining.
-func (s StringSet) Add(strs ...string) StringSet {
- for _, str := range strs {
- i := sort.Search(len(s), func(i int) bool { return s[i] >= str })
- if i < len(s) && s[i] == str {
- // The list already has the element.
- continue
- }
- // It a new element, insert it in order.
- s = append(s, "")
- copy(s[i+1:], s[i:])
- s[i] = str
- }
- return s
-}
-
-// Remove removes the strings from the StringSet. Remove is the only valid way
-// to shrink a StringSet. Remove returns the StringSet to enable chaining.
-func (s StringSet) Remove(strs ...string) StringSet {
- for _, str := range strs {
- i := sort.Search(len(s), func(i int) bool { return s[i] >= str })
- if i >= len(s) || s[i] != str {
- // The list does not have the element.
- continue
- }
- // has the element, remove it.
- s = append(s[:i], s[i+1:]...)
- }
- return s
-}
-
-// Merge combines the two StringSets and returns a new result.
-func (s StringSet) Merge(other StringSet) StringSet {
- switch {
- case len(other) <= 0: // Optimise special case, to avoid allocating
- return s // (note unit test DeepEquals breaks if we don't do this)
- case len(s) <= 0:
- return other
- }
- result := make(StringSet, len(s)+len(other))
- for i, j, k := 0, 0, 0; ; k++ {
- switch {
- case i >= len(s):
- copy(result[k:], other[j:])
- return result[:k+len(other)-j]
- case j >= len(other):
- copy(result[k:], s[i:])
- return result[:k+len(s)-i]
- case s[i] < other[j]:
- result[k] = s[i]
- i++
- case s[i] > other[j]:
- result[k] = other[j]
- j++
- default: // equal
- result[k] = s[i]
- i++
- j++
- }
- }
-}
-
-// Copy returns a value copy of the StringSet.
-func (s StringSet) Copy() StringSet {
- if s == nil {
- return s
- }
- result := make(StringSet, len(s))
- copy(result, s)
- return result
-}
-
-// EdgeMetadatas collect metadata about each edge in a topology. Keys are the
-// remote node IDs, as in Adjacency.
-type EdgeMetadatas map[string]EdgeMetadata
-
-// Copy returns a value copy of the EdgeMetadatas.
-func (e EdgeMetadatas) Copy() EdgeMetadatas {
- cp := make(EdgeMetadatas, len(e))
- for k, v := range e {
- cp[k] = v.Copy()
- }
- return cp
-}
-
-// Merge merges the other object into this one, and returns the result object.
-// The original is not modified.
-func (e EdgeMetadatas) Merge(other EdgeMetadatas) EdgeMetadatas {
- cp := e.Copy()
- for k, v := range other {
- cp[k] = cp[k].Merge(v)
- }
- return cp
-}
-
-// Flatten flattens all the EdgeMetadatas in this set and returns the result.
-// The original is not modified.
-func (e EdgeMetadatas) Flatten() EdgeMetadata {
- result := EdgeMetadata{}
- for _, v := range e {
- result = result.Flatten(v)
- }
- return result
-}
-
-// EdgeMetadata describes a superset of the metadata that probes can possibly
-// collect about a directed edge between two nodes in any topology.
-type EdgeMetadata struct {
- EgressPacketCount *uint64 `json:"egress_packet_count,omitempty"`
- IngressPacketCount *uint64 `json:"ingress_packet_count,omitempty"`
- EgressByteCount *uint64 `json:"egress_byte_count,omitempty"` // Transport layer
- IngressByteCount *uint64 `json:"ingress_byte_count,omitempty"` // Transport layer
- MaxConnCountTCP *uint64 `json:"max_conn_count_tcp,omitempty"`
-}
-
-// Copy returns a value copy of the EdgeMetadata.
-func (e EdgeMetadata) Copy() EdgeMetadata {
- return EdgeMetadata{
- EgressPacketCount: cpu64ptr(e.EgressPacketCount),
- IngressPacketCount: cpu64ptr(e.IngressPacketCount),
- EgressByteCount: cpu64ptr(e.EgressByteCount),
- IngressByteCount: cpu64ptr(e.IngressByteCount),
- MaxConnCountTCP: cpu64ptr(e.MaxConnCountTCP),
- }
-}
-
-// Reversed returns a value copy of the EdgeMetadata, with the direction reversed.
-func (e EdgeMetadata) Reversed() EdgeMetadata {
- return EdgeMetadata{
- EgressPacketCount: cpu64ptr(e.IngressPacketCount),
- IngressPacketCount: cpu64ptr(e.EgressPacketCount),
- EgressByteCount: cpu64ptr(e.IngressByteCount),
- IngressByteCount: cpu64ptr(e.EgressByteCount),
- MaxConnCountTCP: cpu64ptr(e.MaxConnCountTCP),
- }
-}
-
-func cpu64ptr(u *uint64) *uint64 {
- if u == nil {
- return nil
- }
- value := *u // oh man
- return &value // this sucks
-}
-
-// Merge merges another EdgeMetadata into the receiver and returns the result.
-// The receiver is not modified. The two edge metadatas should represent the
-// same edge on different times.
-func (e EdgeMetadata) Merge(other EdgeMetadata) EdgeMetadata {
- cp := e.Copy()
- cp.EgressPacketCount = merge(cp.EgressPacketCount, other.EgressPacketCount, sum)
- cp.IngressPacketCount = merge(cp.IngressPacketCount, other.IngressPacketCount, sum)
- cp.EgressByteCount = merge(cp.EgressByteCount, other.EgressByteCount, sum)
- cp.IngressByteCount = merge(cp.IngressByteCount, other.IngressByteCount, sum)
- cp.MaxConnCountTCP = merge(cp.MaxConnCountTCP, other.MaxConnCountTCP, max)
- return cp
-}
-
-// Flatten sums two EdgeMetadatas and returns the result. The receiver is not
-// modified. The two edge metadata windows should be the same duration; they
-// should represent different edges at the same time.
-func (e EdgeMetadata) Flatten(other EdgeMetadata) EdgeMetadata {
- cp := e.Copy()
- cp.EgressPacketCount = merge(cp.EgressPacketCount, other.EgressPacketCount, sum)
- cp.IngressPacketCount = merge(cp.IngressPacketCount, other.IngressPacketCount, sum)
- cp.EgressByteCount = merge(cp.EgressByteCount, other.EgressByteCount, sum)
- cp.IngressByteCount = merge(cp.IngressByteCount, other.IngressByteCount, sum)
- // Note that summing of two maximums doesn't always give us the true
- // maximum. But it's a best effort.
- cp.MaxConnCountTCP = merge(cp.MaxConnCountTCP, other.MaxConnCountTCP, sum)
- return cp
-}
-
// Validate checks the topology for various inconsistencies.
func (t Topology) Validate() error {
errs := []string{}
- // Check all node metadatas are valid, and the keys are parseable, i.e.
+ // Check all nodes are valid, and the keys are parseable, i.e.
// contain a scope.
for nodeID, nmd := range t.Nodes {
- if nmd.Metadata == nil {
- errs = append(errs, fmt.Sprintf("node ID %q has nil metadata", nodeID))
- }
if _, _, ok := ParseNodeID(nodeID); !ok {
errs = append(errs, fmt.Sprintf("invalid node ID %q", nodeID))
}
@@ -549,16 +92,16 @@ func (t Topology) Validate() error {
// Check all adjancency keys has entries in Node.
for _, dstNodeID := range nmd.Adjacency {
if _, ok := t.Nodes[dstNodeID]; !ok {
- errs = append(errs, fmt.Sprintf("node metadata missing from adjacency %q -> %q", nodeID, dstNodeID))
+ errs = append(errs, fmt.Sprintf("node missing from adjacency %q -> %q", nodeID, dstNodeID))
}
}
// Check all the edge metadatas have entries in adjacencies
- for dstNodeID := range nmd.Edges {
+ nmd.Edges.ForEach(func(dstNodeID string, _ EdgeMetadata) {
if _, ok := t.Nodes[dstNodeID]; !ok {
- errs = append(errs, fmt.Sprintf("node %s metadatas missing for edge %q", dstNodeID, nodeID))
+ errs = append(errs, fmt.Sprintf("node %s missing for edge %q", dstNodeID, nodeID))
}
- }
+ })
}
if len(errs) > 0 {
@@ -567,25 +110,3 @@ func (t Topology) Validate() error {
return nil
}
-
-func merge(dst, src *uint64, op func(uint64, uint64) uint64) *uint64 {
- if src == nil {
- return dst
- }
- if dst == nil {
- dst = new(uint64)
- }
- (*dst) = op(*dst, *src)
- return dst
-}
-
-func sum(dst, src uint64) uint64 {
- return dst + src
-}
-
-func max(dst, src uint64) uint64 {
- if dst > src {
- return dst
- }
- return src
-}
diff --git a/report/topology_test.go b/report/topology_test.go
index 19cbf244b..0606c315f 100644
--- a/report/topology_test.go
+++ b/report/topology_test.go
@@ -1,10 +1,10 @@
package report_test
import (
- "reflect"
"testing"
"github.com/weaveworks/scope/report"
+ "github.com/weaveworks/scope/test/reflect"
)
func TestMakeStringSet(t *testing.T) {
diff --git a/test/fixture/report_fixture.go b/test/fixture/report_fixture.go
index 1538edcfd..4b5f72231 100644
--- a/test/fixture/report_fixture.go
+++ b/test/fixture/report_fixture.go
@@ -126,7 +126,7 @@ var (
// Node is arbitrary. We're free to put only precisely what we
// care to test into the fixture. Just be sure to include the bits
// that the mapping funcs extract :)
- Client54001NodeID: report.MakeNode().WithMetadata(map[string]string{
+ Client54001NodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: ClientIP,
endpoint.Port: ClientPort54001,
process.PID: Client1PID,
@@ -137,7 +137,7 @@ var (
EgressByteCount: newu64(100),
}),
- Client54002NodeID: report.MakeNode().WithMetadata(map[string]string{
+ Client54002NodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: ClientIP,
endpoint.Port: ClientPort54002,
process.PID: Client2PID,
@@ -148,7 +148,7 @@ var (
EgressByteCount: newu64(200),
}),
- Server80NodeID: report.MakeNode().WithMetadata(map[string]string{
+ Server80NodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: ServerIP,
endpoint.Port: ServerPort,
process.PID: ServerPID,
@@ -156,7 +156,7 @@ var (
endpoint.Procspied: True,
}),
- NonContainerNodeID: report.MakeNode().WithMetadata(map[string]string{
+ NonContainerNodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: ServerIP,
endpoint.Port: NonContainerClientPort,
process.PID: NonContainerPID,
@@ -165,7 +165,7 @@ var (
}).WithAdjacent(GoogleEndpointNodeID),
// Probe pseudo nodes
- UnknownClient1NodeID: report.MakeNode().WithMetadata(map[string]string{
+ UnknownClient1NodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: UnknownClient1IP,
endpoint.Port: UnknownClient1Port,
endpoint.Procspied: True,
@@ -174,7 +174,7 @@ var (
EgressByteCount: newu64(300),
}),
- UnknownClient2NodeID: report.MakeNode().WithMetadata(map[string]string{
+ UnknownClient2NodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: UnknownClient2IP,
endpoint.Port: UnknownClient2Port,
endpoint.Procspied: True,
@@ -183,7 +183,7 @@ var (
EgressByteCount: newu64(400),
}),
- UnknownClient3NodeID: report.MakeNode().WithMetadata(map[string]string{
+ UnknownClient3NodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: UnknownClient3IP,
endpoint.Port: UnknownClient3Port,
endpoint.Procspied: True,
@@ -192,7 +192,7 @@ var (
EgressByteCount: newu64(500),
}),
- RandomClientNodeID: report.MakeNode().WithMetadata(map[string]string{
+ RandomClientNodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: RandomClientIP,
endpoint.Port: RandomClientPort,
endpoint.Procspied: True,
@@ -201,7 +201,7 @@ var (
EgressByteCount: newu64(600),
}),
- GoogleEndpointNodeID: report.MakeNode().WithMetadata(map[string]string{
+ GoogleEndpointNodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: GoogleIP,
endpoint.Port: GooglePort,
endpoint.Procspied: True,
@@ -215,11 +215,11 @@ var (
process.Name: Client1Name,
docker.ContainerID: ClientContainerID,
report.HostNodeID: ClientHostNodeID,
- }).WithID(ClientProcess1NodeID).WithTopology(report.Process).WithParents(report.Sets{
- "host": report.MakeStringSet(ClientHostNodeID),
- "container": report.MakeStringSet(ClientContainerNodeID),
- "container_image": report.MakeStringSet(ClientContainerImageNodeID),
- }).WithMetrics(report.Metrics{
+ }).WithID(ClientProcess1NodeID).WithTopology(report.Process).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ClientHostNodeID)).
+ Add("container", report.MakeStringSet(ClientContainerNodeID)).
+ Add("container_image", report.MakeStringSet(ClientContainerImageNodeID)),
+ ).WithMetrics(report.Metrics{
process.CPUUsage: ClientProcess1CPUMetric,
process.MemoryUsage: ClientProcess1MemoryMetric,
}),
@@ -228,28 +228,28 @@ var (
process.Name: Client2Name,
docker.ContainerID: ClientContainerID,
report.HostNodeID: ClientHostNodeID,
- }).WithID(ClientProcess2NodeID).WithTopology(report.Process).WithParents(report.Sets{
- "host": report.MakeStringSet(ClientHostNodeID),
- "container": report.MakeStringSet(ClientContainerNodeID),
- "container_image": report.MakeStringSet(ClientContainerImageNodeID),
- }),
+ }).WithID(ClientProcess2NodeID).WithTopology(report.Process).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ClientHostNodeID)).
+ Add("container", report.MakeStringSet(ClientContainerNodeID)).
+ Add("container_image", report.MakeStringSet(ClientContainerImageNodeID)),
+ ),
ServerProcessNodeID: report.MakeNodeWith(map[string]string{
process.PID: ServerPID,
process.Name: ServerName,
docker.ContainerID: ServerContainerID,
report.HostNodeID: ServerHostNodeID,
- }).WithID(ServerProcessNodeID).WithTopology(report.Process).WithParents(report.Sets{
- "host": report.MakeStringSet(ServerHostNodeID),
- "container": report.MakeStringSet(ServerContainerNodeID),
- "container_image": report.MakeStringSet(ServerContainerImageNodeID),
- }),
+ }).WithID(ServerProcessNodeID).WithTopology(report.Process).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ServerHostNodeID)).
+ Add("container", report.MakeStringSet(ServerContainerNodeID)).
+ Add("container_image", report.MakeStringSet(ServerContainerImageNodeID)),
+ ),
NonContainerProcessNodeID: report.MakeNodeWith(map[string]string{
process.PID: NonContainerPID,
process.Name: NonContainerName,
report.HostNodeID: ServerHostNodeID,
- }).WithID(NonContainerProcessNodeID).WithTopology(report.Process).WithParents(report.Sets{
- "host": report.MakeStringSet(ServerHostNodeID),
- }),
+ }).WithID(NonContainerProcessNodeID).WithTopology(report.Process).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ServerHostNodeID)),
+ ),
},
},
Container: report.Topology{
@@ -262,18 +262,19 @@ var (
docker.LabelPrefix + "io.kubernetes.pod.name": ClientPodID,
kubernetes.PodID: ClientPodID,
kubernetes.Namespace: KubernetesNamespace,
- }).WithLatest(docker.ContainerState, Now, docker.StateRunning).WithID(ClientContainerNodeID).WithTopology(report.Container).WithParents(report.Sets{
- "host": report.MakeStringSet(ClientHostNodeID),
- "container_image": report.MakeStringSet(ClientContainerImageNodeID),
- "pod": report.MakeStringSet(ClientPodID),
- }).WithMetrics(report.Metrics{
+ docker.ContainerState: docker.StateRunning,
+ }).WithID(ClientContainerNodeID).WithTopology(report.Container).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ClientHostNodeID)).
+ Add("container_image", report.MakeStringSet(ClientContainerImageNodeID)).
+ Add("pod", report.MakeStringSet(ClientPodID)),
+ ).WithMetrics(report.Metrics{
docker.CPUTotalUsage: ClientContainerCPUMetric,
docker.MemoryUsage: ClientContainerMemoryMetric,
}),
ServerContainerNodeID: report.MakeNodeWith(map[string]string{
docker.ContainerID: ServerContainerID,
docker.ContainerName: "task-name-5-server-aceb93e2f2b797caba01",
- docker.ContainerState: "running",
+ docker.ContainerState: docker.StateRunning,
docker.ImageID: ServerContainerImageID,
report.HostNodeID: ServerHostNodeID,
docker.LabelPrefix + render.AmazonECSContainerNameLabel: "server",
@@ -282,11 +283,11 @@ var (
docker.LabelPrefix + "io.kubernetes.pod.name": ServerPodID,
kubernetes.PodID: ServerPodID,
kubernetes.Namespace: KubernetesNamespace,
- }).WithLatest(docker.ContainerState, Now, docker.StateRunning).WithID(ServerContainerNodeID).WithTopology(report.Container).WithParents(report.Sets{
- "host": report.MakeStringSet(ServerHostNodeID),
- "container_image": report.MakeStringSet(ServerContainerImageNodeID),
- "pod": report.MakeStringSet(ServerPodID),
- }).WithMetrics(report.Metrics{
+ }).WithID(ServerContainerNodeID).WithTopology(report.Container).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ServerHostNodeID)).
+ Add("container_image", report.MakeStringSet(ServerContainerImageNodeID)).
+ Add("pod", report.MakeStringSet(ServerPodID)),
+ ).WithMetrics(report.Metrics{
docker.CPUTotalUsage: ServerContainerCPUMetric,
docker.MemoryUsage: ServerContainerMemoryMetric,
}),
@@ -298,47 +299,47 @@ var (
docker.ImageID: ClientContainerImageID,
docker.ImageName: ClientContainerImageName,
report.HostNodeID: ClientHostNodeID,
- }).WithParents(report.Sets{
- "host": report.MakeStringSet(ClientHostNodeID),
- }).WithID(ClientContainerImageNodeID).WithTopology(report.ContainerImage),
+ }).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ClientHostNodeID)),
+ ).WithID(ClientContainerImageNodeID).WithTopology(report.ContainerImage),
ServerContainerImageNodeID: report.MakeNodeWith(map[string]string{
docker.ImageID: ServerContainerImageID,
docker.ImageName: ServerContainerImageName,
report.HostNodeID: ServerHostNodeID,
docker.LabelPrefix + "foo1": "bar1",
docker.LabelPrefix + "foo2": "bar2",
- }).WithParents(report.Sets{
- "host": report.MakeStringSet(ServerHostNodeID),
- }).WithID(ServerContainerImageNodeID).WithTopology(report.ContainerImage),
+ }).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ServerHostNodeID)),
+ ).WithID(ServerContainerImageNodeID).WithTopology(report.ContainerImage),
},
},
Address: report.Topology{
Nodes: report.Nodes{
- ClientAddressNodeID: report.MakeNode().WithMetadata(map[string]string{
+ ClientAddressNodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: ClientIP,
report.HostNodeID: ClientHostNodeID,
}).WithEdge(ServerAddressNodeID, report.EdgeMetadata{
MaxConnCountTCP: newu64(3),
}),
- ServerAddressNodeID: report.MakeNode().WithMetadata(map[string]string{
+ ServerAddressNodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: ServerIP,
report.HostNodeID: ServerHostNodeID,
}),
- UnknownAddress1NodeID: report.MakeNode().WithMetadata(map[string]string{
+ UnknownAddress1NodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: UnknownClient1IP,
}).WithAdjacent(ServerAddressNodeID),
- UnknownAddress2NodeID: report.MakeNode().WithMetadata(map[string]string{
+ UnknownAddress2NodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: UnknownClient2IP,
}).WithAdjacent(ServerAddressNodeID),
- UnknownAddress3NodeID: report.MakeNode().WithMetadata(map[string]string{
+ UnknownAddress3NodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: UnknownClient3IP,
}).WithAdjacent(ServerAddressNodeID),
- RandomAddressNodeID: report.MakeNode().WithMetadata(map[string]string{
+ RandomAddressNodeID: report.MakeNode().WithLatests(map[string]string{
endpoint.Addr: RandomClientIP,
}).WithAdjacent(ServerAddressNodeID),
},
@@ -349,9 +350,9 @@ var (
"host_name": ClientHostName,
"os": "Linux",
report.HostNodeID: ClientHostNodeID,
- }).WithID(ClientHostNodeID).WithTopology(report.Host).WithSets(report.Sets{
- host.LocalNetworks: report.MakeStringSet("10.10.10.0/24"),
- }).WithMetrics(report.Metrics{
+ }).WithID(ClientHostNodeID).WithTopology(report.Host).WithSets(report.EmptySets.
+ Add(host.LocalNetworks, report.MakeStringSet("10.10.10.0/24")),
+ ).WithMetrics(report.Metrics{
host.CPUUsage: ClientHostCPUMetric,
host.MemoryUsage: ClientHostMemoryMetric,
host.Load1: ClientHostLoad1Metric,
@@ -362,9 +363,9 @@ var (
"host_name": ServerHostName,
"os": "Linux",
report.HostNodeID: ServerHostNodeID,
- }).WithID(ServerHostNodeID).WithTopology(report.Host).WithSets(report.Sets{
- host.LocalNetworks: report.MakeStringSet("10.10.10.0/24"),
- }).WithMetrics(report.Metrics{
+ }).WithID(ServerHostNodeID).WithTopology(report.Host).WithSets(report.EmptySets.
+ Add(host.LocalNetworks, report.MakeStringSet("10.10.10.0/24")),
+ ).WithMetrics(report.Metrics{
host.CPUUsage: ServerHostCPUMetric,
host.MemoryUsage: ServerHostMemoryMetric,
host.Load1: ServerHostLoad1Metric,
@@ -381,20 +382,20 @@ var (
kubernetes.Namespace: KubernetesNamespace,
kubernetes.PodContainerIDs: ClientContainerID,
kubernetes.ServiceIDs: ServiceID,
- }).WithID(ClientPodNodeID).WithTopology(report.Pod).WithParents(report.Sets{
- "host": report.MakeStringSet(ClientHostNodeID),
- "service": report.MakeStringSet(ServiceID),
- }),
+ }).WithID(ClientPodNodeID).WithTopology(report.Pod).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ClientHostNodeID)).
+ Add("service", report.MakeStringSet(ServiceID)),
+ ),
ServerPodNodeID: report.MakeNodeWith(map[string]string{
kubernetes.PodID: ServerPodID,
kubernetes.PodName: "pong-b",
kubernetes.Namespace: KubernetesNamespace,
kubernetes.PodContainerIDs: ServerContainerID,
kubernetes.ServiceIDs: ServiceID,
- }).WithID(ServerPodNodeID).WithTopology(report.Pod).WithParents(report.Sets{
- "host": report.MakeStringSet(ServerHostNodeID),
- "service": report.MakeStringSet(ServiceID),
- }),
+ }).WithID(ServerPodNodeID).WithTopology(report.Pod).WithParents(report.EmptySets.
+ Add("host", report.MakeStringSet(ServerHostNodeID)).
+ Add("service", report.MakeStringSet(ServiceID)),
+ ),
},
},
Service: report.Topology{
diff --git a/test/poll.go b/test/poll.go
index da20f15e3..4a120aa18 100644
--- a/test/poll.go
+++ b/test/poll.go
@@ -1,10 +1,11 @@
package test
import (
- "reflect"
"runtime"
"testing"
"time"
+
+ "github.com/weaveworks/scope/test/reflect"
)
// Poll repeatedly evaluates condition until we either timeout, or it suceeds.
diff --git a/test/reflect/deepequal.go b/test/reflect/deepequal.go
new file mode 100644
index 000000000..12d34fefa
--- /dev/null
+++ b/test/reflect/deepequal.go
@@ -0,0 +1,172 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Deep equality test via reflection
+
+package reflect
+
+import (
+ "reflect"
+)
+
+// During deepValueEqual, must keep track of checks that are
+// in progress. The comparison algorithm assumes that all
+// checks in progress are true when it reencounters them.
+// Visited comparisons are stored in a map indexed by visit.
+type visit struct {
+ a1 uintptr
+ a2 uintptr
+ typ reflect.Type
+}
+
+// Tests for deep equality using reflected types. The map argument tracks
+// comparisons that have already been seen, which allows short circuiting on
+// recursive types.
+func deepValueEqual(v1, v2 reflect.Value, visited map[visit]bool, depth int) bool {
+ if !v1.IsValid() || !v2.IsValid() {
+ return v1.IsValid() == v2.IsValid()
+ }
+ if v1.Type() != v2.Type() {
+ return false
+ }
+
+ // if depth > 10 { panic("deepValueEqual") } // for debugging
+ hard := func(k reflect.Kind) bool {
+ switch k {
+ case reflect.Array, reflect.Map, reflect.Slice, reflect.Struct:
+ return true
+ }
+ return false
+ }
+
+ if v1.CanAddr() && v2.CanAddr() && hard(v1.Kind()) {
+ addr1 := v1.UnsafeAddr()
+ addr2 := v2.UnsafeAddr()
+ if addr1 > addr2 {
+ // Canonicalize order to reduce number of entries in visited.
+ addr1, addr2 = addr2, addr1
+ }
+
+ // Short circuit if references are identical ...
+ if addr1 == addr2 {
+ return true
+ }
+
+ // ... or already seen
+ typ := v1.Type()
+ v := visit{addr1, addr2, typ}
+ if visited[v] {
+ return true
+ }
+
+ // Remember for later.
+ visited[v] = true
+ }
+
+ if m := v1.MethodByName("DeepEqual"); m.IsValid() {
+ results := m.Call([]reflect.Value{v2})
+ if len(results) != 1 || results[0].Kind() != reflect.Bool {
+ panic("DeepEqual must return 1 bool")
+ }
+ return results[0].Bool()
+ }
+
+ switch v1.Kind() {
+ case reflect.Array:
+ for i := 0; i < v1.Len(); i++ {
+ if !deepValueEqual(v1.Index(i), v2.Index(i), visited, depth+1) {
+ return false
+ }
+ }
+ return true
+ case reflect.Slice:
+ if v1.IsNil() != v2.IsNil() {
+ return false
+ }
+ if v1.Len() != v2.Len() {
+ return false
+ }
+ if v1.Pointer() == v2.Pointer() {
+ return true
+ }
+ for i := 0; i < v1.Len(); i++ {
+ if !deepValueEqual(v1.Index(i), v2.Index(i), visited, depth+1) {
+ return false
+ }
+ }
+ return true
+ case reflect.Interface:
+ if v1.IsNil() || v2.IsNil() {
+ return v1.IsNil() == v2.IsNil()
+ }
+ return deepValueEqual(v1.Elem(), v2.Elem(), visited, depth+1)
+ case reflect.Ptr:
+ return deepValueEqual(v1.Elem(), v2.Elem(), visited, depth+1)
+ case reflect.Struct:
+ for i, n := 0, v1.NumField(); i < n; i++ {
+ if !deepValueEqual(v1.Field(i), v2.Field(i), visited, depth+1) {
+ return false
+ }
+ }
+ return true
+ case reflect.Map:
+ if v1.IsNil() != v2.IsNil() {
+ return false
+ }
+ if v1.Len() != v2.Len() {
+ return false
+ }
+ if v1.Pointer() == v2.Pointer() {
+ return true
+ }
+ for _, k := range v1.MapKeys() {
+ if !deepValueEqual(v1.MapIndex(k), v2.MapIndex(k), visited, depth+1) {
+ return false
+ }
+ }
+ return true
+ case reflect.Func:
+ if v1.IsNil() && v2.IsNil() {
+ return true
+ }
+ // Can't do better than this:
+ return false
+ case reflect.Bool:
+ return v1.Bool() == v2.Bool()
+ case reflect.Float32, reflect.Float64:
+ return v1.Float() == v2.Float()
+ case reflect.Int, reflect.Int8, reflect.Int16, reflect.Int32, reflect.Int64:
+ return v1.Int() == v2.Int()
+ case reflect.Uint, reflect.Uintptr, reflect.Uint8, reflect.Uint16, reflect.Uint32, reflect.Uint64:
+ return v1.Uint() == v2.Uint()
+ case reflect.String:
+ return v1.String() == v2.String()
+ default:
+ // Normal equality suffices
+ if v1.CanInterface() && v2.CanInterface() {
+ return v1.Interface() == v1.Interface()
+ } else if v1.CanInterface() || v2.CanInterface() {
+ return false
+ }
+ return true
+ }
+}
+
+// DeepEqual tests for deep equality. It uses normal == equality where
+// possible but will scan elements of arrays, slices, maps, and fields of
+// structs. In maps, keys are compared with == but elements use deep
+// equality. DeepEqual correctly handles recursive types. Functions are equal
+// only if they are both nil.
+// An empty slice is not equal to a nil slice.
+func DeepEqual(a1, a2 interface{}) bool {
+ if a1 == nil || a2 == nil {
+ return a1 == a2
+ }
+ v1 := reflect.ValueOf(a1)
+ v2 := reflect.ValueOf(a2)
+ if v1.Type() != v2.Type() {
+ return false
+ }
+ return deepValueEqual(v1, v2, make(map[visit]bool), 0)
+}