mirror of https://github.com/grpc/grpc-go.git
Merge c6168a0528
into 57400b4e69
This commit is contained in:
commit
85efd39f18
|
@ -1,7 +1,9 @@
|
||||||
# OpenTelemetry
|
# OpenTelemetry
|
||||||
|
|
||||||
This example shows how to configure OpenTelemetry on a client and server, and
|
This example shows how to configure OpenTelemetry on a client and server, and
|
||||||
shows what type of telemetry data it can produce for certain RPCs.
|
shows what type of telemetry data it can produce for certain RPCs,
|
||||||
|
and demonstrates how to enable experimental gRPC metrics, which are disabled
|
||||||
|
by default and must be explicitly configured on the client and/or server.
|
||||||
|
|
||||||
## Try it
|
## Try it
|
||||||
|
|
||||||
|
|
|
@ -62,9 +62,18 @@ func main() {
|
||||||
traceProvider := sdktrace.NewTracerProvider(sdktrace.WithBatcher(traceExporter), sdktrace.WithResource(otelresource.NewWithAttributes(semconv.SchemaURL, semconv.ServiceName("grpc-client"))))
|
traceProvider := sdktrace.NewTracerProvider(sdktrace.WithBatcher(traceExporter), sdktrace.WithResource(otelresource.NewWithAttributes(semconv.SchemaURL, semconv.ServiceName("grpc-client"))))
|
||||||
// Configure W3C Trace Context Propagator for traces
|
// Configure W3C Trace Context Propagator for traces
|
||||||
textMapPropagator := otelpropagation.TraceContext{}
|
textMapPropagator := otelpropagation.TraceContext{}
|
||||||
|
// These are example experimental gRPC metrics, which are disabled by default
|
||||||
|
// and must be explicitly enabled. For the full, up-to-date list of metrics,
|
||||||
|
// see: https://grpc.io/docs/guides/opentelemetry-metrics/#instruments
|
||||||
do := opentelemetry.DialOption(opentelemetry.Options{
|
do := opentelemetry.DialOption(opentelemetry.Options{
|
||||||
MetricsOptions: opentelemetry.MetricsOptions{MeterProvider: meterProvider},
|
MetricsOptions: opentelemetry.MetricsOptions{
|
||||||
TraceOptions: oteltracing.TraceOptions{TracerProvider: traceProvider, TextMapPropagator: textMapPropagator},
|
MeterProvider: meterProvider,
|
||||||
|
Metrics: opentelemetry.DefaultMetrics().Add(
|
||||||
|
"grpc.lb.wrr.rr_fallback",
|
||||||
|
"grpc.xds_client.connected",
|
||||||
|
),
|
||||||
|
},
|
||||||
|
TraceOptions: oteltracing.TraceOptions{TracerProvider: traceProvider, TextMapPropagator: textMapPropagator},
|
||||||
})
|
})
|
||||||
|
|
||||||
go http.ListenAndServe(*prometheusEndpoint, promhttp.Handler())
|
go http.ListenAndServe(*prometheusEndpoint, promhttp.Handler())
|
||||||
|
|
|
@ -70,9 +70,18 @@ func main() {
|
||||||
traceProvider := sdktrace.NewTracerProvider(sdktrace.WithBatcher(traceExporter), sdktrace.WithResource(otelresource.NewWithAttributes(semconv.SchemaURL, semconv.ServiceName("grpc-server"))))
|
traceProvider := sdktrace.NewTracerProvider(sdktrace.WithBatcher(traceExporter), sdktrace.WithResource(otelresource.NewWithAttributes(semconv.SchemaURL, semconv.ServiceName("grpc-server"))))
|
||||||
// Configure W3C Trace Context Propagator for traces
|
// Configure W3C Trace Context Propagator for traces
|
||||||
textMapPropagator := otelpropagation.TraceContext{}
|
textMapPropagator := otelpropagation.TraceContext{}
|
||||||
|
// These are example experimental gRPC metrics, which are disabled by default
|
||||||
|
// and must be explicitly enabled. For the full, up-to-date list of metrics,
|
||||||
|
// see: https://grpc.io/docs/guides/opentelemetry-metrics/#instruments
|
||||||
so := opentelemetry.ServerOption(opentelemetry.Options{
|
so := opentelemetry.ServerOption(opentelemetry.Options{
|
||||||
MetricsOptions: opentelemetry.MetricsOptions{MeterProvider: meterProvider},
|
MetricsOptions: opentelemetry.MetricsOptions{
|
||||||
TraceOptions: oteltracing.TraceOptions{TracerProvider: traceProvider, TextMapPropagator: textMapPropagator}})
|
MeterProvider: meterProvider,
|
||||||
|
Metrics: opentelemetry.DefaultMetrics().Add(
|
||||||
|
"grpc.lb.wrr.rr_fallback",
|
||||||
|
"grpc.xds_client.connected",
|
||||||
|
),
|
||||||
|
},
|
||||||
|
TraceOptions: oteltracing.TraceOptions{TracerProvider: traceProvider, TextMapPropagator: textMapPropagator}})
|
||||||
|
|
||||||
go http.ListenAndServe(*prometheusEndpoint, promhttp.Handler())
|
go http.ListenAndServe(*prometheusEndpoint, promhttp.Handler())
|
||||||
|
|
||||||
|
|
|
@ -25,7 +25,7 @@ import (
|
||||||
"go.opentelemetry.io/otel/sdk/metric"
|
"go.opentelemetry.io/otel/sdk/metric"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Example_dialOption() {
|
func ExampleDialOption_basic() {
|
||||||
// This is setting default bounds for a view. Setting these bounds through
|
// This is setting default bounds for a view. Setting these bounds through
|
||||||
// meter provider from SDK is recommended, as API calls in this module
|
// meter provider from SDK is recommended, as API calls in this module
|
||||||
// provide default bounds, but these calls are not guaranteed to be stable
|
// provide default bounds, but these calls are not guaranteed to be stable
|
||||||
|
@ -64,7 +64,7 @@ func Example_dialOption() {
|
||||||
defer cc.Close()
|
defer cc.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func Example_serverOption() {
|
func ExampleServerOption_methodFilter() {
|
||||||
reader := metric.NewManualReader()
|
reader := metric.NewManualReader()
|
||||||
provider := metric.NewMeterProvider(metric.WithReader(reader))
|
provider := metric.NewMeterProvider(metric.WithReader(reader))
|
||||||
opts := opentelemetry.Options{
|
opts := opentelemetry.Options{
|
||||||
|
@ -128,3 +128,27 @@ func ExampleMetrics_enableSome() {
|
||||||
}
|
}
|
||||||
defer cc.Close()
|
defer cc.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExampleOptions_addExperimentalMetrics() {
|
||||||
|
opts := opentelemetry.Options{
|
||||||
|
MetricsOptions: opentelemetry.MetricsOptions{
|
||||||
|
Metrics: opentelemetry.DefaultMetrics().Add(
|
||||||
|
"grpc.lb.wrr.rr_fallback",
|
||||||
|
"grpc.lb.wrr.endpoint_weight_not_yet_usable",
|
||||||
|
"grpc.lb.wrr.endpoint_weight_stale",
|
||||||
|
"grpc.lb.wrr.endpoint_weights",
|
||||||
|
"grpc.xds_client.connected",
|
||||||
|
"grpc.xds_client.server_failure",
|
||||||
|
"grpc.xds_client.resource_updates_valid",
|
||||||
|
"grpc.xds_client.resource_updates_invalid",
|
||||||
|
"grpc.xds_client.resources",
|
||||||
|
),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
do := opentelemetry.DialOption(opts)
|
||||||
|
cc, err := grpc.NewClient("<target string>", do, grpc.WithTransportCredentials(insecure.NewCredentials()))
|
||||||
|
if err != nil {
|
||||||
|
// Handle error.
|
||||||
|
}
|
||||||
|
defer cc.Close()
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue