You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2025-07-03 00:27:03 +02:00
Golang metrics prototype (#100)
* initial metrics work * rename cumulative to counter * rename bidirectional to nonmonotonic * rename unidirectional to monotonic * rename nonnegative to signed this changes the default semantics a bit - before the change measure could record negative values by default, now it can't. The specification draft currently specifies both NonNegative and Signed, but I think it's a mistake. * rename instrument to descriptor * license * rework measurement values * make measurement value a tagged union * simplify to one kind of metrics * add observers * change some interfaces to match the spec * keep integral measurement separate from floating ones * remove duplicated measurement type * add checking for options * reorder some fields and functions * rename a function to avoid confusion between the Handle type and the Measure type * drop disabled field from descriptor * add back typed API for metrics * make metric options type safe * merge alternatives into a single bool * make value kind name less stuttery * fix observation callback prototype * drop context parameter from NewHandle * drop useless parameter names * make descriptor an opaque struct * use a store helper * handle comment fixes * reword Alternate comment * drop the "any value" metrics * make measurement value simpler * document value stuff * add tests for values * docs * do not panic if there is no span ID in the event
This commit is contained in:
committed by
rghetia
parent
c2d5c66990
commit
be8fb0b4e2
@ -19,7 +19,6 @@ import (
|
||||
|
||||
"go.opentelemetry.io/api/key"
|
||||
"go.opentelemetry.io/api/metric"
|
||||
"go.opentelemetry.io/api/stats"
|
||||
"go.opentelemetry.io/api/tag"
|
||||
"go.opentelemetry.io/api/trace"
|
||||
)
|
||||
@ -39,7 +38,7 @@ var (
|
||||
metric.WithDescription("A gauge set to 1.0"),
|
||||
)
|
||||
|
||||
measureTwo = stats.NewMeasure("ex.com/two")
|
||||
measureTwo = metric.NewFloat64Measure("ex.com/two")
|
||||
)
|
||||
|
||||
func main() {
|
||||
@ -50,11 +49,11 @@ func main() {
|
||||
tag.Insert(barKey.String("bar1")),
|
||||
)
|
||||
|
||||
gauge := meter.GetFloat64Gauge(
|
||||
ctx,
|
||||
oneMetric,
|
||||
lemonsKey.Int(10),
|
||||
)
|
||||
commonLabels := meter.DefineLabels(ctx, lemonsKey.Int(10))
|
||||
|
||||
gauge := oneMetric.GetHandle(commonLabels)
|
||||
|
||||
measure := measureTwo.GetHandle(commonLabels)
|
||||
|
||||
err := tracer.WithSpan(ctx, "operation", func(ctx context.Context) error {
|
||||
|
||||
@ -64,6 +63,16 @@ func main() {
|
||||
|
||||
gauge.Set(ctx, 1)
|
||||
|
||||
meter.RecordBatch(
|
||||
// Note: call-site variables added as context tags:
|
||||
tag.NewContext(ctx,
|
||||
tag.Insert(anotherKey.String("xyz"))),
|
||||
commonLabels,
|
||||
|
||||
oneMetric.Measurement(1.0),
|
||||
measureTwo.Measurement(2.0),
|
||||
)
|
||||
|
||||
return tracer.WithSpan(
|
||||
ctx,
|
||||
"Sub operation...",
|
||||
@ -72,7 +81,7 @@ func main() {
|
||||
|
||||
trace.CurrentSpan(ctx).AddEvent(ctx, "Sub span event")
|
||||
|
||||
stats.Record(ctx, measureTwo.M(1.3))
|
||||
measure.Record(ctx, 1.3)
|
||||
|
||||
return nil
|
||||
},
|
||||
|
Reference in New Issue
Block a user