Configuration
Reveald is configured with a single JSON file. The file uses HUJSON format, which extends JSON with support for comments and trailing commas.
Config file structure
A reveald config has two top-level keys: sources and destinations. Both are maps where each entry has a unique name and a type field that determines which source or destination is used.
The source and destination names (e.g. "my-source-name") are identifiers used in logging and metrics. Choose descriptive names.
By default every source feeds every destination --- all events from all sources are delivered to all configured destinations. Add an optional routes section to control which destinations receive events from each source.
Environment variables
Sensitive values like webhook URLs and API keys can be referenced as environment variables. Prefix the value with $ and use a valid environment variable name:
Then set the variable before running reveald:
Environment variable substitution requires the entire value to be a $VARIABLE reference. Inline interpolation like "https://host/$PATH" is not supported.
Default config path
The default config path is /etc/reveald/config.json. Override it with the --config or -c flag:
Debug logging
Set the RUNREVEAL_DEBUG environment variable to enable debug-level logging:
Multiple sources and destinations
You can define as many sources and destinations as needed. Each runs concurrently:
Routing
By default reveald delivers every source's events to every destination. The optional routes section overrides this so a given source only reaches the destinations you choose. This lets a single reveald instance, for example, send audit logs to one RunReveal workspace and application logs to another, or archive some sources to S3 while forwarding others to RunReveal.
routes is a map keyed by source name, whose value is the list of destination names that should receive that source's events:
Wildcards
- A source key of
"*"is a catchall route applied to any source that doesn't have its own explicit entry. - A destination value of
"*"expands to every configured destination (for example"app": ["*"]sends theappsource to all destinations).
Defaults and backwards compatibility
- If
routesis omitted or empty, every source is delivered to every destination (the historical behavior). - If
routesis present but a source has no explicit entry and there is no"*"catchall, that source falls back to all destinations. - A source routed to an empty list (
"app": []) is dropped --- its events are not delivered anywhere.
Route entries must reference sources and destinations that actually exist. If a route names an unknown source or destination, reveald logs the error and refuses to start so typos surface immediately.
High-watermark files
Reveald persists read positions so it can resume after restarts without reprocessing logs:
| Source | Watermark file |
|---|---|
file | ~/.config/reveald/watcher-hwm.json |
cri | ~/.config/reveald/cri-hwm.json |
journald | ~/.config/reveald/kawad-journald-hwm |
These files are created automatically. If you need a clean start, stop reveald and delete the relevant watermark file.
Full example
Here is a production-ready configuration collecting from multiple sources:
Related
- Sources --- All source type options
- Destinations --- All destination type options
- Processors --- Transform events before forwarding