The graphite ecosystem in one easy-to-install package.
By far the easiest experience for getting up and running
docker pull xrlx/graphite
mkdir data
docker run -v ./data:/data xrlx/graphite
How I run graphite-rust
with graphite-web
in production:
$ cat run_graphite.sh
docker run -e "RUST_LOG=warning" --name graphite -d -p 2003:2003/udp -p 2003:2003 -v /var/data/graphite:/data xrlx/graphite
$ cat run_graphite_web.sh
docker run -d -it --name graphite-web -v /var/data/graphite:/opt/graphite/storage/whisper -p 80:80 banno/graphite-web
$ sudo sysctl -w vm.dirty_background_ratio=30 vm.dirty_ratio=60 vm.dirty_expire_centisecs=1080000 vm.dirty_writeback_centisecs=1080000
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
- Read headers
- Read single point
- Write to single archive
- Write through all archives with downsampling
- Create files
- Read many points
- Advisory lock files
-
mmap
files (PROFILING) - Use
cfg()
guards to provide conditional checks for sysctl settings - 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)
http://tureus.github.io/graphite-rust
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
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