Skip to main content
Version: 6.1

Node Configuration

Node configuration parameters are specified in /app/smrtc/config/smrtc.yml. The installer populates the values during installation. See Installation. The smrtc process reads them once at startup.

Important

Changing node configuration parameters requires restarting the smrtc service and must be performed separately on each node. These parameters cannot be viewed or edited in the Search Anywhere Framework interface.

Each parameter can be specified either as a key in smrtc.yml or as an environment variable. Both methods are equivalent.

The installer writes only the required minimum to smrtc.yml: roles, port, TLS, keystore, cluster name and addresses, the data root directory, and logging. All other parameters use their built-in defaults and are present in the template as comments.

Value Formats

Some parameters are written as a string with a unit rather than as a plain number:

TypeFormatExamples
Size<integer><unit> with binary multipliers: b, kb, mb, gb, tb64mb, 256mb, 1gb
Duration<integer><unit>: ms, s, m, h, d250ms, 2s, 150ms
info

Fractional values are not supported: write 1.5s as 1500ms. A size of 0 is also rejected because it carries no unit; the auto literal exists for automatic detection.

Network and Ports

ParameterPath in smrtc.ymlDescriptionDefault
NODE_PORTnode.portPublic port for event ingestion, the management API, and /health9919
TRANSPORT_PORTnode.transport_portInter-node gRPC transport port used by Raft and the entire node-to-node control plane9910
CLUSTER_ADVERTISE_URLnode.advertise_urlAddress at which other nodes and Search Anywhere Framework reach this node; an empty value is detected from the routing tableempty

Cluster

ParameterPath in smrtc.ymlDescriptionDefault
CLUSTER_NAMEcluster.nameCluster name; must be the same on all nodes and match the OU field in the node certificatesmrtc_cluster
NODE_ROLESroles (top-level list without a section)Node roles; master indicates a metadata quorum member, while an empty value indicates a non-voting replicaempty
CLUSTER_NODEScluster.nodes (list)Node addresses used to join the cluster in host:port format; an empty value means the node forms a cluster by itselfempty

TLS

ParameterPath in smrtc.ymlDescriptionDefault
TLS_ENABLEDtls.enabledEnables TLS and mTLS on the public and transport listenersfalse
TLS_CERT_FILEtls.cert_fileNode certificateempty
TLS_KEY_FILEtls.key_fileNode private keyempty
TLS_CA_CERT_FILEtls.ca_cert_fileCertificate authority bundle used to verify peer certificatesempty
Important

When tls.enabled is true, all three paths - tls.cert_file, tls.key_file, and tls.ca_cert_file - are required. If any of them is missing, the node does not start and reports the reason in the log.

Authentication and Keystore

ParameterPath in smrtc.ymlDescriptionDefault
DEFAULT_ADMIN_USERadmin.userLocal administrator username; the password is stored in the keystoreadmin
KEYSTORE_FILEkeystore.fileEncrypted secret file for the admin password and the Search Anywhere Framework connection password/app/smrtc/config/keystore
KEYSTORE_PASSPHRASEkeystore.passphraseKeystore passphraseempty

Data Directories

DATA_DIR defines the storage root: the other five directories inherit from it by default.

ParameterPath in smrtc.ymlDescriptionDefault
DATA_DIRdata.dirRoot directory for node data/app/smrtc/data
METADATA_DATA_DIRdata.metadata_dirMetadata directory containing bbolt and the Raft log<data.dir>/metadata
DATA_CLUSTER_DIRdata.cluster_dirDirectory for the node identity and persisted rule suppressions<data.dir>/cluster
TELEMETRY_DATA_DIRdata.telemetry_dirDirectory for processed source statistics<data.dir>/telemetry
FIRES_DATA_DIRdata.fires_dirFiring log directory<data.dir>/fires
ACTIVE_LISTS_DATA_DIRdata.active_lists_dirActive lists directory<data.dir>/active-lists
CONTENT_DIRcontent.dirDirectory of content packs imported at startup on the first cluster node; an empty value disables the importempty

Engine

ParameterPath in smrtc.ymlDescriptionDefault
WORKER_COUNTengine.worker_countWorker pool size and number of internal correlation shards; 0 uses the number of CPU cores0
STATE_MAX_GROUPSengine.state_max_groupsNode-wide limit on rule and group correlation states, divided equally across shards; 0 means unlimited8000000
ACTIVE_LISTS_BLOCK_CACHEengine.active_lists_block_cacheRead cache for active lists64mb
ACTIVE_LISTS_AUTOFILL_WORKERSengine.active_lists_autofill_workersNumber of write-behind flusher threads for automatic list population4
ACTIVE_LISTS_AUTOFILL_CHUNKengine.active_lists_autofill_chunkNumber of mutations applied per pass; allowed range is 1 to 1000512
ACTIVE_LISTS_AUTOFILL_FLUSH_INTERVALengine.active_lists_autofill_flush_intervalFlush period for buffered automatic population writes150ms
ACTIVE_LISTS_AUTOFILL_BUFFER_MAXengine.active_lists_autofill_buffer_maxBuffer limit for automatic population, after which new writes are dropped; 0 means unlimited, otherwise the value must be at least 1000200000

Event Ingestion

ParameterPath in smrtc.ymlDescriptionDefault
INGEST_DEDUPE_PEAK_EPSingest.dedupe_peak_epsAssumed peak rate of events forwarded between nodes; sets the lower bound of the duplicate table100000

Memory Circuit Breaker

ParameterPath in smrtc.ymlDescriptionDefault
INGEST_MEMORY_CB_ENABLEDmemory_circuit_breaker.enabledMemory circuit breaker for event ingestiontrue
INGEST_MEMORY_CB_LIMITmemory_circuit_breaker.limitMemory budget; auto detects it from GOMEMLIMIT and then from the cgroup limit, otherwise specify a size of at least 256mbauto
INGEST_MEMORY_CB_SOFT_PCTmemory_circuit_breaker.soft_pctSoft limit threshold as a percentage of the limit85
INGEST_MEMORY_CB_HARD_PCTmemory_circuit_breaker.hard_pctThreshold at which event ingestion is rejected, as a percentage of the limit92
INGEST_MEMORY_CB_RELEASE_PCTmemory_circuit_breaker.release_pctLimit release threshold as a percentage of the limit75
INGEST_MEMORY_CB_SAMPLEmemory_circuit_breaker.sampleMemory sampling period; at least 50ms250ms
INGEST_MEMORY_CB_FORCE_GCmemory_circuit_breaker.force_gcForces a garbage collection cycle when the circuit breaker tripstrue
INGEST_MEMORY_CB_GC_COOLDOWNmemory_circuit_breaker.gc_cooldownMinimum interval between forced garbage collection cycles; at least 100ms2s
Important

The three thresholds must increase strictly: release_pct < soft_pct < hard_pct. Violating this order is a startup error rather than a reason to adjust values automatically: the node does not start and reports the reason in the log.

Logging

ParameterPath in smrtc.ymlDescriptionDefault
LOG_FILElog.fileLog file; an empty value sends output to the standard error stream, which systemd forwards to journaldempty
LOG_MAX_SIZElog.max_sizeLog file size before rotation; must be a whole number100mb
LOG_MAX_BACKUPSlog.max_backupsNumber of retained log archives; 0 retains all of them14
LOG_COMPRESSlog.compressCompresses log archivestrue