weaveworks / scope

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

hybrid view of multiple topologies #552

Open tomwilkie opened 8 years ago

tomwilkie commented 8 years ago

Lots* of people seem to run mixed containerise and non-containerise workloads, for instance we've seen at least three people run their load balancers outside of containers.

Right now it will show up as uncontained, but I've been think for a while a smarter hybrid view will be useful (ie show processes if they are not in a container, containers if they are. And visually differentiate.)

Thoughts?

pidster commented 8 years ago

I think a smart / hybrid view is a really good idea.

rade commented 8 years ago

visually differentiate

Shapes have taken care of that already.

+1 to the overall idea. In fact I wonder whether a container-only view is even necessary, i.e. perhaps we should simply replace the current container view with the hybrid view.

2opremio commented 8 years ago

Here's another user needing the hybrid view: https://weaveworks.slack.com/archives/scope-public/p1459362185000321

screen shot 2016-03-30 at 11 32 04 am
2opremio commented 8 years ago

Report from the user: https://weaveworks.slack.com/files/guang/F0WL9MS86/api_report.json.gz

guang commented 8 years ago

+1

rade commented 7 years ago

This doesn't just apply to processes and containers, but any topology.

We could go for a more radical solution: replace the individual topology views with a single hybrid view, and combine that with hierarchical navigation #719.

Such view would show you everything in existence, at the highest level of abstraction in which it has a representation, and the hierarchical navigation would allow you to "zoom in" and see a fragment of the space at a lower level. E.g. if we have just three processes, one of which is in a container and the others are in a container each, in a pod each, in the same service, then we'd show a container and a service, and hierarchical nav would allow the user to "expand" the service.

IMO this would make it easier for users to "get their bearings" and retain context while exploring their system.

There are a few topologies that do not fit into the above...

ekimekim commented 7 years ago

Here's a shot of the kube-system namespace on my minikube. screenshot

Obviously, our big problem here is visual differentiation. Please note it's currently not possible without a more significant refactor to change what the node looks like (shape, sub-label, etc) depending on what view you're looking at - for example, we couldn't make deployments sub-label themselves deployment without also having that label show up in the Deployments tab. That may not matter so much if we remove the Deployments/Replicasets/Daemonsets views entirely.

So that's an option: Specify the higher levels type via a label (eg. instead of 1 pod, have daemonset of 1 pod), and rely on the stack vs single heptagon shape to distinguish between pods and other things.

rade commented 7 years ago

I do rather think different shapes would work best. Having text would be helpful in addition. I suspect we don't want three rows of labels though, so the "daemonset: 2 pods" might be the way to go. Or perhaps denote the type on mouseover only, since once users learn the shapes they won't need the text anymore, so it's just clutter.

ekimekim commented 7 years ago

note before we forget again: what behaviour should the table view have? since different node types have different columns.

rade commented 7 years ago

what behaviour should the table view have?

The obvious solution would be "union of all columns". Let's see how crowded that gets.

rade commented 7 years ago

It may be desirable to search/filter by "type" using the existing search/filter box. No need to do this initially.

rade commented 7 years ago

In #2552 we've swung back and forth between less and more hybrid.

There are problems with showing objects from different "levels" in the same view. To just take the example of including uncontrolled (aka "bare" pods) in the controller view from #2552...