Operations
Durability
Section titled “Durability”What survives a restart depends entirely on -eventlog:
memory(the default) keeps the event log in process memory only. A restart loses every event — the projections (current state, history) rebuild from nothing, not from where they left off.file://<path>persists the log to an embedded Pebble store at that path, durable across restarts. Pass-retainto make jaque fail fast at startup instead of running if-eventlogdoesn’t guarantee persistence.nats://<host:port>persists to an external JetStream instance, the shared log a multi-engine deployment reads from.
With file:// or nats://, three flags govern how much history the log
actually keeps before it’s compacted away:
-eventlog-retain-check-executed(default168h, i.e. 7 days) — how longcheck_executedevents are kept.-eventlog-retain-state-changed(default0, unbounded) — how longstate_changedevents are kept;0is what Nagios-style state history needs.-eventlog-retain-reachability-changed(default0, unbounded) — how longreachability_changedevents are kept.
-compaction-interval (default 1h) is how often the embedded
transport’s retention pass runs and actually drops events past those
windows.
Backing up the Pebble directory
Section titled “Backing up the Pebble directory”With -eventlog file://<path>, the durable state is the Pebble directory
at <path>. Two ways to back it up:
- Cold copy: stop jaque, copy the directory, restart. Pebble is not safe to copy while the process is writing to it.
- Rely on replay: if you’re running
-eventlog nats://...instead, the external JetStream log is the durable copy — a fresh jaque instance pointed at the same log replays it from scratch, so there is nothing process-local to back up.
Upgrades
Section titled “Upgrades”Replace the binary and restart. There’s no migration step: the event log
format doesn’t change across a binary upgrade, and every projection
(current object state, dashboard rows, Livestatus tables) rebuilds by
replaying the log from wherever it resumes — from the start for
memory, from where the log left off for file:///nats://. Restart
each role (engine, worker, ui, sink, notifier) independently in
a split deployment; there’s no required ordering between them.
Troubleshooting
Section titled “Troubleshooting”- ICMP checks return
UNKNOWNwith permission denied — theicmpcheck uses unprivileged datagram sockets, which most Linux distributions don’t allow by default. Runsudo sysctl -w net.ipv4.ping_group_range="0 2147483647"(or a narrower group range). See Quickstart. - A passive object keeps going
UNKNOWN— check itsfreshness_threshold. Once a result is older than that window, the object is forced tostale_status(UNKNOWNby default) until a fresh result arrives. See Passive checks. - jaque won’t start, or a listener won’t bind — another process is
already on that port. Check
-listen(dashboard, API,/metrics),-livestatus-listen(Livestatus TCP), and-livestatus-socket(Livestatus UNIX socket) for a conflicting address or path.