Fiord is a command-line tool that takes FIO (Flexible I/O tester) JSON output, reformats, then sends to metrics databases for retention and analysis.
Supported Outputs:
summary
: Human-readable summary in table, raw, or a custom Go template format.influxdb
: Sends report data to InfluxDB.taurus
: Outputs in XML format that the Jenkins Performance Plugin can parse.
$ ./fiord
Fiord summarizes FIO benchmark reports and can save them to a variety
of backend datastores. It is intended to be used as part of a CI pipeline, and
includes a backend that produces output compatible with the Jenkins Performance
Plugin. InfluxDB is also supported, and others may be added in the future.
Input should be in JSON format, generated by fio --output-format=json and piped
in using:
fiord summary < input.json
Usage:
fiord [command]
Available Commands:
influxdb Publish report to InfluxDB
summary Basic job summary
taurus Taurus final-status output
Flags:
--config string config file (default is $HOME/.fiord.yaml)
-h, --help help for fiord
-t, --toggle Help message for toggle
Run fio
with the --output-format=json
parameter, and save the output to a
file. e.g.:
fio --output-format=json job1.fio > job1.json
Then pipe the input into fiord
:
fiord summary < job1.json
Or, all-in-one:
fio --output-format=json job1.fio | fiord summary
You may also specify the input file using --input <filename>
. This can be
useful when using the Docker container:
docker run --rm -v `pwd`/data:/data croomes/fiord summary -i /data/input.json
The InfluxDB backend posts data directly to InfluxDB. The database must already exist.
fio --output-format=json job1.fio | fiord influxdb --uri http://127.0.0.1:8086 --db=fio
Taurus is an XML format supported by the Jenkins Performance Plugin. The XML is written to STDOUT, so you probably want to write to a file within your build workspace.
You may specify --report-url <url>
to include a link to an external report.
fio --output-format=json job1.fio | fiord taurus > job1.xml
fiord
can be run as a standalone binary or as a Docker container. To run in a
container, you must place the input into a file, and share the directory into
the container using a volume. Then, specify the input file when running the
container:
docker run --rm -v `pwd`/data:/data croomes/fiord summary -i /data/input.json
The fiord container is available at: https://hub.docker.com/r/croomes/fiord