Frequently asked questions

Running Scope in a Kubernetes setting

A simple way to get Scope running in a Kubernetes setting is to

  1. Clone the Scope repo:

    git clone https://github.com/weaveworks/scope
    cd scope
    
  2. Spin up a cluster wherever it suits you. Minikube is a simple option.
  3. Run

    kubectl apply -f example/k8s
    

    to deploy Scope to your cluster.

  4. Port-forward to access weave-scope-app:

    kubectl port-forward svc/weave-scope-app -n weave 4040:80
    
  5. Point your browser to http://127.0.0.1:4040.

Disabling Scope Write Access

Can be done by using the probe.no-controls option and set it to false for the scope agents. This can be done in the scope deployment manifest under the weave-scope-agent’s argument section with —probe.no-control=true.

RBAC and Weave Scope OSS

OSS Scope has no user concept, this is only available in Weave Cloud. To limit the access to the UI,

  • setup a reverse proxy with auth and block access to non admin users,
  • capture the calls with something like Chrome network console to get the endpoints to know which requests to authenticate in the proxy server.
  • you can use Basic HTTP Auth since Scope 1.10.0 - just use these command line arguments:

    -app.basicAuth
          Enable basic authentication for app
    -app.basicAuth.password string
          Password for basic authentication (default "admin")
    -app.basicAuth.username string
          Username for basic authentication (default "admin")
    

ARM Support

  • It required patches, @adivyoseph (on #scope) had done some work on this.
  • #2110 says that scope’s CI builds ARM32 (but not ARM64) for test-builds at least.
  • @errordeveloper says: It should be easy to add arm64 in CI, You can try and enable builds in ci on a branch.. In theory, you just need to build for GOARCH=arm64.

Data Storage

OSS Scope reports aren’t persistent and the probe keeps the last 15 seconds of metrics in memory.

API Endpoints

Scope exposes the following endpoints that can be used by external monitoring services.

  • /api - Scope status and configuration
  • /api/probes - basic status of Scope probes
  • /api/report - returns a full JSON report
  • /api/topology - information on all topologies
  • /api/topology/[TOPOLOGY] - information on all nodes belonging to TOPOLOGY topology
  • /api/topology/[TOPOLOGY]/[NODE_ID] - information on specific node NODE_ID in topology TOPOLOGY (currently NODE_ID must be an internal Scope node ID obtained from the URL field selectedNodeId when selecting that node in the UI - see #3122 for a proposal of a better solution)

Using a different port

You can use scope launch --app.http.address=127.0.0.1:9000 to run the http server on another port (in this case 9000).