@@ -164,6 +164,7 @@ public class SpannerOptions extends ServiceOptions<Spanner, SpannerOptions> {
164164 private final boolean enableBuiltInMetrics ;
165165 private final boolean enableExtendedTracing ;
166166 private final boolean enableEndToEndTracing ;
167+ private final String metricsHost ;
167168
168169 enum TracingFramework {
169170 OPEN_CENSUS ,
@@ -672,6 +673,7 @@ protected SpannerOptions(Builder builder) {
672673 enableExtendedTracing = builder .enableExtendedTracing ;
673674 enableBuiltInMetrics = builder .enableBuiltInMetrics ;
674675 enableEndToEndTracing = builder .enableEndToEndTracing ;
676+ metricsHost = builder .metricsHost ;
675677 }
676678
677679 /**
@@ -712,6 +714,10 @@ default boolean isEnableBuiltInMetrics() {
712714 default boolean isEnableEndToEndTracing () {
713715 return false ;
714716 }
717+
718+ default String getMetricsHost () {
719+ return null ;
720+ }
715721 }
716722
717723 /**
@@ -728,6 +734,7 @@ private static class SpannerEnvironmentImpl implements SpannerEnvironment {
728734 private static final String SPANNER_ENABLE_END_TO_END_TRACING =
729735 "SPANNER_ENABLE_END_TO_END_TRACING" ;
730736 private static final String SPANNER_DISABLE_BUILTIN_METRICS = "SPANNER_DISABLE_BUILTIN_METRICS" ;
737+ private static final String SPANNER_METRICS_HOST = "SPANNER_METRICS_HOST" ;
731738
732739 private SpannerEnvironmentImpl () {}
733740
@@ -763,6 +770,11 @@ public boolean isEnableBuiltInMetrics() {
763770 public boolean isEnableEndToEndTracing () {
764771 return Boolean .parseBoolean (System .getenv (SPANNER_ENABLE_END_TO_END_TRACING ));
765772 }
773+
774+ @ Override
775+ public String getMetricsHost () {
776+ return System .getenv (SPANNER_METRICS_HOST );
777+ }
766778 }
767779
768780 /** Builder for {@link SpannerOptions} instances. */
@@ -828,6 +840,7 @@ public static class Builder
828840 private boolean enableExtendedTracing = SpannerOptions .environment .isEnableExtendedTracing ();
829841 private boolean enableEndToEndTracing = SpannerOptions .environment .isEnableEndToEndTracing ();
830842 private boolean enableBuiltInMetrics = SpannerOptions .environment .isEnableBuiltInMetrics ();
843+ private String metricsHost = SpannerOptions .environment .getMetricsHost ();
831844
832845 private static String createCustomClientLibToken (String token ) {
833846 return token + " " + ServiceOptions .getGoogApiClientLibName ();
@@ -895,6 +908,7 @@ protected Builder() {
895908 this .enableExtendedTracing = options .enableExtendedTracing ;
896909 this .enableBuiltInMetrics = options .enableBuiltInMetrics ;
897910 this .enableEndToEndTracing = options .enableEndToEndTracing ;
911+ this .metricsHost = options .metricsHost ;
898912 }
899913
900914 @ Override
@@ -1417,6 +1431,12 @@ public Builder setBuiltInMetricsEnabled(boolean enableBuiltInMetrics) {
14171431 return this ;
14181432 }
14191433
1434+ /** Sets the metrics host to be used for Built-in client side metrics */
1435+ public Builder setMetricsHost (String metricsHost ) {
1436+ this .metricsHost = metricsHost ;
1437+ return this ;
1438+ }
1439+
14201440 /**
14211441 * Sets whether to enable extended OpenTelemetry tracing. Enabling this option will add the
14221442 * following additional attributes to the traces that are generated by the client:
@@ -1727,7 +1747,7 @@ private ApiTracerFactory getDefaultApiTracerFactory() {
17271747 private ApiTracerFactory createMetricsApiTracerFactory () {
17281748 OpenTelemetry openTelemetry =
17291749 this .builtInOpenTelemetryMetricsProvider .getOrCreateOpenTelemetry (
1730- this .getProjectId (), getCredentials ());
1750+ this .getProjectId (), getCredentials (), this . metricsHost );
17311751
17321752 return openTelemetry != null
17331753 ? new MetricsTracerFactory (
@@ -1754,6 +1774,11 @@ public boolean isEnableBuiltInMetrics() {
17541774 return enableBuiltInMetrics ;
17551775 }
17561776
1777+ /** Returns the override metrics Host. */
1778+ String getMetricsHost () {
1779+ return metricsHost ;
1780+ }
1781+
17571782 @ BetaApi
17581783 public boolean isUseVirtualThreads () {
17591784 return useVirtualThreads ;
0 commit comments