forked from ipfs-force-community/metrics
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathexport.go
85 lines (71 loc) · 1.86 KB
/
export.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package metrics
import (
"contrib.go.opencensus.io/exporter/jaeger"
"contrib.go.opencensus.io/exporter/prometheus"
ma "github.com/multiformats/go-multiaddr"
manet "github.com/multiformats/go-multiaddr/net"
prom "github.com/prometheus/client_golang/prometheus"
"go.opencensus.io/stats/view"
"go.opencensus.io/trace"
"net/http"
"time"
)
// RegisterPrometheusEndpoint registers and serves prometheus metrics
func RegisterPrometheusEndpoint(cfg *MetricsConfig) error {
if !cfg.PrometheusEnabled {
return nil
}
// validate config values and marshal to types
interval, err := time.ParseDuration(cfg.ReportInterval)
if err != nil {
return err
}
promma, err := ma.NewMultiaddr(cfg.PrometheusEndpoint)
if err != nil {
return err
}
_, promAddr, err := manet.DialArgs(promma) // nolint
if err != nil {
return err
}
// setup prometheus
registry := prom.NewRegistry()
pe, err := prometheus.NewExporter(prometheus.Options{
Namespace: "filecoin",
Registry: registry,
})
if err != nil {
return err
}
view.RegisterExporter(pe)
view.SetReportingPeriod(interval)
mux := http.NewServeMux()
mux.Handle("/metrics", pe)
return http.ListenAndServe(promAddr, mux)
}
// RegisterJaeger registers the jaeger endpoint with opencensus and names the
// tracer `name`.
func RegisterJaeger(name string, cfg *TraceConfig) (*jaeger.Exporter, error) {
if !cfg.JaegerTracingEnabled {
return nil, nil
}
if len(cfg.ServerName) != 0 {
name = cfg.ServerName
}
je, err := jaeger.NewExporter(jaeger.Options{
AgentEndpoint: cfg.JaegerEndpoint,
Process: jaeger.Process{
ServiceName: name,
},
})
if err != nil {
return nil, err
}
trace.RegisterExporter(je)
trace.ApplyConfig(trace.Config{DefaultSampler: trace.ProbabilitySampler(cfg.ProbabilitySampler)})
return je, err
}
func UnregisterJaeger(exp *jaeger.Exporter) {
exp.Flush()
trace.UnregisterExporter(exp)
}