Riaknostic requires a sane GNU build system and a recent version of
Erlang. It has lager and getopt as dependencies, so those must be
compatible with your version of Erlang. Release versions are currently
built with Erlang version R14B03, while development versions are targeted at Erlang version R14B04.
See the rebar.config file for more details.
To build Riaknostic, simply run make:
$ make
./rebar get-deps
==> riaknostic (get-deps)
Pulling lager from {git,"git://github.com/basho/lager",{branch,"master"}}
Cloning into lager...
Pulling getopt from {git,"git://github.com/jcomellas/getopt.git","2981dfe"}
Cloning into getopt...
==> lager (get-deps)
==> getopt (get-deps)
./rebar compile
==> lager (compile)
Compiled src/lager_util.erl
Compiled src/lager_transform.erl
Compiled src/lager_sup.erl
Compiled src/lager_mochiglobal.erl
Compiled src/lager_stdlib.erl
Compiled src/lager_handler_watcher_sup.erl
Compiled src/lager_handler_watcher.erl
Compiled src/lager_trunc_io.erl
Compiled src/lager_crash_log.erl
Compiled src/lager_file_backend.erl
Compiled src/lager_app.erl
Compiled src/lager.erl
Compiled src/lager_console_backend.erl
Compiled src/lager_format.erl
Compiled src/error_logger_lager_h.erl
==> getopt (compile)
Compiled src/getopt.erl
==> riaknostic (compile)
Compiled src/riaknostic_check.erl
Compiled src/riaknostic_util.erl
Compiled src/riaknostic_node.erl
Compiled src/riaknostic_check_ring_size.erl
Compiled src/riaknostic_check_ring_membership.erl
Compiled src/riaknostic_config.erl
Compiled src/riaknostic_check_memory_use.erl
Compiled src/riaknostic_check_nodes_connected.erl
Compiled src/riaknostic_check_dumps.erl
Compiled src/riaknostic.erl
Compiled src/riaknostic_check_disk.erl
./rebar escriptize
==> lager (escriptize)
==> getopt (escriptize)
==> riaknostic (escriptize)Now you can invoke the script manually via the below command:
$ ./riaknostic --etc ~/code/riak/rel/riak/etc --base ~/code/riak/rel/riak --user `whoami` [other options]To generate the edoc reference, use make docs and then open the
doc/index.html file in your browser. Detailed discussion of the
internal APIs that you can use in developing new diagnostics is found
in the edocs.
Have an idea for a diagnostic? Want to improve the way Riaknostic works? Fork the github repository and send us a pull-request with your changes! The code is documented with edoc, so give the API Docs a read before you contribute.
If you want to run the riaknostic script while developing, and you don't have it hooked up to your local Riak, you can invoke it directly like so:
./riaknostic --etc ~/code/riak/rel/riak/etc --base ~/code/riak/rel/riak --user `whoami` [other options]The extra options are usually assigned by the riak-admin script for you, but here's how to set them:
--etc: Where your Riak configuration directory is, in the example above it's in the generated directory of a source checkout of Riak.--base: The "base" directory of Riak, usually the root of the generated directory or/usr/lib/riakon Linux, for example. Scan theriak-adminscript for how theRUNNER_BASE_DIRvariable is assigned on your platform.--user: What user/UID the Riak node runs as. In a source checkout, it's the current user, on most systems, it'sriak.