105 Commits
Author SHA1 Message Date
Matthias Radestock 94cd73c72b tiny simplifying refactor 2016-09-14 12:19:09 +01:00
Matthias Radestock 69735217ac pick a unique destination endpoint for each connection 2016-09-14 09:13:21 +01:00
Matthias Radestock 58b22f0710 in details panel, count connections only once
Fixes #1842
2016-09-14 09:12:51 +01:00
Matthias Radestock bb4007e3cb refactor: extract a couple of map "constants" 2016-09-09 17:35:37 +01:00
Matthias Radestock 26cb5d53fc refactor: extract pluralization function
This preserves the existing behaviour of showing count=0 as a plural
rather than empty. However, I rather suspect we cannot actually
encounter that case in the current code.

In the "no count found" case we now *set* the base.LabelMinor to empty
instead of leaving it alone. This is ok since it is empty to begin with.
2016-09-09 17:35:33 +01:00
Matthias Radestock 7f7766425e refactor: dedup pod group summary functions 2016-09-09 17:33:14 +01:00
Matthias Radestock 5bc3a9d5ac correctly reverse-resolve source of inbound connections
There were two problems:
- the renderer was looking for reverse names on the destination
- the probe was not annotating source nodes with reverse-resolved names

Fixes #1847
2016-09-02 20:31:03 +01:00
Matthias Radestock abd59fda2d lookup localNodeID in r.Endpoint.Nodes
and refactor the connection{} construction so we can add some
explanation of what is going on here.
2016-09-02 11:38:44 +01:00
Matthias Radestock cf4eee11a7 fix internet connection counts
For counting we were using a table keyed on a struct containing Node
pointers. For connections between ordinary nodes this works just
fine. But for connections to/from the Internet node we want to track
individual address/port combinations, which involves an extra
lookup. Since our data structures generally contain values, not
pointers, this produces aliases. As a result n connections from/to a
node to/from a specific Internet IP+port would result in n rows in the
count table, each with a count of 1, instead of one row with a count of
n.

Things wouldn't be so bad if it was actually rendered like that -
annoying, but at least accurate - but...

Each row has an ID which is computed from the node IDs and ports. Not
Node references. The ID must be unique - the frontend will only
render *one* thing per ID. Since the row IDs of our n rows are all the
same, we see one row with a count of 1 instead of n rows with a count of
1.

Furthermore, since the frontend's table row limiting is counting rows,
not unique row IDs, a) fewer rows would be rendered than expected, and
b) the displayed count of the number of extra rows would be too high.

The fix is to replace the Node pointers in the key with Node IDs. This
does require an extra table lookup when we come to produce the rows, but
that is just a fairly cheap map lookup.

Fixes #1495.
2016-09-01 21:51:20 +01:00
Krzesimir Nowak 9e092f1a4a Switch to LatestMap-style node controls
This allows plugins to add controls to nodes that already have some
controls set by other plugin. Previously only the last plugin that
sets the controls in the node would have its controls visible. That
was because of NodeControls' Merge function that actually weren't
merging data from two inputs, but rather returning data that was newer
and discarding the older one.
2016-08-12 17:15:43 +02:00
Matthias Radestock 21c188d600 Merge pull request #1739 from weaveworks/1730-no-node-copy
Remove and optimize more Copy()s
2016-08-12 12:30:54 +01:00
Alfonso Acosta 77bb186039 Review feedback 2016-08-10 16:19:58 +00:00
Alfonso Acosta 166bdf13f3 Remove redundant kubernetes ID 2016-08-10 16:01:28 +00:00
Simon Howe d0b99969ea Grid-mode tuning!
- Change scrolling behaviour to lock headers in place
- Enable filtering (hitting enter in the search bar) in grid-mode
- Little more top-margin for k8s (can have 3 topos) + taller rows.
- Trying out rank-color + node.relatives in the grid-mode
- First pass at selecting rows.
  - Needs a bit more a fiddle, colors + click areas
- Store grid sort direction (asc/desc) in url state
- Simplify node selection to one method. (over-ride existing card)
  - Remove clicking on name directly (links) to overlay new cards for now.
- Playing w/ grid-mode-toggle icons and labels
- Improves rendering in ff, change of shortcut keys for grid-mode-toggle
- Playing w/ clearer selection colors for grid-mode
- Slight change to selection-ui
- Fixes showNodeInTopology button visibility on the details-panel
  - Was using an old heuristic. Table-mode allows you to open child cards
    before the parent.
- Make it clear what the default sort is in tables
  - E.g. always show a sorting caret
- Sort grid-mode columns, first meta then metrics
- dancing-nodes rememdy #1: pause updates onRowHover
- Splits relatives out into their own columns
- Take into account scrollbar width for grid-mode col header position
- Tooltips on table column headers
- grid-mode: fixes first column headers (proc/container/c-by-image)
- Disable pause-on-hover, too aggresive
- reduce label column width a bit (33pc -> 25pc) for big tables
- Filter grid-mode onSearchChange
  - Rather than previous behaviour of waiting for an <enter>
- Show label_minor on pseudo nodes, that might not have much other info
- grid-mode: further reduce width of id column.
- Fixes go tests, properly moves parents into node-summary
- Fixes sorting of string columns w/ missing fields.
  - E.g. uptime. Where -1e-10 > '3days' doesn't work.
2016-08-03 08:50:37 +02:00
Alfonso Acosta 5d857d05d6 Remove and optimize more Copy()s 2016-08-02 13:29:35 +00:00
Alfonso Acosta bdd09d8aa9 Restore copying nodes when obtaining connection summaries 2016-08-02 13:29:34 +00:00
Matthias Radestock 1091225bf6 get rid of Node.Copy()
A shallow copy is sufficient. Which we get for free in most cases
since Node is passed around by value.
2016-08-02 12:42:39 +00:00
Alfonso Acosta 8a950a59d6 Remove Metric Add() method
* Helps reduce garbage (MakeMetric() now takes a slice and there's a shorter version MakeSingletonMetric())
* Fixes bug computing Max (Min) in samples since using MakeMetric()
  was causing a default Max/Min of zero.
* Simplifies code a bit
2016-08-01 16:58:11 +00:00
Tom Wilkie c80eb42a4f Add filters for pseudo nodes. (#1581)
* Add filters for pseudo nodes.

- Don't filter the internet node as a pseudo node.
- Rename pseudo filter to unmanaged/uncontained.
- Review feedback
- Move the FilterFoo funcs into the tests
- Drop the 'nodes' from filter labels.

* Fix experimental
2016-06-16 20:09:13 +01:00
Tom Wilkie fba555c985 Use image name without version as id. (#1531)
* Use image name without version as id.

* Review feedback
2016-06-15 16:14:51 +01:00
Simon Howe 05ce661c19 Gets go-tests passing! 2016-06-06 16:24:18 +02:00
Paul Bellamy 5d8b1c003e Add pod status to summary table (#1523)
Had to shorten the title of # Containers, as it was being truncated.
2016-05-19 10:59:58 +01:00
Paul Bellamy d0633d0d80 Render replica set and deployment parents 2016-05-09 09:19:11 +01:00
Paul Bellamy 541699d193 Review Feedback 2016-05-09 09:19:11 +01:00
Paul Bellamy 16a5c738d9 Deployment and ReplicaSet views for k8s 2016-05-09 09:03:57 +01:00
Tom Wilkie 55069609e1 Show Pod IP and # container in the children table in details panel. 2016-05-05 13:33:49 +01:00
Tom Wilkie 1c5f0ac041 Don't attribute conntracked connections to k8s pause containers. 2016-05-03 12:04:08 +01:00
Tom Wilkie 8395c3ca4b Index Pods by UID and join with containers based on this. 2016-05-03 11:51:51 +01:00
Tom Wilkie e917dd61a8 Show Pod IP in details panel. 2016-04-29 13:34:31 +01:00
Paul Bellamy 3d3aed2bb3 Fixing grouped node count for filtered children nodes
Squash of:

* We have to keep all the container hostnames until the end so we can
  count how many we've filtered

* Adding tests for ContainerHostnameRenderer and PodServiceRenderer with
  filters

* Because we filter on image name we need the image name before
  filtering

* Alternative approach to passing decorators.

* Refactor out some of the decorator capture

* Don't memoise decorated calls to Render

* Fixing filtered counts on containers topology

  Tricky, because we need the filters to be silent sometimes (when they're
  in the middle), but not when they're at the top, so we take the "top"
  filter's stats. However, this means we have to compose all
  user-specified filters into a single Filter layer, so we can get all
  stats.

  There are no more Silent filters, as all filters are silent (unless they
  are at the top).

  Additionally, I clarified some of the filters as their usage/terminology
  was inconsistent and confused. Now Filter(IsFoo, ...) *keeps* only nodes
  where IsFoo is true.
2016-04-28 12:23:43 +01:00
Paul Bellamy 1539e668e7 Merge pull request #1290 from weaveworks/remove-container-control
Add control for removing stopped docker containers.
2016-04-22 14:13:40 +01:00
Tom Wilkie 8b06f6c0d8 Add rank field to controls. 2016-04-21 18:05:48 +01:00
Paul Bellamy c4d4514278 Merge pull request #1359 from weaveworks/1121-reverse-resolution
Use reverse-resolved DNS info in the connections table.
2016-04-21 17:53:10 +01:00
Tom Wilkie fc46301c32 Include IP address in label. 2016-04-21 16:20:39 +01:00
Tom Wilkie 99204e1ff7 Add k8s pod log control (#1298)
* Remove individually vendored k8s.io/kubernetes/pkg/<foo>

* Vendor the whole of vendor/k8s.io/kubernetes/pkg

* Add k8s pod log control

* Tag pods with host id and include them in the host topology as children.

* adding a basic test for kubernetes.Reporter.GetLogs
2016-04-21 13:48:50 +01:00
Tom Wilkie 0a51064713 Use reverse-resolved DNS info in the connections table. 2016-04-20 17:18:32 +01:00
Paul Bellamy 4bd3832219 move counting sublabel definition to the topologies 2016-04-20 12:17:46 +01:00
Paul Bellamy 4ad1ae80df move shapes determination to the topology 2016-04-20 12:17:46 +01:00
Paul Bellamy 43a29db73c Add explicit group node summariser instead of doing it in the other summaires 2016-04-20 11:59:04 +01:00
Paul Bellamy 8f3402f3e6 Merge pull request #1350 from weaveworks/1246-k8s-unmanaged
Add a 'Unmanaged' node to k8s views which included non-k8s containers.
2016-04-20 10:26:29 +01:00
Tom Wilkie 9eda27822c Show k8s labels and container env vars in the details panel. (#1342)
* Show k8s labels and container env vars in the details panel.

* Add show more bar to the env vars and labels

* React key was in the wrong place; empty tables render section labels.
2016-04-20 08:18:03 +01:00
Tom Wilkie 6db171bc9b Add a 'Unmanaged' node to k8s views which included non-k8s containers. 2016-04-19 17:49:06 +01:00
Paul Bellamy f8fb829848 Merge pull request #1348 from weaveworks/1196-no-image-version-in-parents
Strip image version from parent links
2016-04-19 17:14:26 +01:00
Paul Bellamy 7d685efe78 Strip image version from parent links 2016-04-19 16:49:37 +01:00
Paul Bellamy 1edeb8d190 Removing report.Node.WithID (#1315)
* removing usage of report.Node.WithID

* report.Topology.AddNode can use the node's ID field
2016-04-19 16:48:03 +01:00
Tom Wilkie 0396a79d7f Don't show non-internet pseudo nodes. (#1326) 2016-04-18 14:18:19 +01:00
Ilya Dmitrichenko a49c3893de More sensible container names for Mesos/Marathon (#1316)
* Collect container environment variales (close #1314)

* Containers managed by Marathon can have meaningful names (close #1309)

* Make linter happy and fix tests
2016-04-18 12:10:18 +01:00
Paul Bellamy 398258f3a7 Merge pull request #1294 from weaveworks/1293-container-pod-link
Construct correct id for pod parents
2016-04-13 13:58:46 +01:00
Paul Bellamy 6ffbc5328d adding a test for pod node rendering 2016-04-13 13:31:10 +01:00
Tom Wilkie df1ccae9f6 Construct correct id for pod parents 2016-04-13 13:20:31 +01:00