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.
Weave Scope - Monitoring, visualisation & management for Docker & Kubernetes
Weave Scope automatically generates a map of your application, enabling you to intuitively understand, monitor, and control your containerized, microservices based application.
Understand your Docker containers in real-time
Choose an overview of your container infrastructure, or focus on a specific microservice. Easily identify and correct issues to ensure the stability and performance of your containerized applications.
Contextual details and deep linking
View contextual metrics, tags and metadata for your containers. Effortlessly navigate between processes inside your container to hosts your containers run on, arranged in expandable, sortable tables. Easily to find the container using the most CPU or memory for a given host or service.
Interact with and manage containers
Interact with your containers directly: pause, restart and stop containers. Launch a command line. All without leaving the scope browser window.
Getting started
sudo curl -L git.io/scope -o /usr/local/bin/scope
sudo chmod a+x /usr/local/bin/scope
scope launch
This script will download and run a recent Scope image from the Docker Hub.
Now, open your web browser to http://localhost:4040. (If you're using
boot2docker, replace localhost with the output of boot2docker ip.)
For instructions on installing Scope on Kubernetes, DCOS or ECS, see the docs.
Getting help
If you have any questions about, feedback for or problem with Scope we invite you to:
- Read the docs.
- join our public slack channel
- send an email to weave-users@weave.works
- file an issue
Your feedback is always welcome!