From f0a178b54cb5044b3a0d7f9283af4c53bd279021 Mon Sep 17 00:00:00 2001 From: Sandy Walsh Date: Thu, 26 Feb 2015 13:43:04 -0800 Subject: [PATCH] More docs: install guide, contributing and screencasts. Still need the terminology section. Change-Id: Ic3976231ad9fbf2eb16ea708011aa906d5c5e781 --- docs/contribute.html | 75 +++++++++++++++++++++++++++++ docs/deploy_diagram.gif | Bin 0 -> 48564 bytes docs/index.html | 4 +- docs/install.html | 94 ++++++++++++++++++++++++++++++++++++ docs/screencasts.html | 103 ++++++++++++++++++++++++++++++++++++++++ 5 files changed, 274 insertions(+), 2 deletions(-) create mode 100644 docs/contribute.html create mode 100644 docs/deploy_diagram.gif create mode 100644 docs/install.html create mode 100644 docs/screencasts.html diff --git a/docs/contribute.html b/docs/contribute.html new file mode 100644 index 0000000..7e9e4af --- /dev/null +++ b/docs/contribute.html @@ -0,0 +1,75 @@ + + + + + + + + + + + + StackTach.v3 + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+
+

Contributing to StackTach.v3

+

StackTach.v3 is licensed under the Apache 2.0 license

+

All the source repos for StackTach.v3 (and .v2) are available on SourceForge. Details on contributing to StackForge projects are available here

+

The core developers are available on Freenode IRC in the #stacktach channel

+

These docs are available in the Sandbox repo. Patches welcome!

+ +
+

© Dark Secret Software Inc. 2014

+
+ +
+ + + + + + diff --git a/docs/deploy_diagram.gif b/docs/deploy_diagram.gif new file mode 100644 index 0000000000000000000000000000000000000000..6a4461ccf19777340519a0a6f4cb61ed1a8171b4 GIT binary patch literal 48564 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 Q9nvB_(j;Bd@D~sOJ9yDocs
  • Getting Started
  • API
  • -
  • Screencasts
  • -
  • Contribute
  • +
  • Screencasts
  • +
  • Contribute
  • diff --git a/docs/install.html b/docs/install.html new file mode 100644 index 0000000..f6f2bac --- /dev/null +++ b/docs/install.html @@ -0,0 +1,94 @@ + + + + + + + + + + + + StackTach.v3 + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    +

    How StackTach.v3 is deployed at Rackspace

    +

    For Rackspace Public Cloud, OpenStack is deployed in many different regions and each region is comprised of many cells.

    + + + +

    In this deployment scenario, we have a set of "worker" boxes that run the yagi-event workers (to consume notifications from RabbitMQ). We run one yagi-event worker per OpenStack cell. We also run the Winchester pipeline-workers on this box. The pipeline-worker manages pipeline processing for ready streams. We run as many pipeline-workers as needed to keep each core busy. Both the yagi-event and pipeline-worker processes are single threaded so we spawn more to keep the host busy. We add more servers like these to handle the load in the pipeline processing and/or the source queues.

    +

    Additionally, we have servers for the API nodes and the MySQL database. Load balancing the API servers and making MySQL highly available is left to the deployer.

    +

    The Ansible deployment scripts

    +

    In the StackTach Sandbox repo, there is an ansible directory that contains roles for the workers, the API nodes and the database. There is a fourth "common" role that is used by the other roles.

    +

    These scripts assume a multi-cell deployment where there is one StackTach.v3 deployment per region (each with it's own API servers and database). If you are not running with cells, pretend it's a single cell.

    +

    The Build script

    +

    The StackTach Sandbox repo is the umbrella repo for all the other StackTach modules. It:

    +
      +
    • can create a local dev environment for anyone wanting to contribute to StackTach or just play around with it +
    • can package StackTach into a python virtual environment and tarball it up for larger scale deployment. The ansible scripts use this tarball approach. +
    • git clones all the dependent python modules so you can develop locally and see your changes immediately and easily. +
    +

    The sandbox readme will get you started, but the gory details are in the build.sh script. There are essentially three options:

    +
      +
    • ./build.sh - run the local StackTach.v3 dev environment in a screen session. +
    • ./build.sh -t - run the tests on all the StackTach.v3 repos. +
    • ./build.sh -p - install StackTach.v3 into the virtual env and package it up into a tarball for deployment. +
    • ./build.sh -p -d - package and deploy the tarball. Currently this just lists the ansible incantation required to do the deployment. +
    +

    The screencasts cover using the sandbox for local dev in more detail.

    +
    +

    © Dark Secret Software Inc. 2014

    +
    + +
    + + + + + + diff --git a/docs/screencasts.html b/docs/screencasts.html new file mode 100644 index 0000000..1043186 --- /dev/null +++ b/docs/screencasts.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + StackTach.v3 + + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +
    +

    The History of StackTach

    +

    StackTach started as a tool for debugging OpenStack Nova deployments. Before we started on StackTach.v3 (a complete rewrite), we had plans to integrate with Ceilometer. This presentation from the Hong Kong summit gives a good overview of how StackTach has evolved over the years. It also gives great detail on the usage verification process as well as some of the key architectural concepts behind version 3.

    + + + +

    The StackTach.v3 Components

    +

    An early screencast of the components of StackTach.v3 ... some things have changed since. Oahu has now been replaced with Winchester and all the repos have been moved to StackForge.

    + + + +

    The StackTach.v3 Sandbox

    +

    An early screencast of the StackTach.v3 Sandbox. Shows how to launch the sandbox for local dev and how to navigate the various components. This video was done before packaging was added and before Winchester support was added. The Oahu config file is no longer required as we now use Winchester.

    + + + +

    The Notigen Event Simulator

    +

    In order to play with StackTach.v3 you need a good source of notifications. To make this easier we don't want to require you stand up a full OpenStack environment. Instead, we use Notigen to simulate Nova-like notifications and publish these to RabbitMQ. This video explains how this works.

    + + + +

    The REST API - Quincy and Quince

    +

    How we separate the REST API from the implementation within StackTach.v3. If you decide you want to implement your own steam engine, but stay compatible with the StackTach.v3 API, these libraries make it easy to do so.

    + + +

    Klugman - client library/cmdline tool

    +

    An early video of the Klugman cmdline tool and client library. A newer video is required to reflect the most recent changes, but this will get you started.

    + + + +

    Monasca and StackTach.v3 Integration

    +

    Our joint-presentation with the Monasca team at the Paris OpenStack summit.

    + + + +
    +

    © Dark Secret Software Inc. 2014

    +
    + +
    + + + + + +