Skip to content

Commit

Permalink
NETOBSERV-765 Restore metrics (#315)
Browse files Browse the repository at this point in the history
* NETOBSERV-765 Restore metrics

* Use dedicated port for metrics
  • Loading branch information
jotak authored May 5, 2023
1 parent 2a47af3 commit 862ff9e
Show file tree
Hide file tree
Showing 9 changed files with 1,582 additions and 2 deletions.
7 changes: 7 additions & 0 deletions cmd/plugin-backend.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ var (
buildDate = "unknown"
app = "netobserv-console-plugin"
port = flag.Int("port", 9001, "server port to listen on (default: 9001)")
metricsPort = flag.Int("metrics-port", 9002, "Metrics (prometheus) server port to listen on (default: 9002)")
cert = flag.String("cert", "", "cert file path to enable TLS (disabled by default)")
key = flag.String("key", "", "private key file path to enable TLS (disabled by default)")
corsOrigin = flag.String("cors-origin", "*", "CORS allowed origin (default: *)")
Expand Down Expand Up @@ -111,6 +112,12 @@ func main() {
log.WithError(err).Fatal("auth checker error")
}

go server.StartMetrics(&server.MetricsConfig{
Port: *metricsPort,
CertFile: *cert,
PrivateKeyFile: *key,
})

server.Start(&server.Config{
Port: *port,
CertFile: *cert,
Expand Down
40 changes: 40 additions & 0 deletions pkg/server/metrics_server.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
package server

import (
"crypto/tls"
"fmt"
"net/http"

"github.com/prometheus/client_golang/prometheus/promhttp"
"github.com/sirupsen/logrus"
)

var mlog = logrus.WithField("module", "metrics-server")

type MetricsConfig struct {
Port int
CertFile string
PrivateKeyFile string
}

func StartMetrics(cfg *MetricsConfig) {
promServer := &http.Server{
Addr: fmt.Sprintf(":%d", cfg.Port),
// TLS clients must use TLS 1.2 or higher
TLSConfig: &tls.Config{
MinVersion: tls.VersionTLS12,
},
}

// The Handler function provides a default handler to expose metrics
// via an HTTP server. "/metrics" is the usual endpoint for that.
http.Handle("/metrics", promhttp.Handler())

if cfg.CertFile != "" && cfg.PrivateKeyFile != "" {
mlog.Infof("listening on https://:%d", cfg.Port)
panic(promServer.ListenAndServeTLS(cfg.CertFile, cfg.PrivateKeyFile))
} else {
mlog.Infof("listening on http://:%d", cfg.Port)
panic(promServer.ListenAndServe())
}
}
2 changes: 0 additions & 2 deletions pkg/server/routes.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,6 @@ func setupRoutes(cfg *Config, authChecker auth.Checker) *mux.Router {
api.HandleFunc("/resources/kind/{kind}/names", handler.GetNames(&cfg.Loki))
api.HandleFunc("/frontend-config", handler.GetConfig(cfg.FrontendConfig))

// Temporary removal of metrics
// r.Handle("/metrics", promhttp.Handler())
r.PathPrefix("/").Handler(http.FileServer(http.Dir("./web/dist/")))
return r
}
Loading

0 comments on commit 862ff9e

Please sign in to comment.