From 9d2d0c7512142fe6bed37c800da7f1301af0d146 Mon Sep 17 00:00:00 2001 From: surbhigarg92 Date: Wed, 23 Oct 2024 12:54:20 +0530 Subject: [PATCH] test --- spanner/opencensus/pom.xml | 5 +- .../spanner/opencensus/CaptureGrpcMetric.java | 27 ++++++---- spanner/opentelemetry/pom.xml | 20 ++++++- .../example/spanner/OpenTelemetryUsage.java | 53 ++++++++++++++----- 4 files changed, 77 insertions(+), 28 deletions(-) diff --git a/spanner/opencensus/pom.xml b/spanner/opencensus/pom.xml index 6029eded24b..24a6eb73e58 100644 --- a/spanner/opencensus/pom.xml +++ b/spanner/opencensus/pom.xml @@ -9,7 +9,7 @@ 1.8 1.8 0.31.1 - 6.13.0 + 6.79.0 diff --git a/spanner/opencensus/src/main/java/com/example/spanner/opencensus/CaptureGrpcMetric.java b/spanner/opencensus/src/main/java/com/example/spanner/opencensus/CaptureGrpcMetric.java index 29b6344f89d..01206900569 100644 --- a/spanner/opencensus/src/main/java/com/example/spanner/opencensus/CaptureGrpcMetric.java +++ b/spanner/opencensus/src/main/java/com/example/spanner/opencensus/CaptureGrpcMetric.java @@ -22,6 +22,8 @@ import com.google.cloud.spanner.Spanner; import com.google.cloud.spanner.SpannerOptions; import com.google.cloud.spanner.Statement; +import com.google.cloud.spanner.spi.v1.SpannerRpcViews; + import io.opencensus.contrib.grpc.metrics.RpcViews; import io.opencensus.exporter.stats.stackdriver.StackdriverStatsExporter; import java.io.IOException; @@ -33,15 +35,16 @@ public class CaptureGrpcMetric { public static void main(String[] args) { // TODO(developer): Replace these variables before running the sample. - String projectId = "my-project"; - String instanceId = "my-instance"; - String databaseId = "my-database"; + String projectId = "span-cloud-testing"; + String instanceId = "harsha-test-gcloud"; + String databaseId = "multiplexed_session_java"; SpannerOptions options = SpannerOptions.newBuilder().build(); Spanner spanner = options.getService(); DatabaseClient dbClient = spanner .getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); captureGrpcMetric(dbClient); + } // [START spanner_opencensus_capture_grpc_metric] @@ -51,6 +54,7 @@ static void captureGrpcMetric(DatabaseClient dbClient) { // Register basic gRPC views. RpcViews.registerClientGrpcBasicViews(); + SpannerRpcViews.registerGfeLatencyView(); // Enable OpenCensus exporters to export metrics to Stackdriver Monitoring. // Exporters use Application Default Credentials to authenticate. @@ -62,13 +66,16 @@ static void captureGrpcMetric(DatabaseClient dbClient) { System.out.println("Error during StackdriverStatsExporter"); } - try (ResultSet resultSet = - dbClient - .singleUse() // Execute a single read or query against Cloud Spanner. - .executeQuery(Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) { - while (resultSet.next()) { - System.out.printf( - "%d %d %s", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2)); + for(int i=0; i< 10000 ; i++) { + + try (ResultSet resultSet = + dbClient + .singleUse() // Execute a single read or query against Cloud Spanner. + .executeQuery(Statement.of("SELECT * FROM FOO"))) { + while (resultSet.next()) { + System.out.printf( + "%d", resultSet.getLong(0)); + } } } } diff --git a/spanner/opentelemetry/pom.xml b/spanner/opentelemetry/pom.xml index 46bd1872dbc..50befeb5585 100644 --- a/spanner/opentelemetry/pom.xml +++ b/spanner/opentelemetry/pom.xml @@ -30,14 +30,14 @@ com.google.cloud libraries-bom - 26.32.0 + 26.49.0 pom import io.opentelemetry opentelemetry-bom - 1.35.0 + 1.43.0 pom import @@ -49,6 +49,7 @@ com.google.cloud google-cloud-spanner + 6.79.0 io.opentelemetry @@ -66,6 +67,21 @@ io.opentelemetry opentelemetry-exporter-otlp + + io.grpc + grpc-opentelemetry + 1.68.0 + + + io.grpc + grpc-api + 1.68.0 + + + com.google.cloud.opentelemetry + exporter-metrics + 0.33.0 + diff --git a/spanner/opentelemetry/src/main/java/com/example/spanner/OpenTelemetryUsage.java b/spanner/opentelemetry/src/main/java/com/example/spanner/OpenTelemetryUsage.java index 43a9eb500d6..2fb9a7697c6 100644 --- a/spanner/opentelemetry/src/main/java/com/example/spanner/OpenTelemetryUsage.java +++ b/spanner/opentelemetry/src/main/java/com/example/spanner/OpenTelemetryUsage.java @@ -16,6 +16,7 @@ package com.example.spanner; +import com.google.cloud.opentelemetry.metric.GoogleCloudMetricExporter; import com.google.cloud.spanner.DatabaseClient; import com.google.cloud.spanner.DatabaseId; import com.google.cloud.spanner.ReadContext.QueryAnalyzeMode; @@ -24,6 +25,7 @@ import com.google.cloud.spanner.SpannerOptions; import com.google.cloud.spanner.Statement; import com.google.protobuf.Value; +import io.grpc.opentelemetry.GrpcOpenTelemetry; import io.opentelemetry.api.OpenTelemetry; import io.opentelemetry.api.metrics.DoubleHistogram; import io.opentelemetry.api.metrics.Meter; @@ -34,6 +36,9 @@ import io.opentelemetry.sdk.metrics.export.PeriodicMetricReader; import io.opentelemetry.sdk.trace.SdkTracerProvider; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; +import java.util.Arrays; +import java.util.HashSet; +import java.lang.InterruptedException; /** * This sample demonstrates how to configure OpenTelemetry and inject via Spanner Options. @@ -42,14 +47,13 @@ public class OpenTelemetryUsage { public static void main(String[] args) { // TODO(developer): Replace these variables before running the sample. - String projectId = "my-project"; - String instanceId = "my-instance"; - String databaseId = "my-database"; + String projectId = "span-cloud-testing"; + String instanceId = "harsha-test-gcloud"; + String databaseId = "multiplexed_session_java"; // [START spanner_opentelemetry_usage] // Enable OpenTelemetry metrics and traces before Injecting OpenTelemetry SpannerOptions.enableOpenTelemetryMetrics(); - SpannerOptions.enableOpenTelemetryTraces(); // Create a new meter provider SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder() @@ -58,6 +62,13 @@ public static void main(String[] args) { PeriodicMetricReader.builder(OtlpGrpcMetricExporter.builder().build()).build()) .build(); + // SdkMeterProvider sdkMeterProvider = SdkMeterProvider.builder() + // // Use Otlp exporter or any other exporter of your choice. + // .registerMetricReader( + // PeriodicMetricReader.builder(GoogleCloudMetricExporter.createWithDefaultConfiguration()) + // .build()) + // .build(); + // Create a new tracer provider SdkTracerProvider sdkTracerProvider = SdkTracerProvider.builder() // Use Otlp exporter or any other exporter of your choice. @@ -68,12 +79,19 @@ public static void main(String[] args) { // Configure OpenTelemetry object using Meter Provider and Tracer Provider OpenTelemetry openTelemetry = OpenTelemetrySdk.builder() .setMeterProvider(sdkMeterProvider) - .setTracerProvider(sdkTracerProvider) + // .setTracerProvider(sdkTracerProvider) .build(); + System.out.println("initializing grpc"); + + GrpcOpenTelemetry grpcOpenTelemetry = GrpcOpenTelemetry.newBuilder().enableMetrics(new HashSet<>( + Arrays.asList("grpc.client.attempt.duration"))).sdk(openTelemetry).build(); + grpcOpenTelemetry.registerGlobal(); + System.out.println("finish initializing grpc"); // Inject OpenTelemetry object via Spanner options or register as GlobalOpenTelemetry. SpannerOptions options = SpannerOptions.newBuilder() .setOpenTelemetry(openTelemetry) + .setBuiltInMetricsEnabled(false) .build(); Spanner spanner = options.getService(); @@ -82,8 +100,13 @@ public static void main(String[] args) { .getDatabaseClient(DatabaseId.of(projectId, instanceId, databaseId)); captureGfeMetric(dbClient); - captureQueryStatsMetric(openTelemetry, dbClient); - sdkMeterProvider.forceFlush(); + // captureQueryStatsMetric(openTelemetry, dbClient); + // sdkMeterProvider.forceFlush(); + try { + Thread.sleep(80000); // Sleep for 80,000 milliseconds (80 seconds) + } catch (InterruptedException e) { + e.printStackTrace(); + } sdkTracerProvider.forceFlush(); } @@ -126,13 +149,15 @@ static void captureGfeMetric(DatabaseClient dbClient) { // GFE_latency and other Spanner metrics are automatically collected // when OpenTelemetry metrics are enabled. - try (ResultSet resultSet = - dbClient - .singleUse() // Execute a single read or query against Cloud Spanner. - .executeQuery(Statement.of("SELECT SingerId, AlbumId, AlbumTitle FROM Albums"))) { - while (resultSet.next()) { - System.out.printf( - "%d %d %s", resultSet.getLong(0), resultSet.getLong(1), resultSet.getString(2)); + for(int i=0; i< 10000; i++) { + try (ResultSet resultSet = + dbClient + .singleUse() // Execute a single read or query against Cloud Spanner. + .executeQuery(Statement.of("SELECT * FROM FOO"))) { + while (resultSet.next()) { + System.out.printf( + "%d", resultSet.getLong(0)); + } } } }