weaveworks / scope

Monitoring, visualisation & management for Docker & Kubernetes
https://www.weave.works/oss/scope/
Apache License 2.0
5.87k stars 714 forks source link

show connections to/from the filtered world #1871

Open rade opened 8 years ago

rade commented 8 years ago

Problem: when viewing a topology with some filters, a misleading impression is created that the nodes on the screen have exactly the connections as represented by their edges. So, for example, in Weave Cloud, the authfe in the 'default' namespace connects to the collector and query nodes in the 'scope' namespace - when looking at either namespace these connections are invisible.

The connections do get revealed in the detail panels, due to #1864, but that is hardly the ideal place.

Of course one could simply turn off the filters, but that then represents too much information.

So, how can we represent "there's some other stuff connected to this" w/o cluttering the view?

Here are some options (and some of the problems they suffer from):

  1. show filtered nodes to/from which we have direct connections, but grey them out
    • adds a fair bit of clutter; and navigation is unclear (can you click on the greyed out nodes?)
  2. show two pseudo nodes: "Filtered (Inbound)" and "Filtered (Outbound)" nodes, analogous to The Internet nodes
    • these highly concentrated nodes tend to introduce lots of edges and massively affect layout
  3. show the equivalent of an "earth" symbol in circuit diagrams (@ekimekim's idea) - a small node (or, in our case, pair of nodes - for inbound and outbound) that we can draw multiple times, e.g. next (and with an edge) to individual nodes that have connections to/from filtered nodes
    • micro clutter
  4. "line trailing off and going transparent"
    • one per filtered node to/from which a node has a connection? Or just a pair of lines per node (one for incoming, one for outgoing) which has connections to/from filtered nodes?
    • how does navigation work, i.e. how do you find out what is actually connected?
rade commented 8 years ago

We should also consider what we want to show for connections to/from "infrastructure" services. E.g. imagine some side-car containers on all pods that connect to a logger service in some other namespace. Or, conversely, some monitoring service (prometheus, I am looking at you) connecting to most containers, across namespaces.

Odds are one wouldn't want to see these connections most of the time. So perhaps sometimes "filtered" really means filtered.