Operating Modes
The Reporter supports two modes that can run simultaneously. Configuration requirements depend on which mode(s) you use.| Mode | Required properties | Optional dependency |
|---|---|---|
| Console | flowwarden.api-key + flowwarden.reporter.console-url | — |
| Prometheus | None | micrometer-core on classpath |
| Both | flowwarden.api-key + flowwarden.reporter.console-url | micrometer-core on classpath |
Properties
Console mode
| Property | Type | Default | Description |
|---|---|---|---|
flowwarden.api-key | String | — | API key for authenticating with the FlowWarden Console. Required only when console-url is configured. |
flowwarden.reporter.console-url | String | — | URL of the FlowWarden Console (e.g. https://console.flowwarden.io). Triggers Console mode when present. |
General
| Property | Type | Default | Description |
|---|---|---|---|
flowwarden.reporter.enabled | boolean | true | Enable or disable the Reporter entirely. When false, no Reporter beans are created. |
flowwarden.reporter.environment | String | auto-detected | Logical environment name (e.g. production, staging). If not set, resolved automatically (see Instance Identity). |
flowwarden.reporter.heartbeat-interval-seconds | int | 30 | Initial heartbeat interval in seconds. Dynamically adjusted by the Console via the next_heartbeat_in field in the ACK response. |
flowwarden.reporter.encryption.enabled | boolean | true | Enable AES-GCM encryption of payloads sent to the Console. |
Example Configurations
- Console only
- Prometheus only
- Dual mode
Validation Rules
The Reporter validates its configuration at startup based on what is configured:| Condition | Behavior |
|---|---|
console-url present + api-key missing | Application fails to start with a clear error (see below) |
api-key present + console-url missing | Warning logged: Console mode disabled. App starts normally. |
No console-url + no MeterRegistry on classpath | Warning logged: No output configured. App starts in NoOp mode. |
MeterRegistry on classpath (regardless of above) | Prometheus mode activated automatically. |
Fail-fast error (Console mode misconfigured)
Prometheus Metrics
When aMeterRegistry is available, the Reporter registers these Micrometer meters:
| Metric | Type | Tags | Description |
|---|---|---|---|
flowwarden_stream_events_total | FunctionCounter | stream, status | Total events processed (monotonic) |
flowwarden_stream_lag_ms | Gauge | stream | Current consumer lag in milliseconds |
flowwarden_stream_dlq_size | Gauge | stream | DLQ events in the current window |
Disabling the Reporter
Setflowwarden.reporter.enabled=false to completely disable the Reporter. No beans are created, no heartbeats are sent, and the StreamMetricsProvider SPI remains at its default no-op implementation.
This is useful for:
- Local development without a Console or Prometheus
- Test environments where monitoring is not needed
- Temporarily disabling reporting without removing the dependency
Overriding Beans
All Reporter beans are registered with@ConditionalOnMissingBean, so you can replace any of them with your own implementation:
InstanceIdentifier, StreamMetricsAggregator, ReporterMetricsProvider, SystemMetricsCollector, PayloadEncoder, HeartbeatSender, FlowWardenMicrometerReporter.
See Also
Instance Identity
How hostname and environment are auto-detected.
Heartbeat & Metrics
What data the Reporter sends to the Console.

