Oxla Configuration File
The configuration of Oxla is managed through a configuration file. The configuration file defining various aspects of Oxla's behavior and its usage is helpful for both development and deployment.
When Oxla is run as a docker container, the config file is generated automatically inside a container in /oxla/startup_config based on environment variables passed and default values.
The /oxla/startup_config config directory can be mounted using -v /path/to/mount:/oxla/startup_config to access the config file directly:
- Automatic Generation from Defaults:
If no configuration is found in the specified directory, Oxla generates one using default values. The default name would be config.yml.
During generation, Oxla takes into account environment variables passed. When the environment variable is passed, this value is written to the generated config instead of the default one.
- Modifying Default Config Path:
To modify the default config path inside the Oxla Docker container, pass the OXLA_CONFIG_FILE=path/to/config.yml environment variable to the docker run`` command. Passing an empty path indicates the intent to use default values only.
- Partial Variable Specification:
When creating a custom configuration file, it is not required to pass all the possible variables. If a variable is not passed, it assumes the default value. So, an empty configuration file can be used, but Oxla will use defaults for everything.
- Regenerating the Config File:
The best way to regenerate the config file is to remove or rename the existing config file, so there's no /oxla/startup_config/config.yml. Oxla will then automatically generate a new configuration file based on default values.
The yaml below is the default configuration file in Oxla:
Below is a list of key configuration variables:
Variable | Description |
network.port | Port on which Oxla listens for connections from nodes in the cluster. |
network.postgresql_port | Port on which the node listens for TCP connections to the Postgres client. |
network.prometheus_port | Port on which the process listens for HTTP connections for Prometheus metrics. |
network.nodes | List of IP addresses or DNS addresses to which Oxla connects. |
network.cluster_name | Common cluster name used for node connection validation. |
network.host_name | Unique name of a single node in the cluster. |
metrics.no_prometheus_exposer | Disable the Prometheus exposer. |
insertion.buffer_size_limit | Threshold for data or time before dumping data from memory to the filesystem. Possible units:
Default value: interpreted as bytes. |
insertion.buffer_timeout | Timeout for dumping data from memory to the filesystem. Possible units:
Default value: value in ms unit. |
logging.info | Logging level. Possible values:
|
storage.oxla_home | Directory for data. Either on local disk (path inside the container), or on S3. |
storage.s3.enable_discovery | By default, regional or overridden endpoints are used. To enable endpoint discovery, set the variable to true. |
storage.s3.use_dual_stack | Enable or disable dual-stack IPv4 and IPv6 endpoints. Note: not all AWS services support IPv6 in all Regions. |
storage.s3.endpoint | Endpoint for the S3 protocol. If not provided, the default AWS endpoint is used. |
Values in the configuration file take precedence over environment variables and default values.
Naming conventions for environment variables are derived from the configuration variable names, with __ (double underscores) replacing YAML hierarchy levels. For example:
The port is expressed as the NETWORK__PORT environment variable.
Environment variables can be passed using the -e parameter in the docker run command, as illustrated below:




