You've already forked opentelemetry-go
mirror of
https://github.com/open-telemetry/opentelemetry-go.git
synced 2026-06-03 18:35:08 +02:00
de8158f87a
Share the AddOption and RecordOption pools used by generated semconv metric helpers through a small internal package, instead of emitting one pair of pools in every generated metric package. Regenerate semconv/v1.41.0 from the updated templates. Fixes #8356 --------- Co-authored-by: Robert Pająk <pellared@hotmail.com>
358 lines
11 KiB
Go
358 lines
11 KiB
Go
// Code generated from semantic convention specification. DO NOT EDIT.
|
|
|
|
// Copyright The OpenTelemetry Authors
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// Package rpcconv provides types and functionality for OpenTelemetry semantic
|
|
// conventions in the "rpc" namespace.
|
|
package rpcconv
|
|
|
|
import (
|
|
"context"
|
|
|
|
"go.opentelemetry.io/otel/attribute"
|
|
"go.opentelemetry.io/otel/metric"
|
|
"go.opentelemetry.io/otel/metric/noop"
|
|
"go.opentelemetry.io/otel/semconv/internal/metricpool"
|
|
)
|
|
|
|
// ErrorTypeAttr is an attribute conforming to the error.type semantic
|
|
// conventions. It represents the describes a class of error the operation ended
|
|
// with.
|
|
type ErrorTypeAttr string
|
|
|
|
var (
|
|
// ErrorTypeOther is a fallback error value to be used when the instrumentation
|
|
// doesn't define a custom value.
|
|
ErrorTypeOther ErrorTypeAttr = "_OTHER"
|
|
)
|
|
|
|
// SystemNameAttr is an attribute conforming to the rpc.system.name semantic
|
|
// conventions. It represents the Remote Procedure Call (RPC) system.
|
|
type SystemNameAttr string
|
|
|
|
var (
|
|
// SystemNameGRPC is the [gRPC].
|
|
//
|
|
// [gRPC]: https://grpc.io/
|
|
SystemNameGRPC SystemNameAttr = "grpc"
|
|
// SystemNameDubbo is the [Apache Dubbo].
|
|
//
|
|
// [Apache Dubbo]: https://dubbo.apache.org/
|
|
SystemNameDubbo SystemNameAttr = "dubbo"
|
|
// SystemNameConnectrpc is the [Connect RPC].
|
|
//
|
|
// [Connect RPC]: https://connectrpc.com/
|
|
SystemNameConnectrpc SystemNameAttr = "connectrpc"
|
|
// SystemNameJSONRPC is the [JSON-RPC].
|
|
//
|
|
// [JSON-RPC]: https://www.jsonrpc.org/
|
|
SystemNameJSONRPC SystemNameAttr = "jsonrpc"
|
|
)
|
|
|
|
// ClientCallDuration is an instrument used to record metric values conforming to
|
|
// the "rpc.client.call.duration" semantic conventions. It represents the
|
|
// measures the duration of an outgoing Remote Procedure Call (RPC).
|
|
type ClientCallDuration struct {
|
|
metric.Float64Histogram
|
|
}
|
|
|
|
var newClientCallDurationOpts = []metric.Float64HistogramOption{
|
|
metric.WithDescription("Measures the duration of an outgoing Remote Procedure Call (RPC)."),
|
|
metric.WithUnit("s"),
|
|
metric.WithExplicitBucketBoundaries([]float64{0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10}...),
|
|
}
|
|
|
|
// NewClientCallDuration returns a new ClientCallDuration instrument.
|
|
func NewClientCallDuration(
|
|
m metric.Meter,
|
|
opt ...metric.Float64HistogramOption,
|
|
) (ClientCallDuration, error) {
|
|
// Check if the meter is nil.
|
|
if m == nil {
|
|
return ClientCallDuration{noop.Float64Histogram{}}, nil
|
|
}
|
|
|
|
if len(opt) == 0 {
|
|
opt = newClientCallDurationOpts
|
|
} else {
|
|
opt = append(opt, newClientCallDurationOpts...)
|
|
}
|
|
|
|
i, err := m.Float64Histogram(
|
|
"rpc.client.call.duration",
|
|
opt...,
|
|
)
|
|
if err != nil {
|
|
return ClientCallDuration{noop.Float64Histogram{}}, err
|
|
}
|
|
return ClientCallDuration{i}, nil
|
|
}
|
|
|
|
// Inst returns the underlying metric instrument.
|
|
func (m ClientCallDuration) Inst() metric.Float64Histogram {
|
|
return m.Float64Histogram
|
|
}
|
|
|
|
// Name returns the semantic convention name of the instrument.
|
|
func (ClientCallDuration) Name() string {
|
|
return "rpc.client.call.duration"
|
|
}
|
|
|
|
// Unit returns the semantic convention unit of the instrument
|
|
func (ClientCallDuration) Unit() string {
|
|
return "s"
|
|
}
|
|
|
|
// Description returns the semantic convention description of the instrument
|
|
func (ClientCallDuration) Description() string {
|
|
return "Measures the duration of an outgoing Remote Procedure Call (RPC)."
|
|
}
|
|
|
|
// Record records val to the current distribution for attrs.
|
|
//
|
|
// The systemName is the the Remote Procedure Call (RPC) system.
|
|
//
|
|
// All additional attrs passed are included in the recorded value.
|
|
//
|
|
// When this metric is reported alongside an RPC client span, the metric value
|
|
// SHOULD be the same as the RPC client span duration.
|
|
func (m ClientCallDuration) Record(
|
|
ctx context.Context,
|
|
val float64,
|
|
systemName SystemNameAttr,
|
|
attrs ...attribute.KeyValue,
|
|
) {
|
|
if !m.Float64Histogram.Enabled(ctx) {
|
|
return
|
|
}
|
|
if len(attrs) == 0 {
|
|
m.Float64Histogram.Record(ctx, val, metric.WithAttributes(
|
|
attribute.String("rpc.system.name", string(systemName)),
|
|
))
|
|
return
|
|
}
|
|
|
|
o := metricpool.RecordOptions()
|
|
defer metricpool.PutRecordOptions(o)
|
|
|
|
*o = append(
|
|
*o,
|
|
metric.WithAttributes(
|
|
append(
|
|
attrs[:len(attrs):len(attrs)],
|
|
attribute.String("rpc.system.name", string(systemName)),
|
|
)...,
|
|
),
|
|
)
|
|
|
|
m.Float64Histogram.Record(ctx, val, *o...)
|
|
}
|
|
|
|
// RecordSet records val to the current distribution for set.
|
|
//
|
|
// When this metric is reported alongside an RPC client span, the metric value
|
|
// SHOULD be the same as the RPC client span duration.
|
|
func (m ClientCallDuration) RecordSet(ctx context.Context, val float64, set attribute.Set) {
|
|
if !m.Float64Histogram.Enabled(ctx) {
|
|
return
|
|
}
|
|
if set.Len() == 0 {
|
|
m.Float64Histogram.Record(ctx, val)
|
|
return
|
|
}
|
|
|
|
o := metricpool.RecordOptions()
|
|
defer metricpool.PutRecordOptions(o)
|
|
|
|
*o = append(*o, metric.WithAttributeSet(set))
|
|
m.Float64Histogram.Record(ctx, val, *o...)
|
|
}
|
|
|
|
// AttrErrorType returns an optional attribute for the "error.type" semantic
|
|
// convention. It represents the describes a class of error the operation ended
|
|
// with.
|
|
func (ClientCallDuration) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
|
|
return attribute.String("error.type", string(val))
|
|
}
|
|
|
|
// AttrMethod returns an optional attribute for the "rpc.method" semantic
|
|
// convention. It represents the fully-qualified logical name of the method from
|
|
// the RPC interface perspective.
|
|
func (ClientCallDuration) AttrMethod(val string) attribute.KeyValue {
|
|
return attribute.String("rpc.method", val)
|
|
}
|
|
|
|
// AttrResponseStatusCode returns an optional attribute for the
|
|
// "rpc.response.status_code" semantic convention. It represents the status code
|
|
// of the RPC returned by the RPC server or generated by the client.
|
|
func (ClientCallDuration) AttrResponseStatusCode(val string) attribute.KeyValue {
|
|
return attribute.String("rpc.response.status_code", val)
|
|
}
|
|
|
|
// AttrServerAddress returns an optional attribute for the "server.address"
|
|
// semantic convention. It represents a string identifying a group of RPC server
|
|
// instances request is sent to.
|
|
func (ClientCallDuration) AttrServerAddress(val string) attribute.KeyValue {
|
|
return attribute.String("server.address", val)
|
|
}
|
|
|
|
// AttrServerPort returns an optional attribute for the "server.port" semantic
|
|
// convention. It represents the server port number.
|
|
func (ClientCallDuration) AttrServerPort(val int) attribute.KeyValue {
|
|
return attribute.Int("server.port", val)
|
|
}
|
|
|
|
// ServerCallDuration is an instrument used to record metric values conforming to
|
|
// the "rpc.server.call.duration" semantic conventions. It represents the
|
|
// measures the duration of an incoming Remote Procedure Call (RPC).
|
|
type ServerCallDuration struct {
|
|
metric.Float64Histogram
|
|
}
|
|
|
|
var newServerCallDurationOpts = []metric.Float64HistogramOption{
|
|
metric.WithDescription("Measures the duration of an incoming Remote Procedure Call (RPC)."),
|
|
metric.WithUnit("s"),
|
|
metric.WithExplicitBucketBoundaries([]float64{0.005, 0.01, 0.025, 0.05, 0.075, 0.1, 0.25, 0.5, 0.75, 1, 2.5, 5, 7.5, 10}...),
|
|
}
|
|
|
|
// NewServerCallDuration returns a new ServerCallDuration instrument.
|
|
func NewServerCallDuration(
|
|
m metric.Meter,
|
|
opt ...metric.Float64HistogramOption,
|
|
) (ServerCallDuration, error) {
|
|
// Check if the meter is nil.
|
|
if m == nil {
|
|
return ServerCallDuration{noop.Float64Histogram{}}, nil
|
|
}
|
|
|
|
if len(opt) == 0 {
|
|
opt = newServerCallDurationOpts
|
|
} else {
|
|
opt = append(opt, newServerCallDurationOpts...)
|
|
}
|
|
|
|
i, err := m.Float64Histogram(
|
|
"rpc.server.call.duration",
|
|
opt...,
|
|
)
|
|
if err != nil {
|
|
return ServerCallDuration{noop.Float64Histogram{}}, err
|
|
}
|
|
return ServerCallDuration{i}, nil
|
|
}
|
|
|
|
// Inst returns the underlying metric instrument.
|
|
func (m ServerCallDuration) Inst() metric.Float64Histogram {
|
|
return m.Float64Histogram
|
|
}
|
|
|
|
// Name returns the semantic convention name of the instrument.
|
|
func (ServerCallDuration) Name() string {
|
|
return "rpc.server.call.duration"
|
|
}
|
|
|
|
// Unit returns the semantic convention unit of the instrument
|
|
func (ServerCallDuration) Unit() string {
|
|
return "s"
|
|
}
|
|
|
|
// Description returns the semantic convention description of the instrument
|
|
func (ServerCallDuration) Description() string {
|
|
return "Measures the duration of an incoming Remote Procedure Call (RPC)."
|
|
}
|
|
|
|
// Record records val to the current distribution for attrs.
|
|
//
|
|
// The systemName is the the Remote Procedure Call (RPC) system.
|
|
//
|
|
// All additional attrs passed are included in the recorded value.
|
|
//
|
|
// When this metric is reported alongside an RPC server span, the metric value
|
|
// SHOULD be the same as the RPC server span duration.
|
|
func (m ServerCallDuration) Record(
|
|
ctx context.Context,
|
|
val float64,
|
|
systemName SystemNameAttr,
|
|
attrs ...attribute.KeyValue,
|
|
) {
|
|
if !m.Float64Histogram.Enabled(ctx) {
|
|
return
|
|
}
|
|
if len(attrs) == 0 {
|
|
m.Float64Histogram.Record(ctx, val, metric.WithAttributes(
|
|
attribute.String("rpc.system.name", string(systemName)),
|
|
))
|
|
return
|
|
}
|
|
|
|
o := metricpool.RecordOptions()
|
|
defer metricpool.PutRecordOptions(o)
|
|
|
|
*o = append(
|
|
*o,
|
|
metric.WithAttributes(
|
|
append(
|
|
attrs[:len(attrs):len(attrs)],
|
|
attribute.String("rpc.system.name", string(systemName)),
|
|
)...,
|
|
),
|
|
)
|
|
|
|
m.Float64Histogram.Record(ctx, val, *o...)
|
|
}
|
|
|
|
// RecordSet records val to the current distribution for set.
|
|
//
|
|
// When this metric is reported alongside an RPC server span, the metric value
|
|
// SHOULD be the same as the RPC server span duration.
|
|
func (m ServerCallDuration) RecordSet(ctx context.Context, val float64, set attribute.Set) {
|
|
if !m.Float64Histogram.Enabled(ctx) {
|
|
return
|
|
}
|
|
if set.Len() == 0 {
|
|
m.Float64Histogram.Record(ctx, val)
|
|
return
|
|
}
|
|
|
|
o := metricpool.RecordOptions()
|
|
defer metricpool.PutRecordOptions(o)
|
|
|
|
*o = append(*o, metric.WithAttributeSet(set))
|
|
m.Float64Histogram.Record(ctx, val, *o...)
|
|
}
|
|
|
|
// AttrErrorType returns an optional attribute for the "error.type" semantic
|
|
// convention. It represents the describes a class of error the operation ended
|
|
// with.
|
|
func (ServerCallDuration) AttrErrorType(val ErrorTypeAttr) attribute.KeyValue {
|
|
return attribute.String("error.type", string(val))
|
|
}
|
|
|
|
// AttrMethod returns an optional attribute for the "rpc.method" semantic
|
|
// convention. It represents the fully-qualified logical name of the method from
|
|
// the RPC interface perspective.
|
|
func (ServerCallDuration) AttrMethod(val string) attribute.KeyValue {
|
|
return attribute.String("rpc.method", val)
|
|
}
|
|
|
|
// AttrResponseStatusCode returns an optional attribute for the
|
|
// "rpc.response.status_code" semantic convention. It represents the status code
|
|
// of the RPC returned by the RPC server or generated by the client.
|
|
func (ServerCallDuration) AttrResponseStatusCode(val string) attribute.KeyValue {
|
|
return attribute.String("rpc.response.status_code", val)
|
|
}
|
|
|
|
// AttrServerAddress returns an optional attribute for the "server.address"
|
|
// semantic convention. It represents a string identifying a group of RPC server
|
|
// instances request is sent to.
|
|
func (ServerCallDuration) AttrServerAddress(val string) attribute.KeyValue {
|
|
return attribute.String("server.address", val)
|
|
}
|
|
|
|
// AttrServerPort returns an optional attribute for the "server.port" semantic
|
|
// convention. It represents the server port number.
|
|
func (ServerCallDuration) AttrServerPort(val int) attribute.KeyValue {
|
|
return attribute.Int("server.port", val)
|
|
}
|