This commit is contained in:
vinothkumarr227 2025-06-16 17:03:57 +00:00 committed by GitHub
commit 85efd39f18
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 51 additions and 7 deletions

View File

@ -1,7 +1,9 @@
# OpenTelemetry
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

View File

@ -62,9 +62,18 @@ func main() {
traceProvider := sdktrace.NewTracerProvider(sdktrace.WithBatcher(traceExporter), sdktrace.WithResource(otelresource.NewWithAttributes(semconv.SchemaURL, semconv.ServiceName("grpc-client"))))
// Configure W3C Trace Context Propagator for traces
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{
MetricsOptions: opentelemetry.MetricsOptions{MeterProvider: meterProvider},
TraceOptions: oteltracing.TraceOptions{TracerProvider: traceProvider, TextMapPropagator: textMapPropagator},
MetricsOptions: opentelemetry.MetricsOptions{
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())

View File

@ -70,9 +70,18 @@ func main() {
traceProvider := sdktrace.NewTracerProvider(sdktrace.WithBatcher(traceExporter), sdktrace.WithResource(otelresource.NewWithAttributes(semconv.SchemaURL, semconv.ServiceName("grpc-server"))))
// Configure W3C Trace Context Propagator for traces
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{
MetricsOptions: opentelemetry.MetricsOptions{MeterProvider: meterProvider},
TraceOptions: oteltracing.TraceOptions{TracerProvider: traceProvider, TextMapPropagator: textMapPropagator}})
MetricsOptions: opentelemetry.MetricsOptions{
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())

View File

@ -25,7 +25,7 @@ import (
"go.opentelemetry.io/otel/sdk/metric"
)
func Example_dialOption() {
func ExampleDialOption_basic() {
// This is setting default bounds for a view. Setting these bounds through
// meter provider from SDK is recommended, as API calls in this module
// provide default bounds, but these calls are not guaranteed to be stable
@ -64,7 +64,7 @@ func Example_dialOption() {
defer cc.Close()
}
func Example_serverOption() {
func ExampleServerOption_methodFilter() {
reader := metric.NewManualReader()
provider := metric.NewMeterProvider(metric.WithReader(reader))
opts := opentelemetry.Options{
@ -128,3 +128,27 @@ func ExampleMetrics_enableSome() {
}
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()
}