|
@@ -1,11 +1,16 @@
|
|
|
-import {Fragment} from 'react';
|
|
|
-
|
|
|
import ExternalLink from 'sentry/components/links/externalLink';
|
|
|
import {Layout, LayoutProps} from 'sentry/components/onboarding/gettingStartedDoc/layout';
|
|
|
import {ModuleProps} from 'sentry/components/onboarding/gettingStartedDoc/sdkDocumentation';
|
|
|
import {StepType} from 'sentry/components/onboarding/gettingStartedDoc/step';
|
|
|
+import {ProductSolution} from 'sentry/components/onboarding/productSelection';
|
|
|
import {t, tct} from 'sentry/locale';
|
|
|
|
|
|
+interface StepProps {
|
|
|
+ dsn: string;
|
|
|
+ hasPerformance: boolean;
|
|
|
+ hasProfiling: boolean;
|
|
|
+}
|
|
|
+
|
|
|
// Configuration Start
|
|
|
const introduction = (
|
|
|
<p>
|
|
@@ -25,7 +30,9 @@ const introduction = (
|
|
|
|
|
|
export const steps = ({
|
|
|
dsn,
|
|
|
-}: Partial<Pick<ModuleProps, 'dsn'>> = {}): LayoutProps['steps'] => [
|
|
|
+ hasPerformance,
|
|
|
+ hasProfiling,
|
|
|
+}: StepProps): LayoutProps['steps'] => [
|
|
|
{
|
|
|
type: StepType.INSTALL,
|
|
|
configurations: [
|
|
@@ -40,6 +47,15 @@ export const steps = ({
|
|
|
language: 'bash',
|
|
|
code: `composer require sentry/sentry-laravel`,
|
|
|
},
|
|
|
+ ...(hasProfiling
|
|
|
+ ? [
|
|
|
+ {
|
|
|
+ description: t('Install the Excimer extension via PECL:'),
|
|
|
+ language: 'bash',
|
|
|
+ code: 'pecl install excimer',
|
|
|
+ },
|
|
|
+ ]
|
|
|
+ : []),
|
|
|
{
|
|
|
description: (
|
|
|
<p>
|
|
@@ -63,20 +79,6 @@ public function register() {
|
|
|
`,
|
|
|
},
|
|
|
],
|
|
|
- additionalInfo: (
|
|
|
- <p>
|
|
|
- {tct(
|
|
|
- 'Alternatively, you can configure Sentry in your [laravelLogChannelLink:Laravel Log Channel], allowing you to log [codeInfo:info] and [codeDebug:debug] as well.',
|
|
|
- {
|
|
|
- codeInfo: <code />,
|
|
|
- codeDebug: <code />,
|
|
|
- laravelLogChannelLink: (
|
|
|
- <ExternalLink href="https://docs.sentry.io/platforms/php/guides/laravel/usage/#log-channels" />
|
|
|
- ),
|
|
|
- }
|
|
|
- )}
|
|
|
- </p>
|
|
|
- ),
|
|
|
},
|
|
|
{
|
|
|
type: StepType.CONFIGURE,
|
|
@@ -90,148 +92,66 @@ public function register() {
|
|
|
description: (
|
|
|
<p>
|
|
|
{tct(
|
|
|
- 'It creates the config file ([sentryPHPCode:config/sentry.php]) and adds the [dsnCode:DSN] to your ".env" file.',
|
|
|
- {dsnCode: <code />, sentryPHPCode: <code />}
|
|
|
+ 'It creates the config file ([sentryPHPCode:config/sentry.php]) and adds the [dsnCode:DSN] to your [envCode:.env] file where you can add further configuration options:',
|
|
|
+ {sentryPHPCode: <code />, dsnCode: <code />, envCode: <code />}
|
|
|
)}
|
|
|
</p>
|
|
|
),
|
|
|
language: 'shell',
|
|
|
- code: `SENTRY_LARAVEL_DSN=${dsn}`,
|
|
|
+ code: `SENTRY_LARAVEL_DSN=${dsn}${
|
|
|
+ hasPerformance
|
|
|
+ ? `
|
|
|
+# Specify a fixed sample rate
|
|
|
+SENTRY_TRACES_SAMPLE_RATE=1.0`
|
|
|
+ : ''
|
|
|
+ }${
|
|
|
+ hasProfiling
|
|
|
+ ? `
|
|
|
+# Set a sampling rate for profiling - this is relative to traces_sample_rate
|
|
|
+SENTRY_PROFILES_SAMPLE_RATE=1.0`
|
|
|
+ : ''
|
|
|
+ }`,
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
{
|
|
|
type: StepType.VERIFY,
|
|
|
- configurations: [
|
|
|
- {
|
|
|
- description: <h5>{t('Verify With Artisan')}</h5>,
|
|
|
- configurations: [
|
|
|
- {
|
|
|
- description: (
|
|
|
- <p>
|
|
|
- {tct(
|
|
|
- 'You can test your configuration using the provided [code:sentry:test] artisan command:',
|
|
|
- {
|
|
|
- code: <code />,
|
|
|
- }
|
|
|
- )}
|
|
|
- </p>
|
|
|
- ),
|
|
|
- language: 'shell',
|
|
|
- code: 'php artisan sentry:test',
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- {
|
|
|
- description: <h5>{t('Verify With Code')}</h5>,
|
|
|
- configurations: [
|
|
|
- {
|
|
|
- description: t(
|
|
|
- 'You can verify that Sentry is capturing errors in your Laravel application by creating a route that will throw an exception:'
|
|
|
- ),
|
|
|
- language: 'php',
|
|
|
- code: `
|
|
|
-Route::get('/debug-sentry', function () {
|
|
|
- throw new Exception('My first Sentry error!');
|
|
|
-});
|
|
|
- `,
|
|
|
- additionalInfo: t(
|
|
|
- 'Visiting this route will trigger an exception that will be captured by Sentry.'
|
|
|
- ),
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- ],
|
|
|
- },
|
|
|
- {
|
|
|
- title: t('Performance Monitoring'),
|
|
|
configurations: [
|
|
|
{
|
|
|
description: (
|
|
|
<p>
|
|
|
{tct(
|
|
|
- 'Set [tracesSampleRateCode:traces_sample_rate] in [sentryPhpCode:config/sentry.php] or [sentryTracesSampleRateCode:SENTRY_TRACES_SAMPLE_RATE] in your ".env" to a value greater than "0.0". Setting a value greater than "0.0" will enable Performance Monitoring, "0" (the default) will disable Performance Monitoring.',
|
|
|
+ 'You can test your configuration using the provided [code:sentry:test] artisan command:',
|
|
|
{
|
|
|
- tracesSampleRateCode: <code />,
|
|
|
- sentryPhpCode: <code />,
|
|
|
- sentryTracesSampleRateCode: <code />,
|
|
|
+ code: <code />,
|
|
|
}
|
|
|
)}
|
|
|
</p>
|
|
|
),
|
|
|
language: 'shell',
|
|
|
- code: `
|
|
|
-# Be sure to lower this value in production otherwise you could burn through your quota quickly.
|
|
|
-SENTRY_TRACES_SAMPLE_RATE=1.0
|
|
|
- `,
|
|
|
- additionalInfo: (
|
|
|
- <Fragment>
|
|
|
- {t(
|
|
|
- 'The example configuration above will transmit 100% of captured traces. Be sure to lower this value in production or you could use up your quota quickly.'
|
|
|
- )}
|
|
|
- <p>
|
|
|
- {tct(
|
|
|
- 'You can also be more granular with the sample rate by using the traces_sampler option. Learn more in [usingSampleToFilterLink:Using Sampling to Filter Transaction Events].',
|
|
|
- {
|
|
|
- usingSampleToFilterLink: (
|
|
|
- <ExternalLink href="https://docs.sentry.io/platforms/php/guides/laravel/configuration/filtering/#using-sampling-to-filter-transaction-events" />
|
|
|
- ),
|
|
|
- }
|
|
|
- )}
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- {tct(
|
|
|
- "Performance data is transmitted using a new event type called 'transactions', which you can learn about in Distributed Tracing.",
|
|
|
- {
|
|
|
- distributedTracingLink: (
|
|
|
- <ExternalLink href="https://docs.sentry.io/product/sentry-basics/tracing/distributed-tracing/#traces-transactions-and-spans" />
|
|
|
- ),
|
|
|
- }
|
|
|
- )}
|
|
|
- </p>
|
|
|
- </Fragment>
|
|
|
- ),
|
|
|
+ code: 'php artisan sentry:test',
|
|
|
},
|
|
|
],
|
|
|
},
|
|
|
- {
|
|
|
- title: t('Local Development and Testing'),
|
|
|
- description: (
|
|
|
- <Fragment>
|
|
|
- {t(
|
|
|
- 'When Sentry is installed in your application, it will also be active when you are developing or running tests.'
|
|
|
- )}
|
|
|
- <p>
|
|
|
- {tct(
|
|
|
- "You most likely don't want errors to be sent to Sentry when you are developing or running tests. To avoid this, set the DSN value to [code:null] to disable sending errors to Sentry.",
|
|
|
- {
|
|
|
- code: <code />,
|
|
|
- }
|
|
|
- )}
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- {tct(
|
|
|
- 'You can also do this by not defining [sentryLaravelDsnCode:SENTRY_LARAVEL_DSN] in your [envCode:.env] or by defining it as [sentryLaravelDsnNullCode:SENTRY_LARAVEL_DSN=null].',
|
|
|
- {
|
|
|
- sentryLaravelDsnNullCode: <code />,
|
|
|
- envCode: <code />,
|
|
|
- sentryLaravelDsnCode: <code />,
|
|
|
- }
|
|
|
- )}
|
|
|
- </p>
|
|
|
- <p>
|
|
|
- {t(
|
|
|
- "If you do leave Sentry enabled when developing or running tests, it's possible for it to have a negative effect on the performance of your application or test suite."
|
|
|
- )}
|
|
|
- </p>
|
|
|
- </Fragment>
|
|
|
- ),
|
|
|
- },
|
|
|
];
|
|
|
// Configuration End
|
|
|
|
|
|
-export function GettingStartedWithLaravel({dsn, ...props}: ModuleProps) {
|
|
|
- return <Layout steps={steps({dsn})} introduction={introduction} {...props} />;
|
|
|
+export function GettingStartedWithLaravel({
|
|
|
+ dsn,
|
|
|
+ activeProductSelection = [],
|
|
|
+ ...props
|
|
|
+}: ModuleProps) {
|
|
|
+ const hasPerformance = activeProductSelection.includes(
|
|
|
+ ProductSolution.PERFORMANCE_MONITORING
|
|
|
+ );
|
|
|
+ const hasProfiling = activeProductSelection.includes(ProductSolution.PROFILING);
|
|
|
+ return (
|
|
|
+ <Layout
|
|
|
+ introduction={introduction}
|
|
|
+ steps={steps({dsn, hasPerformance, hasProfiling})}
|
|
|
+ {...props}
|
|
|
+ />
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
export default GettingStartedWithLaravel;
|