You can use pre-compiled releases compiled for Linux, Mac and Windows.
Note: the feature set is not identical on all platforms. The module help describe all pitfalls.
Execute the following installation steps to use Mapago:
download archive: https://golang.org/dl/
tar -C ~/bin/ -xzf go$VERSION.$OS-$ARCH.tar.gz
mkdir ~/go
export GOPATH=$HOME/go
export GOBIN=$HOME/go/bin
export GOROOT=$HOME/bin/go
export PATH=$PATH:$GOROOT/bin
go get -u -d github.com/lucas-clemente/quic-go
go get github.com/google/uuid
go get github.com/protocollabs/mapago
cd $GOPATH/src/github.com/protocollabs/mapago
make
./mapago-server -port 64321 -uc-listen-addr 127.0.0.1
./mapago-client -control-addr 127.0.0.1 -control-protocol tcp -module quic-throughput -streams 1 -addr 127.0.0.1 -deadline 60 -bytes 140000 -buffer-length 1400
- Modules can be used in parallel with other modules. Modules can be initiated several times. This allows more complex campaigns like Realtime Response Under Load (RRUL) like FLENT is doing.
- Maparo return either a JSON set or human formatted data. Maparo do not draw or visualize any data. To visualize data you can use Python scripts using the powerful and flexible matplotlib library.
- Maparo do not focus on collection OS internal stats for further analysis for now. This can later be added.
Maparo will exit with return code 0 if everything went fine. If not return code 1 signals the script that something went wrong. To communicate error, warning and debugging information to the outside maparo will use STDERR. STDOUT is just use for analysis data. This a script can trust that the outputed string is a pure JSON string (if enabled) and not garbaged with other information.
mapago-client <args> 2>/dev/null | ./scripts/evaluation.py
Maparo will print out the results and the input parameters as well as other gathered system parameters if JSON is the output format:
{
"version" = "semver value",
"system" = {
},
"input" = {
// flaten config, if only one module is
// used the module config including name is
// printed. If a campaign is used the serialized
// campaign included config values is printed
"mod-tcp-goodput" = {
},
},
"output" : {
},
}
go get github.com/protocollabs/maparo/...
For Debian based systems install go suite:
sudo apt-get install golang-go
If the JSON output includes information what module/campaign was called and all information is available (i.e. remote call, client and server json in one json structure it is possible to pipe the data to a python3 script. The Python3 script will visualize and output the information.
# server
maparo daemon
# client
mapago module tcp-througput format=json conf.dst=::1 | mapago-chart --output-dir tcp-througput
$ ls tcp-througput
tcp-througput-over-time.data
tcp-througput-over-time.py
tcp-througput-over-time.png
tcp-througput-info.data
tcp-througput-info.py
tcp-througput-info.png
[...]