Skip to main content
Version: 2.6.0

Server Configuration File

ChronoLog server executables share a single JSON configuration file. The repository ships a template at default_conf.json.in; a fully expanded example is installed as conf/default-chrono-conf.json and is used by tools/deploy_local.sh.

As of ChronoLog v2.6.0 the file is organized into two shared blocks (clock, authentication) and four per-component sections (chrono_visor, chrono_keeper, chrono_grapher, chrono_player). See the Overview page for the loader architecture behind these sections.

{
"clock": { ... },
"authentication": { ... },
"chrono_visor": { ... },
"chrono_keeper": { ... },
"chrono_grapher": { ... },
"chrono_player": { ... }
}

Shared Blocks

These blocks are parsed once by ConfigurationManager and are visible to every process.

clock

Controls the clock source used for event timestamping. See Performance Tuning → Clock Source for the effect of each option.

FieldTypeDefaultDescription
clocksource_typestring"CPP_STYLE"One of "C_STYLE", "CPP_STYLE", "TSC".
drift_cal_sleep_secinteger10Seconds between clock drift calibrations.
drift_cal_sleep_nsecinteger0Additional nanoseconds added to the calibration interval.

Backed by ClockConf in chrono_common/include/ConfigurationBlocks.h.

authentication

FieldTypeDefaultDescription
auth_typestring"RBAC"Authentication mechanism. Currently only "RBAC" is used.
module_locationstring""Path to the authentication module shared object.

Backed by AuthConf in chrono_common/include/ConfigurationBlocks.h.


Common Per-Component Sub-Blocks

Several JSON sub-blocks appear in more than one component. They always have the same shape, parsed by the same C++ building block.

rpc — Thallium endpoint

Every service endpoint is described by an rpc block, parsed by RPCProviderConf.

FieldTypeExampleDescription
protocol_confstring"ofi+sockets"Thallium/Mercury transport string. See Network & RPC.
service_ipstring"127.0.0.1"IP the service binds to (servers) or connects to (clients).
service_base_portinteger5555TCP port.
service_provider_idinteger55Thallium provider ID; multiplexes services on the same address.

Monitoring — logging

Per-component log sink. Wrapped under a monitor key and parsed by LogConf.

"Monitoring": {
"monitor": {
"type": "file",
"file": "chrono-visor-1.log",
"level": "debug",
"name": "ChronoVisor",
"filesize": 104857600,
"filenum": 3,
"flushlevel": "warning"
}
}
FieldTypeDescription
typestringLog sink type. Currently only "file" is supported.
filestringLog file name.
levelstringMinimum log level: trace, debug, info, warning, error, critical, off.
namestringLogger name that appears in log lines.
filesizeintegerMaximum file size in bytes before rotation.
filenumintegerNumber of rotated files to keep.
flushlevelstringMinimum level that triggers an immediate flush to disk.

DataStoreInternals — story-chunk tuning

Appears in chrono_keeper, chrono_grapher, and chrono_player. Parsed by DataStoreConf. See Performance Tuning → Story Chunk Settings for the semantics of each field.

FieldTypeDescription
max_story_chunk_sizeintegerMaximum number of events in a single chunk.
story_chunk_duration_secsintegerHow long a chunk remains open.
acceptance_window_secsintegerMaximum allowed age of an incoming event relative to wall-clock time.
inactive_story_delay_secsintegerIdle time before an in-memory story is evicted.

Extractors / ArchiveReaders — story files directory

Parsed by ExtractorReaderConf. Present under the key Extractors in chrono_keeper and chrono_grapher, and under ArchiveReaders in chrono_player.

FieldTypeDescription
story_files_dirstringFilesystem directory where story files are written or read by the component.

chrono_visor

Parsed by VisorConfiguration (ChronoVisor/include/ChronoVisorConfiguration.h).

FieldTypeDescription
VisorClientPortalServiceobject{ "rpc": { ... } } — endpoint used by clients to connect to ChronoVisor.
VisorKeeperRegistryServiceobject{ "rpc": { ... } } — endpoint where ChronoKeeper/Grapher/Player register and heartbeat.
MonitoringobjectSee Monitoring.
delayed_data_admin_exit_in_secsintegerShutdown grace period for the data administration service. Clamped to (0, 60); default 5.

chrono_keeper

Parsed by KeeperConfiguration (ChronoKeeper/include/ChronoKeeperConfiguration.h).

FieldTypeDescription
RecordingGroupintegerLogical group this keeper belongs to. Must match its paired ChronoGrapher.
KeeperRecordingServiceobject{ "rpc": { ... } } — endpoint that receives events from ChronoVisor for recording.
KeeperDataStoreAdminServiceobject{ "rpc": { ... } } — endpoint for admin actions on the keeper's data store.
VisorKeeperRegistryServiceobject{ "rpc": { ... } } — endpoint on ChronoVisor where this keeper registers.
KeeperGrapherDrainServiceobject{ "rpc": { ... } } — endpoint on ChronoGrapher where drained chunks are delivered.
MonitoringobjectSee Monitoring.
DataStoreInternalsobjectSee DataStoreInternals.
ExtractorsobjectSee Extractors / ArchiveReaders.

chrono_grapher

Parsed by GrapherConfiguration (ChronoGrapher/include/ChronoGrapherConfiguration.h).

FieldTypeDescription
RecordingGroupintegerLogical group this grapher serves.
KeeperGrapherDrainServiceobject{ "rpc": { ... } } — endpoint where this grapher receives drained chunks from a keeper.
DataStoreAdminServiceobject{ "rpc": { ... } } — endpoint for admin actions on the grapher's data store.
VisorRegistryServiceobject{ "rpc": { ... } } — endpoint on ChronoVisor where this grapher registers.
MonitoringobjectSee Monitoring.
DataStoreInternalsobjectSee DataStoreInternals.
ExtractorsobjectSee Extractors / ArchiveReaders.

chrono_player

Parsed by PlayerConfiguration (ChronoPlayer/include/ChronoPlayerConfiguration.h).

FieldTypeDescription
RecordingGroupintegerLogical group this player serves.
PlayerStoreAdminServiceobject{ "rpc": { ... } } — endpoint for admin actions on the player's data store.
PlaybackQueryServiceobject{ "rpc": { ... } } — endpoint that receives playback queries from clients.
VisorRegistryServiceobject{ "rpc": { ... } } — endpoint on ChronoVisor where this player registers.
MonitoringobjectSee Monitoring.
DataStoreInternalsobjectSee DataStoreInternals.
ArchiveReadersobjectSee Extractors / ArchiveReaders.

Full Example

The repository ships a fully expanded example at default_conf.json.in. Default values for every field are defined in the constructors of the configuration classes listed above.