in continuous_load_testing/client.go [84:132]
func setupOpenTelemetry() ([]grpc.DialOption, error) {
ctx := context.Background()
var exporter metric.Exporter
res, err := newGrpcLoadTestMonitoredResource(ctx)
if err != nil {
log.Fatalf("Failed to create monitored resource: %v", err)
}
exporter, err = createExporter()
if err != nil {
log.Fatalf("Failed to create exporter: %v", err)
}
log.Println("Created exporter.")
meterOpts := []metric.Option{
metric.WithResource(res),
metric.WithReader(metric.NewPeriodicReader(exporter, metric.WithInterval(90*time.Second))),
}
provider := metric.NewMeterProvider(meterOpts...)
log.Println("provider done.")
mo := opentelemetry.MetricsOptions{
MeterProvider: provider,
Metrics: stats.NewMetrics(
"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.lb.rls.cache_entries",
"grpc.lb.rls.cache_size",
"grpc.lb.rls.default_target_picks",
"grpc.lb.rls.target_picks",
"grpc.lb.rls.failed_picks",
"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",
"grpc.client.attempt.sent_total_compressed_message_size",
"grpc.client.attempt.rcvd_total_compressed_message_size",
"grpc.client.attempt.started",
"grpc.client.attempt.duration",
"grpc.client.call.duration",
),
OptionalLabels: []string{"grpc.lb.locality"},
}
opts := []grpc.DialOption{
opentelemetry.DialOption(opentelemetry.Options{MetricsOptions: mo}),
grpc.WithDefaultCallOptions(grpc.StaticMethodCallOption{}),
}
return opts, nil
}