move links, adminSync.ignoreUsers and scrapeTargets under their service's deploy namespace
This commit is contained in:
parent
ee591b0546
commit
90272ec3c0
1 changed files with 156 additions and 108 deletions
|
|
@ -138,58 +138,6 @@ in
|
|||
'';
|
||||
};
|
||||
|
||||
scrapeTargets = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.str;
|
||||
default = { };
|
||||
example = lib.literalExpression ''{ collector = "127.0.0.1:8889"; }'';
|
||||
description = ''
|
||||
Prometheus exposition endpoints this collector scrapes, as
|
||||
`<job name> = "<host>:<port>"`. The collector runs in a network namespace of
|
||||
its own, so `127.0.0.1` is the collector container's loopback: a target
|
||||
here is a listener inside that container, such as its own telemetry.
|
||||
|
||||
A path and query may follow the port —
|
||||
`"127.0.0.1:9100/stats?format=prometheus"` — for an
|
||||
exporter that does not serve `/metrics`. Both are optional and
|
||||
omitted when absent, so a bare `host:port` is scraped exactly as
|
||||
before.
|
||||
|
||||
**A service declares its own entry, from its own module, under its
|
||||
own `enable`.** Do not assemble the list here: an entry then exists
|
||||
only where the service that named it runs, so a target is never
|
||||
declared on a host that does not serve it. A swarm service on the
|
||||
host is not reachable here, since its loopback is not the collector's:
|
||||
it is a `publishedScrapeTargets` entry instead, which a collector on
|
||||
any host scrapes.
|
||||
|
||||
⚠️ **That constrains the TARGET, not the SCRAPER, and the difference
|
||||
is a silent gap.** Nothing here puts the collector on the same host.
|
||||
Services are co-located by *default* — `swarm-required-services.nix`
|
||||
derives their `enable` flags from one `lib.mkDefault` — not by
|
||||
construction, and an operator may split them.
|
||||
|
||||
When they are split the target is simply never scraped: the
|
||||
service's host declares an entry no local collector reads, and the
|
||||
collector's host never enabled that service so has no entry at all.
|
||||
No error, no eval failure, no warning.
|
||||
|
||||
**No assertion can catch this.** Two hosts are separate NixOS
|
||||
evaluations with no shared context, so neither can see what the
|
||||
other runs. A service that would be seriously wrong to lose should
|
||||
say so in its own contribution, because saying it is the only
|
||||
mechanism available.
|
||||
|
||||
Samples land in a swarm-level pipeline that stamps `swarm` and
|
||||
**never** `hive`: a swarm service does not belong to a hive, and
|
||||
`hive` stays a property of which authenticated receiver accepted a
|
||||
push, not something a scrape can acquire.
|
||||
|
||||
Empty by default, in which case no scrape receiver, processor or
|
||||
pipeline is emitted at all — an enabled scraper with nothing to
|
||||
scrape is the inert configuration this option exists to avoid.
|
||||
'';
|
||||
};
|
||||
|
||||
publishedScrapeTargets = lib.mkOption {
|
||||
type = lib.types.attrsOf lib.types.str;
|
||||
default = { };
|
||||
|
|
@ -200,7 +148,7 @@ in
|
|||
|
||||
**Entries are declared swarm-wide**: from this module's `config`,
|
||||
unconditionally, keyed on the service's `swarm.<svc>.domain`, so
|
||||
every host evaluates the same set. Unlike `scrapeTargets`, an entry
|
||||
every host evaluates the same set. Unlike `deploy.swarm-otel.scrapeTargets`, an entry
|
||||
is not declared under the service's own `enable`: the collector
|
||||
reads this list on its host and authelia's registration reads it on
|
||||
authelia's host, and neither need be the service's host. A swarm
|
||||
|
|
@ -222,7 +170,7 @@ in
|
|||
slash, `http` for `https`) presents as a valid token rejected at
|
||||
the target, several layers from its cause.
|
||||
|
||||
⚠️ Deliberately separate from `scrapeTargets`. An entry there is
|
||||
⚠️ Deliberately separate from `deploy.swarm-otel.scrapeTargets`. An entry there is
|
||||
trusted because the scraper and the target share a host — that
|
||||
option is loopback-and-unauthenticated by contract. An entry here
|
||||
is trusted because it presents a credential. One shape for both
|
||||
|
|
|
|||
Loading…
Reference in a new issue