Resoto uses an internal configuration system for its components. Configuration is maintained within Resoto Core and can be edited using Resoto Shell using the
config edit command.
$ resh --psk changeme --resotocore-uri https://resotocore.resoto.svc.cluster.local:8900
Be sure to adjust the above PSK and Resoto Core URI arguments to reflect your setup!
> configs list
Resoto automatically creates the following configurations by default:
> config edit resoto.worker
Upon execution of the above command, Resoto Shell presents the specified configuration in YAML format using the local text editor as defined by the
EDITOR environment variable.
# Enable cleanup of resources
# Do not actually cleanup resources, just create log messages
# How many cleanup threads to run in parallel
# List of collectors to run
# Dump the generated JSON data to disk
# Use forked process instead of threads
# Name of the graph to import data into and run searches on
# Resource kind to merge graph at (cloud or account)
# Collector thread/process pool size
# Directory to create temporary files in
# Collection/cleanup timeout in seconds
# IP address to bind the web server to
# Web root in browser (change if running behind an ingress proxy)
# Web server tcp port to listen on
While the configuration is presented in YAML format for easy editing, all configuration is stored within Resoto's database in a data structure following a strictly typed model.
This means that you will get an error if, for instance, you attempt to set the value of
pool_size is of type
Setting Individual Properties
Instead of editing a component's configuration in a text editor, it is also possible to set the values of specific properties using the
config set command.
> config set resoto.worker resotoworker.pool_size=5
Overriding Individual Properties
Resoto also has support for overriding configuration. Overrides allow for values like passwords, credentials, and API keys to be retrieved from a secure credential store and passed into the environment, rather than being stored as plain text inside Resoto's database.
There are two ways to overriding configuration properties:
$ resotoworker --override resotoworker.pool_size=5 resotoworker.cleanup_pool_size=20
$ export RESOTOWORKER_OVERRIDE=resotoworker.pool_size=5
It is possible to override multiple values by delimiting them with a space:
$ export RESOTOWORKER_OVERRIDE="resotoworker.pool_size=5 resotoworker.cleanup_pool_size=20"
Alternatively, if a value contains a space, it is also possible to use separate, enumerated environment variables:
$ export RESOTOWORKER_OVERRIDE0=resotoworker.pool_size=5
$ export RESOTOWORKER_OVERRIDE1=resotoworker.cleanup_pool_size=20
Overriding List Properties
If the property type is a list/an array, it is possible to specifying multiple values as a comma-separated list of values:
$ resotocore --override resotocore.api.web_hosts=127.0.0.1,10.0.0.1
$ export RESOTOCORE_OVERRIDE=resotocore.api.web_hosts=127.0.0.1,10.0.0.1
Default configurations can be restored simply by deleting the configuration and restarting the component.
> config delete resoto.worker
The text editor opened by Resoto Shell can be configured via the
EDITOR environment variable.
For Docker installs, the default text editor is nano.
$ export EDITOR=nano
Resoto components produce logs in JSON format by default, with the exception of Resoto Shell.
The rationale behind this behavior is that Core, Worker, and Metrics are likely running on something like a Kubernetes cluster in a data center, with logs ingested by a central logging system. Resoto Shell, on the other hand, is executed on a user's local machine so the log output is formatted for readability.
JSON-format logging can be disabled via the
RESOTO_LOG_TEXT environment variable:
$ export RESOTO_LOG_TEXT=true