internal/telemetry/export/ocagent: update metrics tutorial to use the event system
This change updates the metrics tutorial to be compatible with the new event system.
Change-Id: I8b75f6b02d241bc9dede01cfac167a982f1df67c
Reviewed-on: https://go-review.googlesource.com/c/tools/+/225058
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Run-TryBot: Emmanuel Odeke <emm.odeke@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/internal/telemetry/export/ocagent/README.md b/internal/telemetry/export/ocagent/README.md
index e81ee9f..67fa124 100644
--- a/internal/telemetry/export/ocagent/README.md
+++ b/internal/telemetry/export/ocagent/README.md
@@ -36,25 +36,39 @@
"net/http"
"time"
- "golang.org/x/tools/internal/telemetry/export"
- "golang.org/x/tools/internal/telemetry/export/ocagent"
- "golang.org/x/tools/internal/telemetry/export/metric"
"golang.org/x/tools/internal/telemetry/event"
+ "golang.org/x/tools/internal/telemetry/export"
+ "golang.org/x/tools/internal/telemetry/export/metric"
+ "golang.org/x/tools/internal/telemetry/export/ocagent"
)
-func main() {
+type testExporter struct {
+ metrics metric.Exporter
+ ocagent *ocagent.Exporter
+}
- exporter := ocagent.Connect(&ocagent.Config{
+func (e *testExporter) ProcessEvent(ctx context.Context, ev event.Event) (context.Context, event.Event) {
+ ctx, ev = export.Tag(ctx, ev)
+ ctx, ev = export.ContextSpan(ctx, ev)
+ ctx, ev = e.metrics.ProcessEvent(ctx, ev)
+ ctx, ev = e.ocagent.ProcessEvent(ctx, ev)
+ return ctx, ev
+}
+
+func main() {
+ exporter := &testExporter{}
+
+ exporter.ocagent = ocagent.Connect(&ocagent.Config{
Start: time.Now(),
Address: "http://127.0.0.1:55678",
Service: "go-tools-test",
Rate: 5 * time.Second,
Client: &http.Client{},
})
- export.SetExporter(exporter)
+ event.SetExporter(exporter)
ctx := context.TODO()
- mLatency := event.NewFloat64Key("latency", "the latency in milliseconds", "ms")
+ mLatency := event.NewFloat64Key("latency", "the latency in milliseconds")
distribution := metric.HistogramFloat64Data{
Info: &metric.HistogramFloat64{
Name: "latencyDistribution",
@@ -63,12 +77,12 @@
},
}
- distribution.Info.Record(mLatency)
+ distribution.Info.Record(&exporter.metrics, mLatency)
for {
sleep := randomSleep()
time.Sleep(time.Duration(sleep) * time.Millisecond)
- mLatency.Record(ctx, float64(sleep))
+ event.Record(ctx, mLatency.Of(float64(sleep)))
fmt.Println("Latency: ", float64(sleep))
}