container collectors scrape their own telemetry and push it up their hop
This commit is contained in:
parent
2095bb2d0f
commit
73c966a7eb
1 changed files with 163 additions and 49 deletions
|
|
@ -208,6 +208,37 @@ let
|
|||
# the two tier cases differ only in which receiver they hand it.
|
||||
carriesJournaldSeverity = receiver: lib.elem journaldSeverityParser (receiver.operators or [ ]);
|
||||
|
||||
# Whether a container collector's settings carry the self-scrape of
|
||||
# ../collector-self-scrape.nix: the telemetry endpoint on loopback at `port`,
|
||||
# a job scraping exactly that address, and a metrics pipeline that reads the
|
||||
# job and leaves through an exporter the settings define. `attrs` are the
|
||||
# resource attributes the pipeline stamps.
|
||||
selfScrapes =
|
||||
s: port: attrs:
|
||||
let
|
||||
job = lib.findFirst (j: j.job_name == "collector") null (
|
||||
s.receivers."prometheus/self".config.scrape_configs or [ ]
|
||||
);
|
||||
pipeline = s.service.pipelines."metrics/self" or null;
|
||||
reader = lib.head (s.service.telemetry.metrics.readers or [ { } ]);
|
||||
stamped = lib.mapAttrsToList (key: value: {
|
||||
inherit key value;
|
||||
action = "upsert";
|
||||
}) attrs;
|
||||
in
|
||||
job != null
|
||||
&& job.static_configs == [ { targets = [ "127.0.0.1:${toString port}" ]; } ]
|
||||
&&
|
||||
(reader.pull.exporter.prometheus or null) == {
|
||||
host = "127.0.0.1";
|
||||
inherit port;
|
||||
}
|
||||
&& pipeline != null
|
||||
&& pipeline.receivers == [ "prometheus/self" ]
|
||||
&& (s.processors."resource/self".attributes or null) == stamped
|
||||
&& pipeline.exporters != [ ]
|
||||
&& lib.all (e: s.exporters ? ${e}) pipeline.exporters;
|
||||
|
||||
# The enables that switch owns. The hive tier's collector is not among them: it
|
||||
# follows `deploy.hive-controller.enable`, and a services host without a hive
|
||||
# runs none.
|
||||
|
|
@ -283,6 +314,7 @@ in
|
|||
inherit agentHarness;
|
||||
inherit journaldSeverityParser;
|
||||
inherit carriesJournaldSeverity;
|
||||
inherit selfScrapes;
|
||||
inherit swarmServiceEnables;
|
||||
inherit runGroup;
|
||||
inherit forceServiceConfigs;
|
||||
|
|
|
|||
Loading…
Reference in a new issue