googleapis / java-spanner

Apache License 2.0
55 stars 110 forks source link

Not able to add custom dimensions to spanner metrics #3285

Open siddhant16 opened 3 weeks ago

siddhant16 commented 3 weeks ago

Hello Team,

I'm creating java-spanner client and using the PrometheusHttpServer as the metrics collector.

        PROMETHEUS_SERVER = PrometheusHttpServer.builder().setPort(portNumber).build();

I want to add custom dimensions to SDK provided metrics and for that I'm using the Resource like below,

    SpannerOptions.enableOpenTelemetryMetrics();

    Resource resource = Resource.getDefault().merge(Resource.create(Attributes.of(
        SERVICE_NAME, MY_SERVICE_NAME,
        SERVICE_VERSION, "1.0.0"
    )));

    SdkMeterProvider sdkMeterProvider =
        SdkMeterProvider.builder()
       .setResource(resource)
       .registerMetricReader(PROMETHEUS_SERVER)
       .build();

    OpenTelemetry openTelemetry =
        OpenTelemetrySdk.builder().setMeterProvider(sdkMeterProvider).build();

    optionsBuilder.setOpenTelemetry(openTelemetry);

However, when I start my application, I'm not able to see any custom dimensions attached to the SDK metrics.

# HELP spanner_get_session_timeouts_ratio_total The number of get sessions timeouts due to pool exhaustion
# TYPE spanner_get_session_timeouts_ratio_total counter
spanner_get_session_timeouts_ratio_total{client_id="client-1",database="test-db",instance_id="test-projects",otel_scope_name="cloud.google.com/java"} 0.0
# HELP spanner_gfe_header_missing_count_ratio_total Number of RPC responses received without the server-timing header, most likely means that the RPC never reached Google's network
# TYPE spanner_gfe_header_missing_count_ratio_total counter
spanner_gfe_header_missing_count_ratio_total{database="test-db",instance_id="instance-id",method="google.spanner.v1.Spanner/BatchCreateSessions",otel_scope_name="cloud.google.com/java",project_id="test-id"} 0.0
# HELP spanner_max_allowed_sessions_ratio The maximum number of sessions allowed. Configurable by the user.
# TYPE spanner_max_allowed_sessions_ratio gauge
spanner_max_allowed_sessions_ratio{{client_id="client-1",database="test-db",instance_id="test-projects",otel_scope_name="cloud.google.com/java"} 401.0
# HELP spanner_max_in_use_sessions_ratio The maximum number of sessions in use during the last 10 minute interval.
# TYPE spanner_max_in_use_sessions_ratio gauge
spanner_max_in_use_sessions_ratio{{client_id="client-1",database="test-db",instance_id="test-projects",otel_scope_name="cloud.google.com/java"} 0.0

Only I see 1 data which is not the SDK metric

# TYPE target_info gauge
target_info{service_name="my-service-name",service_version="1.0.0",telemetry_sdk_language="java",telemetry_sdk_name="opentelemetry",telemetry_sdk_version="1.41.0"} 1