diff --git a/main.go b/main.go index e02213e772c398407658619db48ed6341244de81..6efd689f828c505c7df7851c6abe1c503727ef91 100644 --- a/main.go +++ b/main.go @@ -70,6 +70,13 @@ func main() { } }() + go func() { + err := server.StartPrometheusServer() + if err != nil { + log.Printf("failed to start prometheus server: %v", err) + } + }() + // infinite loop log.Printf("Entering infinite loop") select {} diff --git a/server/server.go b/server/server.go index 5b5e8407c18faa2cec8a807bfee5ce32d75b1bf4..f24dba110d18f0d06ec4f360397d5050f2b94cf6 100644 --- a/server/server.go +++ b/server/server.go @@ -27,6 +27,7 @@ import ( "sync" "github.com/prometheus/client_golang/prometheus" + "github.com/prometheus/client_golang/prometheus/promhttp" "code.vereign.com/code/viam-apis/errors" @@ -258,3 +259,19 @@ func StartRESTServer(address, grpcAddress string, certPEM []byte) error { return nil } + +func StartPrometheusServer() error { + if config.PrometeusListenAddress != "" { + // start prometheus + promHandler := http.NewServeMux() + promHandler.Handle("/metrics", promhttp.Handler()) + log.Println("Starting prometheus...") + err := http.ListenAndServe(config.PrometeusListenAddress, promHandler) + + if err != nil { + return err + } + } + + return nil +}