Skip to main content

Symmetry - A cluster management system for micro-clusters

Project description


Cluster management tool for the MC2.


To create a virtual environment and install the requirements, run (by default it uses python3.7, you can change that in the Makefile variable VENV_BIN)

make venv

Run Symmetry components manually


Make sure the virtualenv is activated

source .venv/bin/activate

Symmetry publishes and reads telemetry data to and from redis, so you need a running redis instance first:


Start the telemetry deamon

Download and start the telemetry daemon


You can verify that the telemetry daemon sends data by suscribing to the topic via the redis CLI:

redis-cli psubscribe "telem/*"

Start the cluster deamon

Start the cluster daemon (which controls the cluster state)

python -m symmetry.cli.clusterd

Websocket server

To start the websocket server for the dashboard:

python -m symmetry.cli.websocket

The websocket is running on port 8082 and automatically connects to the local redis-server on localhost:6379. Connect with ws://ip:8082/topic to receive all published messages for the given topic.

Run the dashboard

Serve the app with gunicorn

gunicorn -w 4 --preload -b \
    -c symmetry/webapp/ \

Point your browser to http://localhost:5000/ui/dashboard.

Using Symmetry

Creating services

To create a new service in the cluster a POST request must be sent to the api/services/{service_id} endpoint, with service_id being the new service.

The POST request has one optional (tar-exported docker image) and one mandatory (service description) body element.

The service description is structured this way:

%YAML 1.2
id: #must be same id as in endpoint
maintainer: #the uploader of the service
name: #"Pretty" version of the name
version: #any version number
description: #simple description
image_tag: #if docker image uploaded then this tag must be provided by the image. otherwise it is pulled 
port: #the port which is exposed by the service

After correct execution the answer should look somewhat like this:

    "name": "Test Service",
    "version": "1.0.0",
    "desc": "This is a simple test_service",
    "maintainer": "silvio",
    "": "1"

Other Client Scripts

Recording telemetry data

You can use the telemetry client cli.telemc to consume telemetry data in various ways.

# prints to system out
python -m symmetry.cli.telemc

# writes to a csv file
python -m symmetry.cli.telemc --file /tmp/telemetry-results.csv

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mc2-symmetry-0.6.0.tar.gz (41.0 kB view hashes)

Uploaded Source

Built Distribution

mc2_symmetry-0.6.0-py3-none-any.whl (61.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page