in alertmanager/server.go [32:74]
func main() {
port := flag.String("port", defaultPort, fmt.Sprintf("Port to listen for requests. Default is %s", defaultPort))
alertmanagerConfPath := flag.String("alertmanager-conf", defaultAlertmanagerConfigPath, fmt.Sprintf("Path to alertmanager configuration file. Default is %s", defaultAlertmanagerConfigPath))
alertmanagerURL := flag.String("alertmanagerURL", defaultAlertmanagerURL, fmt.Sprintf("URL of the alertmanager instance that is being used. Default is %s", defaultAlertmanagerURL))
matcherLabel := flag.String("multitenant-label", "", "LabelName to use for enabling multitenancy through route matching. Leave empty for single tenant use cases.")
templateDirPath := flag.String("template-directory", defaultTemplateDir, fmt.Sprintf("Directory where template files are stored. Default is %s", defaultTemplateDir))
deleteRoutesByDefault := flag.Bool("delete-route-with-receiver", false, fmt.Sprintf("When a receiver is deleted, also delete all references in the route tree. Otherwise deleting before modifying tree will throw error."))
flag.Parse()
if !strings.HasSuffix(*templateDirPath, "/") {
*templateDirPath += "/"
}
tenancy := &alert.TenancyConfig{
RestrictorLabel: *matcherLabel,
}
e := echo.New()
e.Use(middleware.CORS())
e.Use(middleware.Logger())
fileLocks, err := alert.NewFileLocker(alert.NewDirectoryClient(*templateDirPath))
if err != nil {
panic(fmt.Errorf("error configuring file configmanager: %v", err))
}
config := client.ClientConfig{
ConfigPath: *alertmanagerConfPath,
AlertmanagerURL: *alertmanagerURL,
FsClient: fsclient.NewFSClient("/"),
Tenancy: tenancy,
DeleteRoutes: *deleteRoutesByDefault,
}
receiverClient := client.NewClient(config)
templateClient := client.NewTemplateClient(fsclient.NewFSClient(*templateDirPath), fileLocks)
handlers.RegisterBaseHandlers(e)
handlers.RegisterV0Handlers(e, receiverClient)
handlers.RegisterV1Handlers(e, receiverClient, templateClient)
glog.Infof("Alertmanager Config server listening on port: %s\n", *port)
e.Logger.Fatal(e.Start(fmt.Sprintf(":%s", *port)))
}