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) +}