Skip to content
Snippets Groups Projects

Expose prometheus metrics

Merged Yordan Kinkov requested to merge 12-expose-prometheus-metrics into main
480 files
+ 100
2
Compare changes
  • Side-by-side
  • Inline
Files
480
+ 14
0
@@ -3,12 +3,14 @@ package main
import (
"context"
"errors"
"fmt"
"log"
"net"
"net/http"
"time"
"github.com/kelseyhightower/envconfig"
"github.com/prometheus/client_golang/prometheus/promhttp"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
"go.uber.org/zap"
@@ -151,6 +153,9 @@ func main() {
goahealthsrv.Mount(mux, healthServer)
goaopenapisrv.Mount(mux, openapiServer)
// expose metrics
go exposeMetrics(cfg.Metrics.Addr, logger)
var handler http.Handler = mux
srv := &http.Server{
Addr: cfg.HTTP.Host + ":" + cfg.HTTP.Port,
@@ -211,3 +216,12 @@ func httpClient() *http.Client {
Timeout: 30 * time.Second,
}
}
func exposeMetrics(addr string, logger *zap.Logger) {
promMux := http.NewServeMux()
promMux.Handle("/metrics", promhttp.Handler())
logger.Info(fmt.Sprintf("exposing prometheus metrics at %s/metrics", addr))
if err := http.ListenAndServe(addr, promMux); err != nil {
logger.Error("error exposing prometheus metrics", zap.Error(err))
}
}
Loading