func main()

in prometheus/server.go [32:77]


func main() {
	port := flag.String("port", defaultPort, fmt.Sprintf("Port to listen for requests. Default is %s", defaultPort))
	rulesDir := flag.String("rules-dir", ".", "Directory to write rules files. Default is '.'")
	prometheusURL := flag.String("prometheusURL", defaultPrometheusURL, fmt.Sprintf("URL of the prometheus instance that is reading these rules. Default is %s", defaultPrometheusURL))
	multitenancyLabel := flag.String("multitenant-label", "tenant", fmt.Sprintf("The label name to segment alerting rules to enable multi-tenant support, having each tenant's alerts in a separate file. Default is %s", defaultTenancyLabel))
	restrictQueries := flag.Bool("restrict-queries", false, "If this flag is set all alert rule expressions will be restricted to only match series with {<multitenant-label>=<tenant>}")
	flag.Parse()

	if !strings.HasSuffix(*rulesDir, "/") {
		*rulesDir += "/"
	}

	// Check if rulesDir exists and create it if not
	if _, err := os.Stat(*rulesDir); os.IsNotExist(err) {
		files, err := ioutil.ReadDir("/")
		if err != nil {
			glog.Fatalf("Could not stat directory: %v", err)
		}
		fmt.Println(files)
		err = os.Mkdir(*rulesDir, 0644)
		if err != nil {
			glog.Fatalf("Could not create rules directory: %v", err)
		}
	}

	fileLocks, err := alert.NewFileLocker(alert.NewDirectoryClient(*rulesDir))
	clientTenancy := alert.TenancyConfig{
		RestrictQueries: *restrictQueries,
		RestrictorLabel: *multitenancyLabel,
	}
	alertClient := alert.NewClient(fileLocks, *prometheusURL, fsclient.NewFSClient(*rulesDir), clientTenancy)
	if err != nil {
		glog.Fatalf("error creating alert client: %v", err)
	}

	e := echo.New()
	e.Use(middleware.CORS())
	e.Use(middleware.Logger())

	handlers.RegisterBaseHandlers(e)
	handlers.RegisterV0Handlers(e, alertClient)
	handlers.RegisterV1Handlers(e, alertClient)

	glog.Infof("Prometheus Config server listening on port: %s\n", *port)
	e.Logger.Fatal(e.Start(fmt.Sprintf(":%s", *port)))
}