Skip to content

Commit eb29339

Browse files
author
Yuri Shkuro
committed
Default to Prometheus metrics in Jaeger components and support it in HotROD
Signed-off-by: Yuri Shkuro <ys@uber.com>
1 parent 7fbd871 commit eb29339

File tree

5 files changed

+33
-31
lines changed

5 files changed

+33
-31
lines changed

examples/hotrod/cmd/root.go

Lines changed: 16 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,21 @@
1515
package cmd
1616

1717
import (
18-
"fmt"
1918
"math/rand"
2019
"os"
2120
"time"
2221

22+
"github.com/prometheus/client_golang/prometheus"
2323
"github.com/spf13/cobra"
24-
"github.com/spf13/viper"
2524
"github.com/uber/jaeger-lib/metrics"
2625
"github.com/uber/jaeger-lib/metrics/go-kit"
2726
"github.com/uber/jaeger-lib/metrics/go-kit/expvar"
27+
jprom "github.com/uber/jaeger-lib/metrics/prometheus"
2828
"go.uber.org/zap"
2929
)
3030

3131
var (
32-
cfgFile string
32+
metricsBackend string
3333
logger *zap.Logger
3434
metricsFactory metrics.Factory
3535
)
@@ -51,25 +51,21 @@ func Execute() {
5151
}
5252

5353
func init() {
54-
cobra.OnInitialize(initConfig)
54+
RootCmd.PersistentFlags().StringVarP(&metricsBackend, "metrics", "m", "expvar", "Metrics backend (expvar|prometheus)")
55+
rand.Seed(int64(time.Now().Nanosecond()))
5556
logger, _ = zap.NewDevelopment()
56-
metricsFactory = xkit.Wrap("", expvar.NewFactory(10)) // 10 buckets for histograms
57+
cobra.OnInitialize(initMetrics)
5758
}
5859

59-
// initConfig reads in config file and ENV variables if set.
60-
func initConfig() {
61-
if cfgFile != "" { // enable ability to specify config file via flag
62-
viper.SetConfigFile(cfgFile)
63-
}
64-
65-
viper.SetConfigName(".jaeger-demo") // name of config file (without extension)
66-
viper.AddConfigPath("$HOME") // adding home directory as first search path
67-
viper.AutomaticEnv() // read in environment variables that match
68-
69-
// If a config file is found, read it in.
70-
if err := viper.ReadInConfig(); err == nil {
71-
fmt.Println("Using config file:", viper.ConfigFileUsed())
60+
// initMetrics is called before the command is executed.
61+
func initMetrics() {
62+
if metricsBackend == "expvar" {
63+
metricsFactory = xkit.Wrap("", expvar.NewFactory(10)) // 10 buckets for histograms
64+
logger.Info("Using expvar as metrics backend")
65+
} else if metricsBackend == "prometheus" {
66+
metricsFactory = jprom.New(prometheus.DefaultRegisterer, nil)
67+
logger.Info("Using Prometheus as metrics backend")
68+
} else {
69+
logger.Fatal("unsupported metrics backend " + metricsBackend)
7270
}
73-
74-
rand.Seed(int64(time.Now().Nanosecond()))
7571
}

examples/hotrod/services/route/server.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"time"
2525

2626
"github.com/opentracing/opentracing-go"
27+
"github.com/prometheus/client_golang/prometheus/promhttp"
2728
"go.uber.org/zap"
2829

2930
"github.com/jaegertracing/jaeger/examples/hotrod/pkg/delay"
@@ -59,7 +60,8 @@ func (s *Server) Run() error {
5960
func (s *Server) createServeMux() http.Handler {
6061
mux := tracing.NewServeMux(s.tracer)
6162
mux.Handle("/route", http.HandlerFunc(s.route))
62-
mux.Handle("/debug/vars", expvar.Handler()) // use exported handler
63+
mux.Handle("/debug/vars", expvar.Handler()) // expvar
64+
mux.Handle("/metrics", promhttp.Handler()) // Prometheus
6365
return mux
6466
}
6567

glide.lock

Lines changed: 8 additions & 8 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

glide.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,9 @@ import:
4040
- metrics
4141
- package: github.com/olivere/elastic
4242
version: v5.0.39
43+
- package: github.com/spf13/pflag
44+
version: ^1
4345
- package: github.com/spf13/cobra
46+
version: 0.0.1
4447
- package: github.com/spf13/viper
48+
version: ^1

pkg/metrics/builder.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ import (
3434
const (
3535
metricsBackend = "metrics-backend"
3636
metricsHTTPRoute = "metrics-http-route"
37-
defaultMetricsBackend = "expvar"
38-
defaultMetricsRoute = "/debug/vars"
37+
defaultMetricsBackend = "prometheus"
38+
defaultMetricsRoute = "/metrics"
3939
)
4040

4141
var errUnknownBackend = errors.New("unknown metrics backend specified")

0 commit comments

Comments
 (0)