Skip to content

Commit 97c0403

Browse files
markushiJonasBa
authored andcommitted
feat(metrics): Add metrics onboarding for Android and Java (#67033)
Metrics landed in our java SDK in [7.6.0](https://github.com/getsentry/sentry-java/blob/main/CHANGELOG.md#760), this PR integrates the [setup docs](https://docs.sentry.io/platforms/android/metrics/) directly into the product. Java: <img width="525" alt="image" src="https://github.com/getsentry/sentry/assets/1411808/abae4c67-3da7-4683-82d5-49b6f9bc0012"> Android: <img width="520" alt="image" src="https://github.com/getsentry/sentry/assets/1411808/e57734a0-69a3-4fa4-a271-2cab039e93c7">
1 parent 5df067e commit 97c0403

File tree

8 files changed

+270
-0
lines changed

8 files changed

+270
-0
lines changed

static/app/components/onboarding/gettingStartedDoc/utils/metricsOnboarding.tsx

+248
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import ExternalLink from 'sentry/components/links/externalLink';
2+
import Link from 'sentry/components/links/link';
23
import type {StepProps} from 'sentry/components/onboarding/gettingStartedDoc/step';
34
import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step';
45
import type {
@@ -197,6 +198,253 @@ export const getJSServerMetricsOnboarding = (): OnboardingConfig => ({
197198
],
198199
});
199200

201+
const getJvmKotlinConfigureSnippet = (params: DocsParams) => `
202+
import io.sentry.Sentry
203+
204+
Sentry.init(this) { options ->
205+
options.dsn = "${params.dsn}",
206+
options.enableMetrics = true
207+
}`;
208+
209+
const getJvmJavaConfigureSnippet = (params: DocsParams) => `
210+
import io.sentry.Sentry;
211+
212+
Sentry.init(this, options -> {
213+
options.setDsn("${params.dsn}");
214+
options.setEnableMetrics(true);
215+
});`;
216+
217+
const getAndroidKotlinConfigureSnippet = (params: DocsParams) => `
218+
import io.sentry.android.core.SentryAndroid
219+
220+
SentryAndroid.init(this) { options ->
221+
options.dsn = "${params.dsn}",
222+
options.enableMetrics = true
223+
}`;
224+
225+
const getAndroidJavaConfigureSnippet = (params: DocsParams) => `
226+
import io.sentry.android.core.SentryAndroid;
227+
228+
SentryAndroid.init(this, options -> {
229+
options.setDsn("${params.dsn}");
230+
options.setEnableMetrics(true);
231+
});`;
232+
233+
const getAndroidXmlConfigureSnippet = (params: DocsParams) => `
234+
<manifest>
235+
<application>
236+
<meta-data android:name="io.sentry.dsn" android:value="${params.dsn}" />
237+
<meta-data android:name="io.sentry.enable-metrics" android:value="true" />
238+
</application>
239+
</manifest>`;
240+
241+
const getJvmPropertiesConfigureSnippet = (_: DocsParams) => `
242+
sentry.enable-metrics=true`;
243+
244+
const getJvmJavaVerifySnippet = () => `
245+
// Add 4 to a counter named "hits"
246+
Sentry.metrics().increment("hits", 4);`;
247+
248+
const getJvmKotlinVerifySnippet = () => `
249+
// Add 4 to a counter named "hits"
250+
Sentry.metrics().increment("hits", 4)`;
251+
252+
export const getAndroidMetricsOnboarding = (): OnboardingConfig => ({
253+
install: (params: DocsParams) => [
254+
{
255+
type: StepType.INSTALL,
256+
description: tct(
257+
'You need [package:sentry-java] version [codeVersion:7.6.0] or higher. Follow our [docsLink:setup wizard] to learn more about setting up the Android SDK.',
258+
{
259+
package: <code />,
260+
codeVersion: <code />,
261+
docsLink: <Link to={`/projects/${params.projectSlug}/getting-started/`} />,
262+
}
263+
),
264+
},
265+
],
266+
configure: (params: DocsParams) => [
267+
{
268+
type: StepType.CONFIGURE,
269+
description: 'To enable capturing metrics, you need to enable the metrics feature.',
270+
configurations: [
271+
{
272+
code: [
273+
{
274+
label: 'Kotlin',
275+
value: 'java',
276+
language: 'java',
277+
code: getAndroidKotlinConfigureSnippet(params),
278+
},
279+
{
280+
label: 'Java',
281+
value: 'kotlin',
282+
language: 'java',
283+
code: getAndroidJavaConfigureSnippet(params),
284+
},
285+
{
286+
label: 'XML',
287+
value: 'xml',
288+
language: 'java',
289+
code: getAndroidXmlConfigureSnippet(params),
290+
},
291+
],
292+
},
293+
],
294+
},
295+
],
296+
verify: () => [
297+
{
298+
type: StepType.VERIFY,
299+
description: tct(
300+
"Then you'll be able to add metrics as [codeCounters:counters], [codeSets:sets], [codeDistribution:distributions], and [codeGauge:gauges]. These are available under the [codeNamespace:Sentry.metrics()] namespace. Try out this example:",
301+
{
302+
codeCounters: <code />,
303+
codeSets: <code />,
304+
codeDistribution: <code />,
305+
codeGauge: <code />,
306+
codeNamespace: <code />,
307+
}
308+
),
309+
configurations: [
310+
{
311+
configurations: [
312+
{
313+
code: [
314+
{
315+
label: 'Kotlin',
316+
value: 'kotlin',
317+
language: 'java',
318+
code: getJvmKotlinVerifySnippet(),
319+
},
320+
{
321+
label: 'Java',
322+
value: 'java',
323+
language: 'java',
324+
code: getJvmJavaVerifySnippet(),
325+
},
326+
],
327+
},
328+
],
329+
},
330+
{
331+
description: t(
332+
'With a bit of delay you can see the data appear in the Sentry UI.'
333+
),
334+
},
335+
{
336+
description: tct(
337+
'Learn more about metrics and how to configure them, by reading the [docsLink:docs].',
338+
{
339+
docsLink: (
340+
<ExternalLink href="https://docs.sentry.io/platforms/android/metrics/" />
341+
),
342+
}
343+
),
344+
},
345+
],
346+
},
347+
],
348+
});
349+
350+
export const getJavaMetricsOnboarding = (): OnboardingConfig => ({
351+
install: (params: DocsParams) => [
352+
{
353+
type: StepType.INSTALL,
354+
description: tct(
355+
'You need [package:sentry-java] version [codeVersion:7.6.0] or higher. Follow our [docsLink:setup wizard] to learn more about setting up the Java SDK.',
356+
{
357+
package: <code />,
358+
codeVersion: <code />,
359+
docsLink: <Link to={`/projects/${params.projectSlug}/getting-started`} />,
360+
}
361+
),
362+
},
363+
],
364+
configure: params => [
365+
{
366+
type: StepType.CONFIGURE,
367+
description: 'To enable capturing metrics, you need to enable the metrics feature.',
368+
configurations: [
369+
{
370+
code: [
371+
{
372+
label: 'Java',
373+
value: 'java',
374+
language: 'java',
375+
code: getJvmJavaConfigureSnippet(params),
376+
},
377+
{
378+
label: 'Kotlin',
379+
value: 'kotlin',
380+
language: 'java',
381+
code: getJvmKotlinConfigureSnippet(params),
382+
},
383+
{
384+
label: 'properties',
385+
value: 'properties',
386+
language: 'properties',
387+
code: getJvmPropertiesConfigureSnippet(params),
388+
},
389+
],
390+
},
391+
],
392+
},
393+
],
394+
verify: () => [
395+
{
396+
type: StepType.VERIFY,
397+
description: tct(
398+
"Then you'll be able to add metrics as [codeCounters:counters], [codeSets:sets], [codeDistribution:distributions], and [codeGauge:gauges]. These are available under the [codeNamespace:Sentry.metrics()] namespace. Try out this example:",
399+
{
400+
codeCounters: <code />,
401+
codeSets: <code />,
402+
codeDistribution: <code />,
403+
codeGauge: <code />,
404+
codeNamespace: <code />,
405+
}
406+
),
407+
configurations: [
408+
{
409+
configurations: [
410+
{
411+
code: [
412+
{
413+
label: 'Java',
414+
value: 'java',
415+
language: 'java',
416+
code: getJvmJavaVerifySnippet(),
417+
},
418+
{
419+
label: 'Kotlin',
420+
value: 'kotlin',
421+
language: 'java',
422+
code: getJvmKotlinVerifySnippet(),
423+
},
424+
],
425+
},
426+
],
427+
},
428+
{
429+
description: t(
430+
'With a bit of delay you can see the data appear in the Sentry UI.'
431+
),
432+
},
433+
{
434+
description: tct(
435+
'Learn more about metrics and how to configure them, by reading the [docsLink:docs].',
436+
{
437+
docsLink: (
438+
<ExternalLink href="https://docs.sentry.io/platforms/java/metrics/" />
439+
),
440+
}
441+
),
442+
},
443+
],
444+
},
445+
],
446+
});
447+
200448
const getPythonConfigureSnippet = () => `
201449
import sentry_sdk
202450

static/app/data/platformCategories.tsx

+10
Original file line numberDiff line numberDiff line change
@@ -461,6 +461,14 @@ const customMetricBackendPlatforms: readonly PlatformKey[] = [
461461
'dotnet-uwp',
462462
'dotnet-winforms',
463463
'dotnet-wpf',
464+
'java',
465+
'java-appengine',
466+
'java-log4j',
467+
'java-log4j2',
468+
'java-logback',
469+
'java-logging',
470+
'java-spring',
471+
'java-spring-boot',
464472
'php',
465473
'php-laravel',
466474
// TODO: Enable once metrics are available for Symfony
@@ -499,7 +507,9 @@ const customMetricBackendPlatforms: readonly PlatformKey[] = [
499507
];
500508

501509
const customMetricFrontendPlatforms: readonly PlatformKey[] = [
510+
'android',
502511
'electron',
512+
'java-android',
503513
'javascript-angular',
504514
'javascript-astro',
505515
'javascript-backbone',

static/app/gettingStartedDocs/android/android.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import type {
1010
DocsParams,
1111
OnboardingConfig,
1212
} from 'sentry/components/onboarding/gettingStartedDoc/types';
13+
import {getAndroidMetricsOnboarding} from 'sentry/components/onboarding/gettingStartedDoc/utils/metricsOnboarding';
1314
import {feedbackOnboardingCrashApiJava} from 'sentry/gettingStartedDocs/java/java';
1415
import {t, tct} from 'sentry/locale';
1516
import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion';
@@ -286,6 +287,7 @@ const docs: Docs<PlatformOptions> = {
286287
onboarding,
287288
feedbackOnboardingCrashApi: feedbackOnboardingCrashApiJava,
288289
crashReportOnboarding: feedbackOnboardingCrashApiJava,
290+
customMetricsOnboarding: getAndroidMetricsOnboarding(),
289291
platformOptions,
290292
};
291293

static/app/gettingStartedDocs/java/java.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
getCrashReportApiIntroduction,
1414
getCrashReportInstallDescription,
1515
} from 'sentry/components/onboarding/gettingStartedDoc/utils/feedbackOnboarding';
16+
import {getJavaMetricsOnboarding} from 'sentry/components/onboarding/gettingStartedDoc/utils/metricsOnboarding';
1617
import {t, tct} from 'sentry/locale';
1718
import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion';
1819

@@ -350,6 +351,7 @@ const docs: Docs<PlatformOptions> = {
350351
platformOptions,
351352
feedbackOnboardingCrashApi: feedbackOnboardingCrashApiJava,
352353
crashReportOnboarding: feedbackOnboardingCrashApiJava,
354+
customMetricsOnboarding: getJavaMetricsOnboarding(),
353355
onboarding,
354356
};
355357

static/app/gettingStartedDocs/java/log4j2.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {
99
DocsParams,
1010
OnboardingConfig,
1111
} from 'sentry/components/onboarding/gettingStartedDoc/types';
12+
import {getJavaMetricsOnboarding} from 'sentry/components/onboarding/gettingStartedDoc/utils/metricsOnboarding';
1213
import {feedbackOnboardingCrashApiJava} from 'sentry/gettingStartedDocs/java/java';
1314
import {t, tct} from 'sentry/locale';
1415
import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion';
@@ -334,6 +335,7 @@ const docs: Docs<PlatformOptions> = {
334335
platformOptions,
335336
feedbackOnboardingCrashApi: feedbackOnboardingCrashApiJava,
336337
crashReportOnboarding: feedbackOnboardingCrashApiJava,
338+
customMetricsOnboarding: getJavaMetricsOnboarding(),
337339
onboarding,
338340
};
339341

static/app/gettingStartedDocs/java/logback.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {
99
DocsParams,
1010
OnboardingConfig,
1111
} from 'sentry/components/onboarding/gettingStartedDoc/types';
12+
import {getJavaMetricsOnboarding} from 'sentry/components/onboarding/gettingStartedDoc/utils/metricsOnboarding';
1213
import {feedbackOnboardingCrashApiJava} from 'sentry/gettingStartedDocs/java/java';
1314
import {t, tct} from 'sentry/locale';
1415
import {getPackageVersion} from 'sentry/utils/gettingStartedDocs/getPackageVersion';
@@ -341,6 +342,7 @@ const docs: Docs<PlatformOptions> = {
341342
onboarding,
342343
feedbackOnboardingCrashApi: feedbackOnboardingCrashApiJava,
343344
crashReportOnboarding: feedbackOnboardingCrashApiJava,
345+
customMetricsOnboarding: getJavaMetricsOnboarding(),
344346
platformOptions,
345347
};
346348

static/app/gettingStartedDocs/java/spring-boot.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {
99
DocsParams,
1010
OnboardingConfig,
1111
} from 'sentry/components/onboarding/gettingStartedDoc/types';
12+
import {getJavaMetricsOnboarding} from 'sentry/components/onboarding/gettingStartedDoc/utils/metricsOnboarding';
1213
import {feedbackOnboardingCrashApiJava} from 'sentry/gettingStartedDocs/java/java';
1314
import replayOnboardingJsLoader from 'sentry/gettingStartedDocs/javascript/jsLoader/jsLoader';
1415
import {t, tct} from 'sentry/locale';
@@ -304,6 +305,7 @@ const docs: Docs<PlatformOptions> = {
304305
platformOptions,
305306
replayOnboardingJsLoader,
306307
crashReportOnboarding: feedbackOnboardingCrashApiJava,
308+
customMetricsOnboarding: getJavaMetricsOnboarding(),
307309
};
308310

309311
export default docs;

static/app/gettingStartedDocs/java/spring.tsx

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import type {
99
DocsParams,
1010
OnboardingConfig,
1111
} from 'sentry/components/onboarding/gettingStartedDoc/types';
12+
import {getJavaMetricsOnboarding} from 'sentry/components/onboarding/gettingStartedDoc/utils/metricsOnboarding';
1213
import {feedbackOnboardingCrashApiJava} from 'sentry/gettingStartedDocs/java/java';
1314
import replayOnboardingJsLoader from 'sentry/gettingStartedDocs/javascript/jsLoader/jsLoader';
1415
import {t, tct} from 'sentry/locale';
@@ -376,6 +377,7 @@ const docs: Docs<PlatformOptions> = {
376377
platformOptions,
377378
crashReportOnboarding: feedbackOnboardingCrashApiJava,
378379
replayOnboardingJsLoader,
380+
customMetricsOnboarding: getJavaMetricsOnboarding(),
379381
};
380382

381383
export default docs;

0 commit comments

Comments
 (0)