Skip to Main Content

Configuration

This article outlines the configuration parameters involved in deploying AutoMQ, detailing their definitions, descriptions, applicable settings, and standards to aid developers in making necessary adjustments in a production setting.

AutoMQ functions as a compute-storage separated variant of Apache Kafka®, supporting all of Apache Kafka's parameters except for multi-replica storage. These parameters are not detailed in this guide but can be found in the official configuration documentation.

Common Configurations

Elasticstream.enable

List Item
Description
Configuration Description
Determines whether to launch AutoMQ, this parameter must be set to true.
Value Type
boolean
Default Value
false
Legal Input Range
N/A
Importance Level
High, requires careful configuration

S3.endpoint

List Item
Description
Configuration Description
Endpoint address for Object storage. For example: https://s3.{region}.amazonaws.com.
Value Type
string
Default Value
null
Valid Input Range
N/A
Importance Level
High, requires careful configuration

S3.region

List Item
Description
Configuration DescriptionThe regional identifier for Object storage services, refer to the documentation provided by Cloud providers, such as us-east-1.
Value Typestring
Default Valuenull
Valid Input RangeN/A
Importance LevelHigh, requires careful configuration

S3.bucket

List ItemDescription
Configuration DescriptionObject storage bucket, used for storing messages.
Value Typestring
Default value
null
Valid input range
N/A
Importance level
High, requires careful configuration

S3.path.style

List item
Description
Configuration description
Whether to enable object storage path format. Must be set to true when using MinIO as the storage service.
Value type
boolean
Default value
false
Valid input range
N/A
Importance LevelHigh, requires careful configuration

S3.wal.path

List ItemDescription
Configuration DescriptionMount path for block storage device used to store local WAL, such as /dev/xxx or other paths.
Value Typestring
Default Valuenull
Valid Input RangeN/A
Importance LevelHigh, requires careful configuration

S3.wal.capacity

List itemDescription
Configuration descriptionThe size of the local WAL (Write-Ahead Logging) for AutoMQ. This setting determines the maximum amount of data that can be written to the buffer before being uploaded to object storage. A larger capacity can tolerate more write jitter in the object storage.
Value typelong, in bytes
Default value2147483648
Valid input range[10485760, ...]
Importance levelLow, relatively flexible setting

S3.wal.cache.size

List itemDescription
Configuration descriptionWAL (Write-Ahead Logging) cache is a FIFO (First In, First Out) queue, which contains data that has not yet been uploaded to object storage, as well as data that has been uploaded but not yet evicted from the cache. When the unuploaded cache data fills the entire capacity, the storage will backpressure subsequent requests until the data upload is completed. By default, it sets a reasonable value based on memory settings.
Value Typelong, unit: byte
Default Value-1, automatically set to an appropriate parameter by the program
Valid Input Range[1, ...]
Importance LevelLow, settings are relatively flexible

S3.wal.iops

List ItemDescription
Configuration DescriptionData is batched when written to the WAL, and is persistently written to the WAL disk at a certain frequency. This configuration item determines the frequency of data writes to the WAL. The higher the configuration value, the more frequent the writes per second, reducing latency. However, as the IOPS performance varies among different block devices, setting a value beyond the device's IOPS limit may lead to increased latency due to queuing.
Value Typeint, unit: iops
Default Value3000
Valid Input Range[1, ...]
Importance LevelHigh, recommended to be set to the actual available IOPS of the WAL disk

S3.wal.upload.threshold

List ItemDescription
Configuration DescriptionTriggers the threshold for WAL to upload to object storage. The configuration value needs to be less than s3.wal.cache.size. The larger the configuration value, the higher the data aggregation, and the lower the cost of metadata storage. By default, it sets a reasonable value based on memory settings.
Value Typelong, in bytes
Default Value-1, automatically set by the program to an appropriate parameter value
Valid Input Range[1, ...]
Importance LevelLow, settings are relatively broad

S3.block.cache.size

ItemDescription
Configuration Descriptions3.block.cache.size is the size of the block cache, which is used to cache cold data read from object storage. It is recommended to set this configuration to greater than 4MB * the number of concurrent cold reads per partition to achieve better cold read performance. By default, it sets a reasonable value based on memory.
Value Typelong, in bytes
Default Value-1, automatically set by the program to a suitable parameter value
Valid Input Range[1, ...]
Importance LevelLow, setting is relatively broad

S3.stream.object.compaction.interval.minutes

ItemDescription
Configuration DescriptionThe interval period for compaction of Stream objects. The larger the interval, the lower the cost of API calls, but it increases the scale of metadata storage.
Value Type
int, in minutes
Default Value
30
Valid Input Range
[1, ...]
Importance Level
Low, setting is relatively flexible

S3.stream.object.compaction.max.size.bytes

List Item
Description
Configuration Description
Stream object compaction allows the maximum size of compounded objects. The larger this value, the higher the cost of API calls, but the smaller the scale of metadata storage.
Value Type
long, in bytes
Default Value
1073741824
Legal Input Range[1, ...]
Importance LevelLow, relatively flexible settings

S3.stream.set.object.compaction.interval.minutes

List ItemDescription
Configuration DescriptionSets the interval for stream object compaction. The smaller this value, the smaller the scale of metadata storage and the sooner the data becomes compact. However, the resulting stream objects will undergo more frequent compactions.
Value Typeint, in minutes
Default Value20
Legal Input Range[1, ...]
Importance LevelLow, relatively flexible settings

S3.stream.set.object.compaction.cache.size

List ItemDescription
Configuration DescriptionMemory size available during the stream object compaction process. The larger this value, the lower the cost of API calls.
Value Typelong, in bytes
Default Value209715200
Valid Input Range[1048576, ...]
Importance LevelLow, settings are relatively flexible

S3.stream.set.object.compaction.stream.split.size

List ItemDescription
Configuration DescriptionDuring the Stream object compaction process, if the data volume in a single Stream exceeds this threshold, the data from this Stream will be directly split and written into individual Stream objects. The smaller this value, the sooner the data is split from the Stream set object, reducing the subsequent API call costs for Stream object compaction, but increasing the API call costs for splitting.
Value Type
long, in bytes
Default Value
8388608
Valid Input Range
[1, ...]
Importance Level
Low, relatively flexible settings

S3.stream.set.object.compaction.max.num

List Item
Description
Configuration Description
The maximum number of stream set objects that can be compressed at one time.
Value Type
int
Default Value
500
Legal Input Range[1, ...]
Importance LevelLow, set relatively broadly

S3.network.baseline.bandwidth

List ItemDescription
Configuration DescriptionTotal available bandwidth for Object storage requests. This is used to prevent stream set object compaction and catch-up reads from occupying the normal read/write traffic. Production and consumption will also separately consume inbound and outbound traffic. For example, if this value is set to 100MB/s, and the normal read/write traffic is 80MB/s, then the available bandwidth for stream set object compaction is 20MB/s.
Value Typelong, in bytes/s
Default Value104857600
Legal Input Range[1, ...]
Importance LevelLow, set relatively broadly

S3.stream.allocator.policy

ItemDescription
Configuration DescriptionS3Stream memory allocation strategy. Note that when configured to use DIRECT memory, it is necessary to modify the heap size (e.g., -Xmx) and direct memory size (e.g., -XX:MaxDirectMemorySize) in the JVM options. These can be set through the environment variable KAFKA_HEAP_OPTS.
Value Typestring
Default ValuePOOLED_HEAP
Valid Input RangePOOLED_HEAP, POOLED_DIRECT
Importance LevelLow, relatively flexible settings

S3.telemetry.metrics.enable

ItemDescription
Configuration DescriptionWhether to enable the OTel metrics exporter.
Value Typeboolean
Default Valuetrue
Allowed Input Rangetrue, false
Importance LevelLow, with relatively flexible settings

S3.telemetry.metrics.level

List ItemDescription
Configuration DescriptionSets the level for recording Metrics. The "INFO" level includes most metrics that users should care about, such as throughput and latency for common stream operations. The "DEBUG" level includes detailed metrics helpful for diagnostics, such as latencies at different stages of writing to underlying block storage.
Value Typestring
Default ValueINFO
Legal Input Range
INFO, DEBUG
Importance Level
Low, relatively broad settings

S3.telemetry.metrics.exporter.type

List Item
Description
Configuration Description
Metrics exporter type list:
  • The "otlp" type will use the OTLP protocol to export metrics to backend services.
  • The "prometheus" type will start an internal HTTP server, allowing Prometheus backends to fetch metrics from it.
Value Type
list
Default Value
null
Legal Input Range
otlp, prometheus
Importance Level
Low, relatively broad settings

S3.telemetry.exporter.report.interval.ms

List ItemDescription
Configuration DescriptionSets the interval for exporting Metrics.
Value Typeint, in milliseconds
Default Value30000
Valid Input RangeN/A
Importance LevelLow, setting is relatively flexible

S3.telemetry.exporter.otlp.protocol

List ItemDescription
Configuration DescriptionTransport protocol used by the OTLP exporter.
Value Typestring
Defaultgrpc
Valid Inputsgrpc, http
ImportanceLow, settings are relatively flexible

S3.telemetry.exporter.otlp.endpoint

List ItemDescription
Configuration DescriptionThe exposed address of the backend service when using the OTLP Exporter.
Value Typestring
Defaultnull
Valid Input Range
N/A
Importance Level
Low, settings are relatively broad

S3.telemetry.exporter.otlp.compression.enable

List Item
Description
Configuration Description
Determines whether OTLP exporter enables data compression; if enabled, OTLP uses the gzip compression algorithm to compress Metrics.
Value Type
boolean
Default Value
false
Valid Input Range
true, false
Importance Level
Low, settings are relatively broad

S3.metrics.exporter.prom.host

List ItemDescription
Configuration DescriptionAddress of the built-in Prometheus HTTP server for exposing OTel Metrics.
Value Typestring
Default Valuenull
Valid Input RangeN/A
Importance LevelLow, settings are relatively flexible

S3.metrics.exporter.prom.port

List ItemDescription
Configuration DescriptionPort of the built-in Prometheus HTTP server for exposing OTel Metrics.
Value Type
int
Default Value
0
Valid Input Range
N/A
Importance Level
Low, setting is relatively lenient

Self-balancing Configuration

Metric.reporters

List Item
Description
Configuration Description
List of class names for metrics reporters. Implementing the org.apache.kafka.common.metrics.MetricsReporter interface allows for the dynamic loading of new Metrics. JmxReporter is always included to register JMX statistics. To enable AutoBalancing, metric.reporters must include kafka.autobalancer.metricsreporter.AutoBalancerMetricsReporter.
Value Type
list
Default Value
""
Valid Input Range
N/A
Importance Level
Low, settings are relatively flexible

Autobalancer.reporter.metrics.reporting.interval.ms

List Item
Description
Configuration Description
The interval for reporting data on the Metrics Reporter.
Value Type
long, in milliseconds
Default Value
10000
Valid Input Range
[1000, ...]
Importance Level
High, requires careful configuration

Autobalancer.controller.enable

List Item
Description
Configuration Description
Enables self-balancing.
Value Type
boolean
Default Value
false
Valid Input Range
N/A
Importance Level
High, requires careful configuration

Autobalancer.controller.anomaly.detect.interval.ms

List Item
Description
Configuration DescriptionThe minimum interval at which the Controller checks for the need to self-balance data. The actual timing of the next self-balancing also depends on the number of partitions that have been reassigned. Lowering this minimum check interval can increase the sensitivity of data self-balancing. This value should be greater than the reporting interval of broker metrics to prevent the controller from missing the results of recent reassignments.
Value Typelong, in milliseconds
Default Value60000
Valid Input Range[1, ...]
Importance LevelHigh, requires careful configuration

Autobalancer.controller.metrics.delay.ms

List ItemDescription
Configuration DescriptionWhen the Controller performs load balancing, if the latest Metrics delay of a broker exceeds the configured value, the broker will be excluded due to its lag in sync status. This configuration should not be less than the interval of broker metrics reporting.
Value Typelong, in milliseconds
Default Value60000
Valid Input Range[1, ...]
Importance LevelHigh, requires cautious configuration

Autobalancer.controller.goals

List ItemDescription
Configuration DescriptionTarget settings for self-balancing optimization.
Value Typelist
Default Valuekafka.autobalancer.goals.NetworkInUsageDistributionGoal,kafka.autobalancer.goals.NetworkOutUsageDistributionGoal
Valid Input RangeN/A
Importance Level
High, requires careful configuration

Autobalancer.controller.network.in.usage.distribution.detect.threshold

List Item
Description
Configuration Description
Detection threshold for NetworkInUsageDistributionGoal. If a broker's write bandwidth falls below this configuration value, the broker will not be actively reassigned for self-balancing.
Value Type
long, unit is byte/s
Default Value
1048576
Valid Input Range
[1, ...]
Importance Level
High, requires careful configuration

Autobalancer.controller.network.out.usage.distribution.detect.threshold

List Item
Description
Configuration DescriptionDetection threshold for NetworkOutUsageDistributionGoal. If a broker's read bandwidth falls below this configured value, the broker will not be actively reassigned for self-balancing.
Value Typelong, unit is byte/s
Default Value1048576
Valid Input Range[1, ...]
Importance LevelHigh, requires careful configuration

Autobalancer.controller.network.in.distribution.detect.avg.deviation

List ItemDescription
Configuration DescriptionThis configuration item defines the acceptable deviation range for average write bandwidth. The default value is 0.2, which means the expected network traffic range will be [0.8 loadAvg, 1.2 loadAvg].
Value Typedouble
Default Value
0.2
Valid Input Range
N/A
Importance Level
High, requires careful configuration

Autobalancer.controller.network.out.distribution.detect.avg.deviation

List Item
Description
Configuration Description
This configuration parameter defines the acceptable deviation range for the average read bandwidth. The default value is 0.2, which means the expected network traffic range will be [0.8 * loadAvg, 1.2 * loadAvg].
Value Type
double
Default Value
0.2
Valid Input Range
N/A
Importance Level
High, requires careful configuration

Autobalancer.controller.exclude.topics

List Item
Description
Configuration Description
List of Topics to be excluded from self-balancing.
Value Type
list
Default Value
""
Valid Input Range
N/A
Importance Level
High, requires careful configuration

Autobalancer.controller.exclude.broker.ids

List Item
Description
Configuration DescriptionList of Broker Ids that should be excluded from self-balancing.
Value Typelist
Default Value""
Valid Input RangeN/A
Importance LevelHigh, requires careful configuration