in pkg/export/gcm/promtest/prometheus.go [112:164]
func newPrometheus(env e2e.Environment, name string, image string, scrapeTargetAddress string, flagOverride map[string]string) *e2emon.Prometheus {
ports := map[string]int{"http": 9090}
f := env.Runnable(name).WithPorts(ports).Future()
config := fmt.Sprintf(`
global:
external_labels:
collector: %v
scrape_configs:
- job_name: 'test'
scrape_interval: 5s
scrape_timeout: 5s
static_configs:
- targets: [%s]
metric_relabel_configs:
- regex: instance
action: labeldrop
`, name, scrapeTargetAddress)
if err := os.WriteFile(filepath.Join(f.Dir(), "prometheus.yml"), []byte(config), 0600); err != nil {
return &e2emon.Prometheus{Runnable: e2e.NewFailedRunnable(name, fmt.Errorf("create prometheus config failed: %w", err))}
}
args := map[string]string{
"--web.listen-address": fmt.Sprintf(":%d", ports["http"]),
"--config.file": filepath.Join(f.Dir(), "prometheus.yml"),
"--storage.tsdb.path": f.Dir(),
"--enable-feature=exemplar-storage": "",
"--enable-feature=native-histograms": "",
"--storage.tsdb.no-lockfile": "",
"--storage.tsdb.retention.time": "1d",
"--storage.tsdb.wal-compression": "",
"--storage.tsdb.min-block-duration": "2h",
"--storage.tsdb.max-block-duration": "2h",
"--web.enable-lifecycle": "",
"--log.format": "json",
"--log.level": "info",
}
if flagOverride != nil {
args = e2e.MergeFlagsWithoutRemovingEmpty(args, flagOverride)
}
p := e2emon.AsInstrumented(f.Init(e2e.StartOptions{
Image: image,
Command: e2e.NewCommandWithoutEntrypoint("prometheus", e2e.BuildArgs(args)...),
Readiness: e2e.NewHTTPReadinessProbe("http", "/-/ready", 200, 200),
User: strconv.Itoa(os.Getuid()),
}), "http")
return &e2emon.Prometheus{
Runnable: p,
Instrumented: p,
}
}