Skip to content

Instantly share code, notes, and snippets.

@rafaeljesus
Last active October 18, 2018 10:08
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafaeljesus/6720630f277472ed9c6468d9ec38f09e to your computer and use it in GitHub Desktop.
Save rafaeljesus/6720630f277472ed9c6468d9ec38f09e to your computer and use it in GitHub Desktop.
Enabling Opencensus
[[constraint]]
name = "go.opencensus.io"
version = "0.17.0"
client := &http.Client{
Transport: &ochttp.Transport{},
}
// Use client to perform requests.
_ = client
traceExporter, err := jaeger.NewExporter(jaeger.Options{
AgentEndpoint: globalConfig.ToJaegerAddress(), // localhost:1234
ServiceName: "my-service",
})
if err != nil {
log.WithError(err).Warn("failed to create trace jaeger exporter")
} else {
defer traceExporter.Flush()
trace.RegisterExporter(traceExporter)
trace.ApplyConfig(trace.Config{DefaultSampler: trace.ProbabilitySampler(globalConfig.Jaeger.SamplerParam)}) // `0.1`
}
import (
"go.opencensus.io/exporter/jaeger"
"go.opencensus.io/exporter/prometheus"
"go.opencensus.io/plugin/ochttp"
"go.opencensus.io/stats/view"
"go.opencensus.io/tag"
"go.opencensus.io/trace"
)
promExporter, err := prometheus.NewExporter(prometheus.Options{Namespace: "my_service"})
if err != nil {
log.WithError(err).Warn("failed to create stats prom exporter")
} else {
view.RegisterExporter(promExporter)
view.SetReportingPeriod(time.Second)
}
// Registering Default OC Views for the HTTP Server
// ATM by default OC does not expose server_latency_by_path
ochttp.DefaultServerViews = append(ochttp.DefaultServerViews, &view.View{
Name: "opencensus_io_http_server_latency_by_path",
TagKeys: []tag.Key{ochttp.KeyServerRoute},
Measure: ochttp.ServerLatency,
Aggregation: ochttp.DefaultLatencyDistribution,
})
if err := view.Register(ochttp.DefaultServerViews...); err != nil {
log.WithError(err).Warn("failed to register view stats")
}
// Registering Default OC Views for the HTTP Client
ochttp.DefaultClientViews = append(ochttp.DefaultClientViews, &view.View{
Name: "opencensus_io_http_client_latency_by_path",
TagKeys: []tag.Key{ochttp.Path},
Measure: ochttp.ClientLatency,
Aggregation: ochttp.DefaultLatencyDistribution,
})
if err := view.Register(ochttp.DefaultClientViews...); err != nil {
log.WithError(err).Warn("failed to register view stats")
}
// Expose metrics endpoint
router.Handle("/metrics", promExporter)
// Wrap routers to keep cardinality low
path := "/users/{id}"
router.Route(path, func(r chi.Router) {
r.Method(http.MethodGet, "/", ochttp.WithRouteTag(handler.UsersShow, path))
})
services:
api:
enabled: true
enablePrometheus: true
type: ClusterIP
provisionDashboards:
enabled: true
dashboardLabel: grafana_dashboard
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment