Problem:
`enable_metric_sink` is all-or-nothing and only gates future installs, so a
single misbehaving curated series cannot be silenced in the field. The sinks
an operator wants off mid-incident are the ones already running on existing
replicas, which the flag leaves up until replica drop or an envd restart.
Solution:
Add a `disabled_metric_sinks` system var holding a comma-separated list of
curated definition names. `install_metric_sinks` skips a denied definition, and
`reconcile_metric_sinks` converges the installed set whenever the var changes:
a newly denied definition is dropped wherever it runs, a no-longer-denied one
is installed on every replica. The denylist subtracts from `enable_metric_sink`
rather than overriding it, so with that flag off nothing installs regardless.
Testing:
- A unit test for parsing: padding, empty entries, a trailing comma, an
unknown name, and exact matching otherwise.
- metric-sink.td covers the cases: teardown of a running sink while the
other survives, re-install on clear, a replica created under the ban never
installing it, and an unknown name tearing nothing down.
Problem:
enable_metric_sinkis all-or-nothing and only gates future installs, so a single misbehaving curated series cannot be silenced in the field. The sinks an operator wants off mid-incident are the ones already running on existing replicas, which the flag leaves up until replica drop or an envd restart.Solution:
Add a
disabled_metric_sinkssystem var holding a comma-separated list of curated definition names.install_metric_sinksskips a denied definition, andreconcile_metric_sinksconverges the installed set whenever the var changes: a newly denied definition is dropped wherever it runs, a no-longer-denied one is installed on every replica. The denylist subtracts fromenable_metric_sinkrather than overriding it, so with that flag off nothing installs regardless.Testing: