From 6bda69d32d8deb5ff16fbb25de77f97e0ac36983 Mon Sep 17 00:00:00 2001 From: Alexander Dinauer Date: Thu, 18 Dec 2025 14:30:00 +0100 Subject: [PATCH] Metrics Count API --- sentry/api/sentry.api | 12 +++++++ .../java/io/sentry/metrics/IMetricsApi.java | 17 +++++++++- .../java/io/sentry/metrics/MetricsApi.java | 33 +++++++++++++++++-- .../io/sentry/metrics/NoOpMetricsApi.java | 21 +++++++++++- 4 files changed, 78 insertions(+), 5 deletions(-) diff --git a/sentry/api/sentry.api b/sentry/api/sentry.api index 85c1e6625a..ff7d26531c 100644 --- a/sentry/api/sentry.api +++ b/sentry/api/sentry.api @@ -5202,6 +5202,10 @@ public final class io/sentry/metrics/DefaultMetricsBatchProcessorFactory : io/se public abstract interface class io/sentry/metrics/IMetricsApi { public abstract fun count (Ljava/lang/String;)V + public abstract fun count (Ljava/lang/String;Ljava/lang/Double;)V + public abstract fun count (Ljava/lang/String;Ljava/lang/Double;Ljava/lang/String;)V + public abstract fun count (Ljava/lang/String;Ljava/lang/Double;Ljava/lang/String;Lio/sentry/logger/SentryLogParameters;)V + public abstract fun count (Ljava/lang/String;Ljava/lang/String;)V } public abstract interface class io/sentry/metrics/IMetricsBatchProcessor { @@ -5217,6 +5221,10 @@ public abstract interface class io/sentry/metrics/IMetricsBatchProcessorFactory public final class io/sentry/metrics/MetricsApi : io/sentry/metrics/IMetricsApi { public fun (Lio/sentry/Scopes;)V public fun count (Ljava/lang/String;)V + public fun count (Ljava/lang/String;Ljava/lang/Double;)V + public fun count (Ljava/lang/String;Ljava/lang/Double;Ljava/lang/String;)V + public fun count (Ljava/lang/String;Ljava/lang/Double;Ljava/lang/String;Lio/sentry/logger/SentryLogParameters;)V + public fun count (Ljava/lang/String;Ljava/lang/String;)V } public class io/sentry/metrics/MetricsBatchProcessor : io/sentry/metrics/IMetricsBatchProcessor { @@ -5232,6 +5240,10 @@ public class io/sentry/metrics/MetricsBatchProcessor : io/sentry/metrics/IMetric public final class io/sentry/metrics/NoOpMetricsApi : io/sentry/metrics/IMetricsApi { public fun count (Ljava/lang/String;)V + public fun count (Ljava/lang/String;Ljava/lang/Double;)V + public fun count (Ljava/lang/String;Ljava/lang/Double;Ljava/lang/String;)V + public fun count (Ljava/lang/String;Ljava/lang/Double;Ljava/lang/String;Lio/sentry/logger/SentryLogParameters;)V + public fun count (Ljava/lang/String;Ljava/lang/String;)V public static fun getInstance ()Lio/sentry/metrics/NoOpMetricsApi; } diff --git a/sentry/src/main/java/io/sentry/metrics/IMetricsApi.java b/sentry/src/main/java/io/sentry/metrics/IMetricsApi.java index ddd6bb9d41..afaf8ea3cf 100644 --- a/sentry/src/main/java/io/sentry/metrics/IMetricsApi.java +++ b/sentry/src/main/java/io/sentry/metrics/IMetricsApi.java @@ -1,10 +1,25 @@ package io.sentry.metrics; +import io.sentry.logger.SentryLogParameters; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public interface IMetricsApi { - void count(@NotNull final String name); + void count(final @NotNull String name); + + void count(final @NotNull String name, final @Nullable Double value); + + void count(final @NotNull String name, final @Nullable String unit); + + void count(final @NotNull String name, final @Nullable Double value, final @Nullable String unit); + + void count( + final @NotNull String name, + final @Nullable Double value, + final @Nullable String unit, + final @NotNull SentryLogParameters params); + // distribution // gauge // diff --git a/sentry/src/main/java/io/sentry/metrics/MetricsApi.java b/sentry/src/main/java/io/sentry/metrics/MetricsApi.java index 24ea873dda..1d18fa064f 100644 --- a/sentry/src/main/java/io/sentry/metrics/MetricsApi.java +++ b/sentry/src/main/java/io/sentry/metrics/MetricsApi.java @@ -33,8 +33,33 @@ public MetricsApi(final @NotNull Scopes scopes) { } @Override - public void count(@NotNull String name) { - captureMetrics(SentryLogParameters.create(null, null), name, "counter", 1.0); + public void count(final @NotNull String name) { + captureMetrics(SentryLogParameters.create(null, null), name, "counter", 1.0, null); + } + + @Override + public void count(final @NotNull String name, final @Nullable Double value) { + captureMetrics(SentryLogParameters.create(null, null), name, "counter", value, null); + } + + @Override + public void count(final @NotNull String name, final @Nullable String unit) { + captureMetrics(SentryLogParameters.create(null, null), name, "counter", 1.0, unit); + } + + @Override + public void count( + final @NotNull String name, final @Nullable Double value, final @Nullable String unit) { + captureMetrics(SentryLogParameters.create(null, null), name, "counter", value, unit); + } + + @Override + public void count( + final @NotNull String name, + final @Nullable Double value, + final @Nullable String unit, + final @NotNull SentryLogParameters params) { + captureMetrics(params, name, "counter", value, unit); } @SuppressWarnings("AnnotateFormatMethod") @@ -42,7 +67,8 @@ private void captureMetrics( final @NotNull SentryLogParameters params, final @Nullable String name, final @Nullable String type, - final @Nullable Double value) { + final @Nullable Double value, + final @Nullable String unit) { final @NotNull SentryOptions options = scopes.getOptions(); try { if (!scopes.isEnabled()) { @@ -90,6 +116,7 @@ private void captureMetrics( final SentryMetricsEvent metricsEvent = new SentryMetricsEvent(traceId, timestampToUse, name, type, value); metricsEvent.setSpanId(spanId); + metricsEvent.setUnit(unit); metricsEvent.setAttributes(createAttributes(params)); scopes.getClient().captureMetric(metricsEvent, combinedScope); diff --git a/sentry/src/main/java/io/sentry/metrics/NoOpMetricsApi.java b/sentry/src/main/java/io/sentry/metrics/NoOpMetricsApi.java index f6977b6953..b12b863167 100644 --- a/sentry/src/main/java/io/sentry/metrics/NoOpMetricsApi.java +++ b/sentry/src/main/java/io/sentry/metrics/NoOpMetricsApi.java @@ -1,6 +1,8 @@ package io.sentry.metrics; +import io.sentry.logger.SentryLogParameters; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; public final class NoOpMetricsApi implements IMetricsApi { private static final NoOpMetricsApi instance = new NoOpMetricsApi(); @@ -12,5 +14,22 @@ public static NoOpMetricsApi getInstance() { } @Override - public void count(@NotNull String name) {} + public void count(final @NotNull String name) {} + + @Override + public void count(final @NotNull String name, final @Nullable Double value) {} + + @Override + public void count(final @NotNull String name, final @Nullable String unit) {} + + @Override + public void count( + final @NotNull String name, final @Nullable Double value, final @Nullable String unit) {} + + @Override + public void count( + final @NotNull String name, + final @Nullable Double value, + final @Nullable String unit, + final @NotNull SentryLogParameters params) {} }