Commit Graph
217 Commits
Author SHA1 Message Date
Simon Howe 517110ba09 Keep "count" as tooltip for new mini "#" column header 2016-09-21 15:24:59 +02:00
Simon Howe 52362496b3 Rename connections."Count" => "#", flex remote column 2016-09-21 15:13:01 +02:00
Simon Howe fc3fc72205 Fix ip column width in connections table, avoid truncating long ips 2016-09-21 10:01:42 +02:00
Alfonso AcostaandGitHub c64dfa6f55 Merge pull request #1863 from weaveworks/1082-nodes-for-known-services
Add pseudo-nodes for known services
2016-09-20 23:00:52 +02:00
Alfonso Acosta 028ed32b6f Simplify service node matching 2016-09-19 14:38:59 +00:00
Alfonso Acosta 5c080ec062 Add pseudo-nodes for known services
AWS S3 and Dynamo to start with
2016-09-19 14:38:58 +00:00
Matthias Radestock c455f048e2 comment on arbitrariness of displayed dns name 2016-09-19 15:31:26 +01:00
Matthias Radestock bcf21b1966 show more details of a node's internet connections
in the details panel, instead of showing connections to/from the
internet as "TheInternet <port>", we now show "<dns-name>(<ip_addr>)
<port>" (or just "<ip_addr> <port>" if we don't have a dns name).

Fixes #1713.
2016-09-19 14:10:35 +01:00
Matthias Radestock 591e72e702 fix unit tests 2016-09-19 11:15:00 +01:00
Matthias Radestock 463681dcdd refactor: inline 2016-09-15 16:04:44 +01:00
Matthias Radestock 0e1aeec6ae key internet node connection counts differently
Instead of including the localEndpointID in the key, use the
address, so the port is excluded. That way we don't end up with multiple
rows for inbound connections from the same internet address.

We also augment the address with the DNS info here, which saves us from
having to look it up later on.

Fixes #1867
2016-09-15 15:23:12 +01:00
Matthias Radestock e009548ace refactor: shrink connection count key
- remoteAddr was never being set
- localAddr is part of the localNodeID in all the cases it was set, so
  it effectively was part of the key twice
2016-09-15 11:45:16 +01:00
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 RadestockandGitHub 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 RadestockandAlfonso Acosta 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 WilkieandGitHub 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 WilkieandGitHub 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 BellamyandTom Wilkie 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