feat(#3265): feed the store from the collector, and derive the pair
Review feedback: the metrics pair had nothing writing into it, and it sat outside the switch that turns on every other swarm-wide service. The collector now exports to VictoriaMetrics as well as upstream — a fan-out, not a choice: a local store is for looking at this swarm, an upstream is for whoever aggregates across swarms. That makes a local store a complete destination on its own, so `otel.endpoint` is no longer required when it runs here; a hive with neither is still refused. The assertion only ever relaxes, so every config that evaluated before still does. `enableRequiredServices` now derives both halves, alongside matrix, authelia and nats. They derive together because a store with no UI is unreadable and a UI with no store is empty.
This commit is contained in:
parent
f6870c6a85
commit
c364d262e5
3 changed files with 82 additions and 13 deletions
|
|
@ -68,15 +68,19 @@ one Grafana, in two containers at `metrics.<swarm-domain>` and
|
|||
`grafana.<swarm-domain>`. Two containers rather than one so Grafana can
|
||||
be restarted or broken without taking the time-series database with it.
|
||||
|
||||
Both are **opt-in** — unlike authelia and matrix they do not follow
|
||||
`swarm.enableRequiredServices`, because turning them on starts a
|
||||
database that grows for as long as the swarm runs:
|
||||
Both follow `swarm.enableRequiredServices` like authelia and matrix, so
|
||||
the swarm's service host gets them with everything else. They derive
|
||||
together: a store with no UI is unreadable and a UI with no store is
|
||||
empty. To run one without the other, set it directly:
|
||||
|
||||
```nix
|
||||
services.hyperhive.swarm.victoriametrics.enable = true;
|
||||
services.hyperhive.swarm.grafana.enable = true;
|
||||
services.hyperhive.swarm.grafana.enable = false;
|
||||
```
|
||||
|
||||
⚠️ **This starts a database that grows for as long as the swarm runs.**
|
||||
See `retentionPeriod` below before leaving it at its default.
|
||||
|
||||
| Option | When you'd touch it |
|
||||
|---|---|
|
||||
| `swarm.victoriametrics.retentionPeriod` | Default `5y`. Lower it once you have measured how fast this swarm actually fills a disk — the default is deliberately generous because too-short silently discards history you cannot get back. |
|
||||
|
|
@ -89,9 +93,15 @@ login form is switched off whenever SSO is configured. If you enable
|
|||
Grafana on a host with no authelia, the form stays on and Grafana's
|
||||
default `admin`/`admin` applies; change it before exposing that host.
|
||||
|
||||
The metrics **arrive** from the swarm's OTEL collector, not from agents
|
||||
directly — see [`../observability.md`](../observability.md). Neither
|
||||
container is reachable except through the gateway: both bind loopback,
|
||||
and VictoriaMetrics' write endpoint takes no credential, so the
|
||||
collector is the only intended writer.
|
||||
**Where the data comes from.** With `otel.enable` on, the hive's OTEL
|
||||
collector writes into this store as well as to any upstream endpoint —
|
||||
both, not one or the other, since a local store is for looking at this
|
||||
swarm and an upstream is for whoever aggregates across swarms. That also
|
||||
means `otel.endpoint` is no longer required when the store runs here: a
|
||||
hive with a local store already has somewhere for telemetry to go. See
|
||||
[`../observability.md`](../observability.md).
|
||||
|
||||
Neither container is reachable except through the gateway: both bind
|
||||
loopback, and VictoriaMetrics' write endpoint takes no credential, so
|
||||
the collector is the only intended writer.
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue