log(v)

back
Need help setting up snorkel?
Please send an email to okay.zed at gmail and I'll be more than glad to help you get setup with an instance and answer any questions about your use case and requirements.
Happy snorkeling!

Overview

sybil and snorkel are free and libre software meant for ad-hoc analysis of instrumentation data. On this page, we’ll summarize how to install and import data into these two tools.

sybil is a simple OLAP that is optimized for append-only, immutable data and gives up the traditional DB guarantees (updateability, transactions, etc) and operations (JOINS, UPDATES, DELETES) in exchange for fast full table scans.

snorkel is the python frontend that sits on top of sybil and is used for iterative analysis (think firefighting or push day analysis). Snorkel can build and run time series, table, distribution and raw samples queries and visualize / compare their results in practical ways.

basic installation

There’s a pypi package for snorkel+sybil for x64 machines called snorkel-lite which is pre-configured for out of the box analysis.

See the snorkel wiki for up to date installation instructions

advanced installation

installing sybil

sybil is a Go app, so it requires that Go is installed and the GOPATH is properly configured. If you are first installing Go, you can configure your GOPATH like so:

export GOPATH=$HOME/go
mkdir $GOPATH

After that, setup is easy:

go install github.com/logv/sybil

sybil usage

sybil is a command line binary that allows one to ingest JSON records into tables and subsequently query them

Use sybil ingest -table my_table < samples.json to pull in samples off stdin and write them into db/my_table.

Once you have read some samples, prepare them for fast queries with sybil digest -table my_table

Querying the samples is easy, too:

For more usage examples, see sybil’s quick overview

installing snorkel

snorkel is a python webserver. The installation here is a bit more involved since it is an HTTP server and may require some more in depth config (SSL certs, adding users, editing a config file, etc)

# get the example deploy repository
git clone https://github.com/logv/snorkel.deploy

# [optional] create a virtual environment
virtualenv dev 
source dev/bin/activate

# install the snorkel module and dependencies,
# including sybil
pip install -r requirements.txt

# edit the config and make sure to change
# the secret values
${EDITOR} config/local.py

# add a new user
ENV=local.py flask add-user <username>

# mark user as a superuser
ENV=local.py flask add-superuser <username>

# run the server and log in
# with the newly created users
ENV=local.py flask run --port 2334

# by users can see all tables. we can change that
# by setting up permissions in config/local.rbac
${EDITOR} config/local.rbac