graphite 0.2.3

A fast, pure rust graphite implementation. Includes whisper, carbon, and graphite.
The graphite ecosystem in one easy-to-install package.

[![Build status](https://api.travis-ci.org/tureus/graphite-rust.png)](https://travis-ci.org/tureus/graphite-rust)

## Docker

By far the easiest experience for getting up and running

  docker pull xrlx/graphite
  mkdir data
  docker run -v ./data:/data xrlx/graphite

## Building

Note: you'll need a nightly rust build to build this

  $ git clone git@github.com:tureus/graphite-rust.git
  $ cd graphite-rust
  $ cargo build --release
  $ RUST_LOG=debug ./target/debug/carbon

## Tasks

 - [X] Read headers
 - [X] Read single point
 - [X] Write to single archive
 - [X] Write through all archives with downsampling
 - [X] Create files
 - [X] Read many points
 - [ND] Lock files (not necessary with memmap pattern?)
 - [ ] `mmap` files (PROFILING)
 - [X] UDP daemon
 - [ ] TCP daemon
 - [ ] Custom schema support when creating new WSPs
 - [ ] Pickle daemon
 - [ ] HTTP frontend
 - [ ] Make logging useful for ops
 - [ ] Validate .wsp when opening (archives need to cleanly multiply, etc)

## Documentation

[http://tureus.github.io/graphite-rust](http://tureus.github.io/graphite-rust)

## Reference

Documentation for the whisper file format is slim/nil. Clone the official repo and take a look at `whisper.py`

  $ git clone git@github.com:graphite-project/whisper.git

## Talking to Carbon

On OSX you need to specify IPv4:

  echo -e "local.random.diceroll 4 `date +%s`" | nc -4u -w0 localhost 2003

On linux:

  echo "local.random.diceroll 4 `date +%s`" | nc -u -w 1 localhost 2003

Memory stats:

  yum install -y sysstat
  toolbox sar -B 1