Fossil is a proxy for Graphite.
Why would I need a proxy?
Well if you're confortable with the idea of pushing data in clear over the wire without cipher them, ok then. But it's an issue for us 😄.
Fossil is a drop-down replacement for your Graphite deployment. It will listen TCP connection on the port 2003 and translate them into sensision before flush them in a directory.
We use it in combination with Beamium. This combination allow us to send our data in a ciphered way.
Before install fossil you need some tools:
First, you have to clone it:
git clone https://github.com/ovh/fossil.git $GOPATH/src/github.com/ovh/fossilGo into the fresh installation:
cd $GOPATH/src/github.com/ovh/fossilInstall project dependencies using Dep:
dep ensureNow, the best part compilation:
make releaseFinally, install fossil:
sudo make installNB: make install will also enable a systemd fossil service, to start fossil you just need to do systemctl start fossil.service
$ fossil --help
Fossil fossil Graphite to beamium forwarder
Usage:
fossil [flags]
fossil [command]
Available Commands:
version Print the version number
Flags:
-b, --batch int batch count per file (default 10000)
--config string config file to use
-d, --directory string directory to write metrics file (default "./sources")
-l, --listen string listen address (default ":2003")
-t, --timeout int batch timeout for flushing datapoints (default 5)
-v, --verbose verbose output
Use "fossil [command] --help" for more information about a command.Fossil configuration file is in JSON format.
By default Fossil will look for a configuration file named: config.json
in these directories:
/etc/fossil/
$HOME/.fossil
.Here is an example :
{
"listen": ":2003",
"verbose": "true",
"batch": "10000",
"timeout": "5",
"directory": "/home/fossil/sources/"
}find a sample in the config directory of this repository
fossil -d /opt/beamium/sourceIn this example fossil, will listen TCP connection on port 2003 and will translate all graphite datapoints into sensision and flush them into /opt/beamium/source directory.
The flush is realized all 5 seconds or all 10000 datapoints.