Skip to main content
Timeseries is configured through CLI arguments and a Prometheus-compatible YAML configuration file. The CLI arguments control server startup, while the YAML file defines scrape targets, storage backends, and operational parameters.

CLI Arguments

Pass these flags when starting the opendata-timeseries binary.

Configuration File

The configuration file follows the Prometheus YAML format with additional sections for storage. The generic placeholders used in this reference are:
  • <string>: a regular string
  • <int>: an integer value
  • <duration>: a duration matching [0-9]+(ms|s|m|h|d) (e.g. 30s, 1m, 2h)
A value enclosed in [ ] is optional. The default value is shown after | default =.

<scrape_config>

Each scrape config defines a set of targets and the parameters for scraping them.

<static_config>

A static config defines a list of targets and a common set of labels to apply.

<storage_config>

Storage is tagged by type.
Stores data in memory only. Data is lost on restart. Useful for testing and development. No additional fields are required.

<cache_config>

Two slots share this cache configuration: block_cache holds decoded SST data blocks, and meta_cache holds SST metadata (filters, indexes, and stats blocks). When either is set, SlateDB routes data blocks to block_cache and metadata blocks to meta_cache. A slot left unset caches nothing for that class of block.
Setting block_cache without meta_cache leaves filters and indexes uncached, so every read fetches them from the object store again. Because each read consults the filter of every SST that might hold the key, query latency then grows with SST count. Always pair block_cache with a meta_cache.
A cache is tagged by type: FoyerHybrid (memory + disk tiers) or FoyerMemory (memory only), both backed by foyer.
Two tiers: in-memory plus on-disk (ideally NVMe). Suited to the block_cache slot, where capacity matters more than the last few microseconds of latency.
See the production guide for recommended sizes.

<object_store_config>

The object store is tagged by type.

<cache_warmer_config>

On startup, the warmer discovers the time buckets that overlap the warm window and hands the SSTs backing them to SlateDB’s cache manager, which loads each SST’s filters and index (plus its sample data blocks when include_samples is set) directly into the configured caches. Filters and indexes land in meta_cache, data blocks in block_cache. The first queries after a restart then run against warm caches instead of paying object-store round trips. The warmer runs once and exits. It is a no-op when neither cache is configured. Pairing it with an in-memory meta_cache works well: the cache loses its contents on restart, and the warmer rebuilds them in seconds. Enabled by default. Set cache_warmer: null to disable.
Match warm_range to the time range your dashboards and alerts query most. A warm window that exceeds cache capacity wastes work: the cache evicts some warmed blocks before a query ever reads them.

<buffer_consumer_config>

Enables the durable-queue write path. See the Stateless Ingest page for the full architecture, the OpenTelemetry Collector side, and operational guidance.
Requires read-write mode. When absent, no consumer starts.

Examples

prometheus.yaml