117 Commits

Author SHA1 Message Date
Paul Bellamy
5dcd53e24c fix bug in metrics first/last calculation if second arg was zero 2015-11-12 17:06:40 +00:00
Paul Bellamy
9176699941 omit metric first/last timestamps if they are zero 2015-11-12 17:06:40 +00:00
Paul Bellamy
8f63d7be7f Metrics plumbing for reports.
- base load graph x-axis on data, not a hardcoded window
- format memory dynamically to scale
- add some tests for the immutability of metrics
- use ps.List for Sample storage, so it is immutable. Have to implement custom marshalling
- adding tests for report.Metrics
- check the ordering of the json samples
- Make the nil value for Metrics valid.
- Sort samples from oldest to newest on the wire.
2015-11-11 17:16:13 +00:00
Tom Wilkie
47ef1e02b3 Shortcut app -> UI ws push for certain reports. 2015-11-10 13:46:57 +00:00
Tom Wilkie
a89c0b9b88 Make an empty StringSet nil. 2015-11-09 16:25:49 +00:00
Tom Wilkie
5e2c165fd8 Review feedback 2015-11-09 11:38:15 +00:00
Tom Wilkie
43d0ce986f Add 'latest' CRDT; use it to store container state.
Also use same technique to merge the controls, returning the latest
set of controls instead of the union.
2015-11-06 18:26:38 +00:00
Tom Wilkie
76d34330a9 Add Control plumbing. 2015-11-06 17:39:48 +00:00
Tom Wilkie
bdf39aeaab Don't mutate the input array for MakeStringSet 2015-10-29 12:23:38 +00:00
Tom Wilkie
6e9ad995b0 Use Node.Sets for Docker/Weave IPs 2015-10-27 14:12:35 +00:00
Tom Wilkie
6913431138 Make IDList an alias for StringSet 2015-10-27 14:12:34 +00:00
Tom Wilkie
5a0e23b3ea Some additional methods for using Sets. 2015-10-27 14:12:34 +00:00
Peter Bourgon
c68516ec22 report: add StringSet (port of IDList, effectively) 2015-10-27 14:12:34 +00:00
Tom Wilkie
cd97708af0 Review feedback 2015-10-21 10:04:27 +00:00
Paul Bellamy
6ad182a144 Merge pull request #441 from weaveworks/kubernetes
Basic Kubernetes Integration
2015-10-06 14:49:55 +01:00
Paul Bellamy
be1d1d52d0 Basic Kubernetes integration
* Added helper for installing scope on gcloud
* Added topologies Pods and Pods-by-Service
* Uses k8s.io/kubernetes/pkg/client/cache for the client
* Filter kube-system nodes by default
* Only show the k8s topologies if we've received a non-empty k8s report
2015-10-06 12:55:51 +01:00
Tom Wilkie
d3aa975eb9 In containers view, show short lived connections to/from the internet by including port mappings in the join. 2015-10-01 16:31:38 +00:00
Tom Wilkie
50e20b1a34 When flattening edge metadata and propagating to the server end of the edge, reverse the direction of the metadata. 2015-09-24 05:28:40 +00:00
Tom Wilkie
cdf051ffe9 Test counter merging. 2015-09-23 09:53:40 +00:00
Tom Wilkie
f9815afad3 Remove some duplicate functionality, add some basic tests. 2015-09-23 09:46:11 +00:00
Tom Wilkie
15417b6b02 Show container image details for containers. 2015-09-22 05:48:18 +00:00
Tom Wilkie
8b424df2be Review feedback. 2015-09-16 09:29:42 +00:00
Tom Wilkie
fcb7c47bd9 Always include endpoint nodes brought in by procspy, even if they get merged with conntracked endpoints. 2015-09-16 03:46:15 +00:00
Tom Wilkie
7eeb768787 Nodes.Merge should Merge Node(s)! 2015-09-15 10:03:01 +00:00
Tom Wilkie
2f760f2f33 Cache generated ids to relieve pressure on the GC 2015-09-09 15:01:58 +00:00
Tom Wilkie
d411afd916 WithNode is a CPU hog. 2015-09-09 15:01:57 +00:00
Peter Bourgon
b143946db6 omitempty 2015-09-08 11:41:19 +02:00
Peter Bourgon
474525bcd6 Don't omit Node fields from JSON rendering 2015-09-08 10:47:40 +02:00
Peter Bourgon
7513b4e396 Wrap comments at 80col throughout the fileset 2015-09-07 10:36:35 +02:00
Alvaro Saurin
15e25edc40 New asynchronous, caching DNS resolver for reverse resolutions
Add nodes for the remote side of connections iff we have a DNS reverse resolution for the IP.
Unit test for the resolver
2015-09-04 17:21:45 +02:00
Tom Wilkie
57f7b4f2e6 Rename NodeMetadata -> Node 2015-09-03 16:18:54 +00:00
Tom Wilkie
d09a853fb2 Show container image details for containers. 2015-09-03 10:26:13 +00:00
Tom Wilkie
9ba38d71cc Review feedback 2015-09-03 10:19:27 +00:00
Tom Wilkie
21675f3000 Remove LeafMap - have a generic function which converts a Topology to a RenderableNodes. 2015-09-02 15:03:57 +00:00
Tom Wilkie
144a798602 Review Feedback 2015-09-02 14:32:47 +00:00
Tom Wilkie
afc2788777 Move EdgeMetadata into the NodeMetadata struct. 2015-09-02 14:32:44 +00:00
Tom Wilkie
e867d168e1 Typo 2015-09-01 12:59:26 +00:00
Tom Wilkie
899e2d7a5c Review feedback 2015-09-01 11:01:25 +00:00
Tom Wilkie
1f6b3d4a45 Move Adjacency info inside the NodeMetadata struct; move pseudo node generation to the probes. 2015-08-28 15:20:27 +00:00
Peter Bourgon
775f0ede90 render: fixes for new merge semantics 2015-08-26 12:02:11 +01:00
Peter Bourgon
42be036428 report: always copy 2015-08-25 17:52:20 +01:00
Peter Bourgon
b138dda3b3 Move merge functions with their types 2015-08-25 13:31:25 +01:00
Tom Wilkie
08e1090a65 Merge pull request #369 from weaveworks/336-show-counts
Show how many containers have been grouped together under an image
2015-08-19 15:42:00 +01:00
Tom Wilkie
7508df7e5b Add NodeMetadata.Counters with appropriate merge semantics 2015-08-19 14:24:21 +00:00
Tom Wilkie
60d1b503c1 Deal with directed edges in the rest of the codebase. 2015-08-19 10:17:31 +00:00
Tom Wilkie
89831bfdd2 Condense origin address entries into a single table. 2015-08-18 11:23:45 +00:00
Peter Bourgon
0dafad763f Calculate rates in detailed nodes 2015-08-03 16:04:06 +02:00
Peter Bourgon
e1f7752a34 Split PacketCount to Egress and Ingress
Also, 1 packet may be counted in N topologies, so you can't rely on the
sum of all packet counts across topologies having any relation to the
sampling data.
2015-08-03 14:58:41 +02:00
Peter Bourgon
0361b11b87 Fix bugs in how we report bandwidth 2015-08-03 12:25:56 +02:00
Peter Bourgon
0aadf6447b Revert to correct edge construction
Another implicit invariant in the data model is that edges are always of the
form (local -> remote). That is, the source of an edge must always be a node
that originates from within Scope's domain of visibility. This was evident by
the presence of ingress and egress fields in edge/aggregate metadata.

When building the sniffer, I accidentally and incorrectly violated this
invariant, by constructing distinct edges for (local -> remote) and (remote ->
local), and collapsing ingress and egress byte counts to a single scalar. I
experienced a variety of subtle undefined behavior as a result. See #339.

This change reverts to the old, correct methodology. Consequently the sniffer
needs to be able to find out which side of the sniffed packet is local v.
remote, and to do that it needs access to local networks. I moved the
discovery from the probe/host package into probe/main.go.

As part of that work I discovered that package report also maintains its own,
independent "cache" of local networks. Except it contains only the (optional)
Docker bridge network, if it's been populated by the probe, and it's only used
by the report.Make{Endpoint,Address}NodeID constructors to scope local
addresses. Normally, scoping happens during rendering, and only for pseudo
nodes -- see current LeafMap Render localNetworks. This is pretty convoluted
and should be either be made consistent or heavily commented.
2015-08-03 10:55:59 +02:00