Configuration

Kadabra has a default set of configuration values. You can override the default configuration by specifying a dictionary when you initialize the Kadabra and Agent whose keys are the configuration you want to override and whose values are the values you want to use.

For exampe, configuring the client API to use a different Redis port might look like this:

my_config = {
    'CLIENT_CHANNEL_ARGS': {
        'port': 6500
}
client = kadabra.Kadabra(configuration=my_config)

Note that for configuration values that are dictionaries (like arguments for initializing the channel), you only need to specify the keys/values that you are overriding - the defaults will be used for the other arguments.

Configuring the Agent to write to a local InfluxDB server (using the default arguments) might look like this:

my_config = {
    'AGENT_CHANNEL_ARGS': {
        'port': 6500
    },
    'AGENT_PUBLISHER_TYPE': 'influxdb'
}
agent = kadabra.Agent(configuration=my_config)

A full list of the recognized configuration keys, descriptions of each, and their default values for the client API and the Agent are provided below.

Client API

CLIENT_DEFAULT_DIMENSIONS If specified, any collectors instantiated from the client will have these dimensions upon instantiation. Should be dictionary of strings to strings. Default: {}
CLIENT_TIMESTAMP_FORMAT The (Python-style) format to use for timestamps when serializing metrics to be sent over the channel. Must match the format of the agent that is publishing those metrics. Default: %Y-%m-%dT%H:%M:%S.%fZ
CLIENT_CHANNEL_TYPE The type of the channel to use for transporting metrics. Currently the only accepted value is ‘redis’. Default: redis
CLIENT_CHANNEL_ARGS Dictionary of overrides for the default channel arguments. Keys should match the argument names for the channel constructor. You can specify any, all, or none of the arguments to override; the defaults will be used for any arguments that are not overridden. Default: None

Agent

AGENT_LOGGER_NAME The name of the logger that the agent will use to log messages. Default: kadabra.agent
AGENT_TYPE The type of the agent. Valid values are default and batched. Default: default
AGENT_CHANNEL_TYPE The type of the channel to use for receiving metrics. Currently the only accepted value is ‘redis’. Default: redis
AGENT_CHANNEL_ARGS Dictionary of overrides for the default channel arguments. Keys should match the argument names for the channel constructor. You can specify any, all, or none of the arguments to override; the defaults will be used for any arguments that are not overridden. Default: None
AGENT_PUBLISHER_TYPE The type of the publisher to use for publishing metrics. The acceptable values are ‘debug’ and ‘influxdb’. Default: debug
AGENT_PUBLISHER_ARGS Dictionary of overrides for the default publisher arguments. Keys should match the argument names for the publisher constructor. You can specify any, all, or none of the arguments to override; the defaults will be used for any arguments that are not overridden. Default: None
AGENT_RECEIVER_THREADS The number of threads the agent will use for publishing metrics from the channel. Default: 3
BATCHED_AGENT_INTERVAL_SECONDS How often the batched agent will get metrics from the channel for publishing. Default: 60
BATCHED_AGENT_MAX_BATCH_SIZE The maximum number of Metrics objects to receive from the channel for publishing. Note that each metrics object can result in multiple “metrics” being published to the backend (for example, if there are multiple counters and timers). Default: 10000
AGENT_NANNY_FREQUENCY_SECONDS How often the agent will check for metrics that have been in-progress for a long time so that they can be republished. Default: 30
AGENT_NANNY_THRESHOLD_SECONDS How many seconds metrics must be in-progress before they are considered in-progress for a “long time” (and will be retried by the nanny). Default: 60
AGENT_NANNY_QUERY_LIMIT The maximum number of in-progress metrics that the nanny will process at once. This is necessary because the in-progress queue is always changing, so the nanny must take a “snapshot” of the currently in-progress metrics. Default: 5000
AGENT_NANNY_THREADS The number of threads the agent will use for re-publishing metrics that have been in-progress for a long time. Default: 3