From ace8dace7076aa47e914bb91e0bc48095882d1c1 Mon Sep 17 00:00:00 2001
From: Gospodin Bodurov <gospodin@bodurov.net>
Date: Wed, 13 May 2020 11:07:55 +0300
Subject: [PATCH] Start prometheus

---
 main.go          |  7 +++++++
 server/server.go | 17 +++++++++++++++++
 2 files changed, 24 insertions(+)

diff --git a/main.go b/main.go
index e02213e..6efd689 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 5b5e840..f24dba1 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
+}
-- 
GitLab