Commit Graph
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