local hosts_by_scheme = { http: { // name: ["host:port", role] // See overview.jsonnet for role explanations. mynode: ["localhost:8080", "replica"] }, https: { }, }; local services_by_role = { replica: [ "restreamer", "downloader", "backfiller", "segment_coverage", ], local_edit: self.replica + ["thrimshim"], edit: self.local_edit + ["cutter"], leader: self.edit + ["sheetsync", "playlist_manager"], }; local services = services_by_role.leader; { global: { evaluation_interval: "15s", scrape_interval: "15s", }, scrape_configs: [ { job_name: "prometheus", static_configs: [ {targets: ["localhost:9090"], labels: {instance: "prometheus", service: "prometheus"}}, ], }, ] + std.flattenArrays([ [ { local hosts = hosts_by_scheme[scheme], job_name: "%s-%s" % [scheme, service], metrics_path: "/metrics/%s" % service, scheme: scheme, static_configs: [ { local target = hosts[host][0], local role = hosts[host][1], targets: [target], labels: { instance: host, target: target, url: "%s://%s" % [scheme, target], role: role, service: service, }, } for host in std.objectFields(hosts) if std.count(services_by_role[hosts[host][1]], service) > 0 ], } for service in services ] for scheme in std.objectFields(hosts_by_scheme) ]), }