@danieljvdm/dev-kit 1.0.2 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -6
- package/package.json +1 -1
- package/skill-sources.jsonc +2 -33
- package/skill-sources.lock.json +15 -117
- package/skills/animate/LICENSE +21 -0
- package/skills/animate/NOTICE +10 -0
- package/skills/animate/SKILL.md +34 -0
- package/skills/animate/references/gestures.md +27 -0
- package/skills/animate/references/glossary.md +136 -0
- package/skills/animate/references/implementation.md +22 -0
- package/skills/animate/references/opportunities.md +18 -0
- package/skills/animate/references/principles.md +48 -0
- package/skills/animate/references/review.md +19 -0
- package/skills/cloudflare-workers/LICENSE +202 -0
- package/skills/cloudflare-workers/NOTICE +9 -0
- package/skills/cloudflare-workers/SKILL.md +26 -0
- package/skills/cloudflare-workers/references/durable-objects.md +68 -0
- package/skills/cloudflare-workers/references/sandbox.md +48 -0
- package/skills/cloudflare-workers/references/workers.md +63 -0
- package/skills/cloudflare-workers/references/wrangler.md +56 -0
- package/skills/design-ui/LICENSE +21 -0
- package/skills/design-ui/NOTICE +8 -0
- package/skills/design-ui/SKILL.md +29 -0
- package/skills/design-ui/references/appearance.md +22 -0
- package/skills/design-ui/references/components.md +33 -0
- package/skills/design-ui/references/exploration.md +50 -0
- package/skills/design-ui/references/libraries.md +39 -0
- package/skills/design-ui/references/themes.md +23 -0
- package/skills/dev-kit/SKILL.md +19 -38
- package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
- package/skills/dev-kit/references/skills.md +2 -2
- package/skills/effect-development/SKILL.md +27 -0
- package/skills/effect-development/agents/openai.yaml +4 -0
- package/skills/effect-development/references/api/index.md +32 -0
- package/skills/effect-development/references/api/schema-codecs.md +15 -0
- package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
- package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
- package/skills/effect-development/references/atom/index.md +40 -0
- package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
- package/skills/effect-development/references/cli/index.md +39 -0
- package/skills/effect-development/references/setup.md +15 -0
- package/skills/open-pull-request/SKILL.md +10 -70
- package/skills/open-pull-request/references/evidence.md +22 -0
- package/skills/open-pull-request/references/explanation.md +21 -0
- package/skills/open-pull-request/references/publication.md +21 -0
- package/skills/sentry/LICENSE +202 -0
- package/skills/sentry/LICENSE-UPSTREAM +21 -0
- package/skills/sentry/NOTICE +14 -0
- package/skills/sentry/SKILL.md +33 -0
- package/skills/sentry/references/alert-payloads.md +105 -0
- package/skills/sentry/references/alerts.md +17 -0
- package/skills/sentry/references/artifacts.md +25 -0
- package/skills/sentry/references/auth-token.md +65 -0
- package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
- package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
- package/skills/sentry/references/concepts/crons.md +50 -0
- package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
- package/skills/sentry/references/concepts/errors.md +40 -0
- package/skills/sentry/references/concepts/logging.md +85 -0
- package/skills/sentry/references/concepts/metrics.md +49 -0
- package/skills/sentry/references/concepts/monitors.md +78 -0
- package/skills/sentry/references/concepts/profiling.md +38 -0
- package/skills/sentry/references/concepts/reduce-volume.md +49 -0
- package/skills/sentry/references/concepts/releases.md +43 -0
- package/skills/sentry/references/concepts/session-replay.md +35 -0
- package/skills/sentry/references/concepts/tracing.md +54 -0
- package/skills/sentry/references/concepts/user-feedback.md +36 -0
- package/skills/sentry/references/debug-artifacts/android.md +68 -0
- package/skills/sentry/references/debug-artifacts/apple.md +96 -0
- package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
- package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
- package/skills/sentry/references/debug-artifacts/index.md +75 -0
- package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
- package/skills/sentry/references/debug-artifacts/matching.md +73 -0
- package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
- package/skills/sentry/references/first-error-setup.md +25 -0
- package/skills/sentry/references/instrumentation.md +30 -0
- package/skills/sentry/references/issues.md +32 -0
- package/skills/sentry/references/new-project.md +17 -0
- package/skills/sentry/references/otel-exporter.md +30 -0
- package/skills/sentry/references/release-workflow.md +31 -0
- package/skills/sentry/references/releases/ci-pipeline.md +214 -0
- package/skills/sentry/references/releases/index.md +93 -0
- package/skills/sentry/references/releases/suspect-commits.md +155 -0
- package/skills/sentry/references/releases/tagging.md +131 -0
- package/skills/sentry/references/releases/troubleshooting.md +67 -0
- package/skills/sentry/references/sdks/android/crons.md +305 -0
- package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
- package/skills/sentry/references/sdks/android/index.md +748 -0
- package/skills/sentry/references/sdks/android/integrations.md +48 -0
- package/skills/sentry/references/sdks/android/logging.md +374 -0
- package/skills/sentry/references/sdks/android/metrics.md +288 -0
- package/skills/sentry/references/sdks/android/profiling.md +397 -0
- package/skills/sentry/references/sdks/android/session-replay.md +406 -0
- package/skills/sentry/references/sdks/android/tracing.md +861 -0
- package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
- package/skills/sentry/references/sdks/browser/index.md +714 -0
- package/skills/sentry/references/sdks/browser/logging.md +315 -0
- package/skills/sentry/references/sdks/browser/profiling.md +236 -0
- package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
- package/skills/sentry/references/sdks/browser/tracing.md +561 -0
- package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
- package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
- package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
- package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
- package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
- package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
- package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
- package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
- package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
- package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
- package/skills/sentry/references/sdks/cocoa/index.md +497 -0
- package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
- package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
- package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
- package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
- package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
- package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
- package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
- package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
- package/skills/sentry/references/sdks/dotnet/index.md +614 -0
- package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
- package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
- package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
- package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
- package/skills/sentry/references/sdks/elixir/crons.md +371 -0
- package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
- package/skills/sentry/references/sdks/elixir/index.md +383 -0
- package/skills/sentry/references/sdks/elixir/logging.md +239 -0
- package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
- package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
- package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
- package/skills/sentry/references/sdks/flutter/index.md +728 -0
- package/skills/sentry/references/sdks/flutter/logging.md +387 -0
- package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
- package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
- package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
- package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
- package/skills/sentry/references/sdks/go/crons.md +270 -0
- package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
- package/skills/sentry/references/sdks/go/index.md +324 -0
- package/skills/sentry/references/sdks/go/logging.md +354 -0
- package/skills/sentry/references/sdks/go/metrics.md +273 -0
- package/skills/sentry/references/sdks/go/profiling.md +46 -0
- package/skills/sentry/references/sdks/go/tracing.md +366 -0
- package/skills/sentry/references/sdks/index.md +41 -0
- package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
- package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
- package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
- package/skills/sentry/references/sdks/nestjs/index.md +699 -0
- package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
- package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
- package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
- package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
- package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
- package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
- package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
- package/skills/sentry/references/sdks/nextjs/index.md +491 -0
- package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
- package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
- package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
- package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
- package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
- package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
- package/skills/sentry/references/sdks/node/crons.md +432 -0
- package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
- package/skills/sentry/references/sdks/node/index.md +942 -0
- package/skills/sentry/references/sdks/node/logging.md +380 -0
- package/skills/sentry/references/sdks/node/metrics.md +278 -0
- package/skills/sentry/references/sdks/node/profiling.md +373 -0
- package/skills/sentry/references/sdks/node/tracing.md +878 -0
- package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
- package/skills/sentry/references/sdks/php/crons.md +265 -0
- package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
- package/skills/sentry/references/sdks/php/index.md +362 -0
- package/skills/sentry/references/sdks/php/laravel.md +542 -0
- package/skills/sentry/references/sdks/php/logging.md +242 -0
- package/skills/sentry/references/sdks/php/metrics.md +193 -0
- package/skills/sentry/references/sdks/php/profiling.md +115 -0
- package/skills/sentry/references/sdks/php/symfony.md +552 -0
- package/skills/sentry/references/sdks/php/tracing.md +516 -0
- package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
- package/skills/sentry/references/sdks/python/crons.md +218 -0
- package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
- package/skills/sentry/references/sdks/python/index.md +361 -0
- package/skills/sentry/references/sdks/python/logging.md +234 -0
- package/skills/sentry/references/sdks/python/metrics.md +154 -0
- package/skills/sentry/references/sdks/python/profiling.md +120 -0
- package/skills/sentry/references/sdks/python/tracing.md +364 -0
- package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
- package/skills/sentry/references/sdks/react/index.md +492 -0
- package/skills/sentry/references/sdks/react/logging.md +364 -0
- package/skills/sentry/references/sdks/react/profiling.md +322 -0
- package/skills/sentry/references/sdks/react/react-features.md +1272 -0
- package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
- package/skills/sentry/references/sdks/react/tracing.md +1415 -0
- package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
- package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
- package/skills/sentry/references/sdks/react-native/index.md +1030 -0
- package/skills/sentry/references/sdks/react-native/logging.md +444 -0
- package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
- package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
- package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
- package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
- package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
- package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
- package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
- package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
- package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
- package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
- package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
- package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
- package/skills/sentry/references/sdks/ruby/crons.md +184 -0
- package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
- package/skills/sentry/references/sdks/ruby/index.md +297 -0
- package/skills/sentry/references/sdks/ruby/logging.md +168 -0
- package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
- package/skills/sentry/references/sdks/ruby/migration.md +321 -0
- package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
- package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
- package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
- package/skills/sentry/references/sdks/svelte/index.md +467 -0
- package/skills/sentry/references/sdks/svelte/logging.md +344 -0
- package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
- package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
- package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
- package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
- package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
- package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
- package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
- package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
- package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
- package/skills/sentry/references/search-query-language.md +226 -0
- package/skills/sentry/references/semantics/angular.md +7 -0
- package/skills/sentry/references/semantics/app.md +28 -0
- package/skills/sentry/references/semantics/art.md +17 -0
- package/skills/sentry/references/semantics/aws.md +43 -0
- package/skills/sentry/references/semantics/browser.md +34 -0
- package/skills/sentry/references/semantics/cache.md +12 -0
- package/skills/sentry/references/semantics/client.md +8 -0
- package/skills/sentry/references/semantics/cloud.md +12 -0
- package/skills/sentry/references/semantics/cloudflare.md +23 -0
- package/skills/sentry/references/semantics/code.md +11 -0
- package/skills/sentry/references/semantics/culture.md +11 -0
- package/skills/sentry/references/semantics/db.md +21 -0
- package/skills/sentry/references/semantics/device.md +43 -0
- package/skills/sentry/references/semantics/error.md +7 -0
- package/skills/sentry/references/semantics/event.md +8 -0
- package/skills/sentry/references/semantics/exception.md +10 -0
- package/skills/sentry/references/semantics/faas.md +19 -0
- package/skills/sentry/references/semantics/file.md +8 -0
- package/skills/sentry/references/semantics/flag.md +7 -0
- package/skills/sentry/references/semantics/gcp.md +16 -0
- package/skills/sentry/references/semantics/gen_ai.md +53 -0
- package/skills/sentry/references/semantics/general.md +11 -0
- package/skills/sentry/references/semantics/graphql.md +9 -0
- package/skills/sentry/references/semantics/grpc.md +19 -0
- package/skills/sentry/references/semantics/http.md +34 -0
- package/skills/sentry/references/semantics/index.md +63 -0
- package/skills/sentry/references/semantics/jsonrpc.md +8 -0
- package/skills/sentry/references/semantics/jvm.md +12 -0
- package/skills/sentry/references/semantics/koa.md +7 -0
- package/skills/sentry/references/semantics/logger.md +7 -0
- package/skills/sentry/references/semantics/mcp.md +37 -0
- package/skills/sentry/references/semantics/mdc.md +7 -0
- package/skills/sentry/references/semantics/messaging.md +23 -0
- package/skills/sentry/references/semantics/middleware.md +7 -0
- package/skills/sentry/references/semantics/navigation.md +9 -0
- package/skills/sentry/references/semantics/nel.md +11 -0
- package/skills/sentry/references/semantics/network.md +17 -0
- package/skills/sentry/references/semantics/os.md +15 -0
- package/skills/sentry/references/semantics/otel.md +10 -0
- package/skills/sentry/references/semantics/params.md +7 -0
- package/skills/sentry/references/semantics/process.md +14 -0
- package/skills/sentry/references/semantics/react.md +7 -0
- package/skills/sentry/references/semantics/remix.md +7 -0
- package/skills/sentry/references/semantics/resource.md +7 -0
- package/skills/sentry/references/semantics/rpc.md +10 -0
- package/skills/sentry/references/semantics/score.md +10 -0
- package/skills/sentry/references/semantics/sentry.md +69 -0
- package/skills/sentry/references/semantics/server.md +8 -0
- package/skills/sentry/references/semantics/service.md +8 -0
- package/skills/sentry/references/semantics/session.md +7 -0
- package/skills/sentry/references/semantics/state.md +7 -0
- package/skills/sentry/references/semantics/thread.md +8 -0
- package/skills/sentry/references/semantics/timber.md +7 -0
- package/skills/sentry/references/semantics/trpc.md +8 -0
- package/skills/sentry/references/semantics/ui.md +18 -0
- package/skills/sentry/references/semantics/url.md +15 -0
- package/skills/sentry/references/semantics/user.md +17 -0
- package/skills/sentry/references/semantics/user_agent.md +7 -0
- package/skills/sentry/references/semantics/vercel.md +42 -0
- package/skills/sentry/references/setup-verification.md +39 -0
- package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
- package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
- package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
- package/skills/sentry/references/snapshots/index.md +19 -0
- package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
- package/skills/sentry/references/snapshots/snapshots.md +123 -0
- package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
- package/skills/testing/LICENSE +21 -0
- package/skills/testing/NOTICE +7 -0
- package/skills/testing/SKILL.md +13 -19
- package/skills/testing/agents/openai.yaml +1 -2
- package/skills/testing/references/selection.md +23 -0
- package/skills/testing/references/tdd.md +19 -0
- package/skills/testing/references/test-design.md +17 -0
- package/src/catalog.ts +1 -7
- package/skills/build-effect-apis/SKILL.md +0 -81
- package/skills/build-effect-apis/agents/openai.yaml +0 -4
- package/skills/build-effect-clis/SKILL.md +0 -92
- package/skills/build-effect-clis/agents/openai.yaml +0 -4
- package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
- package/skills/effect-atom-state/SKILL.md +0 -97
- package/skills/effect-atom-state/agents/openai.yaml +0 -4
- package/skills/effect-ts/SKILL.md +0 -35
- package/skills/effect-ts/agents/openai.yaml +0 -4
- /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
- /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
|
@@ -0,0 +1,516 @@
|
|
|
1
|
+
# Tracing — Sentry PHP SDK
|
|
2
|
+
|
|
3
|
+
> Minimum SDK: `sentry/sentry` ^4.0 · `sentry/sentry-laravel` ^4.0 ·
|
|
4
|
+
> `sentry/sentry-symfony` ^5.0
|
|
5
|
+
|
|
6
|
+
## Configuration
|
|
7
|
+
|
|
8
|
+
| Option | Type | Default | Purpose |
|
|
9
|
+
| --------------------------- | ---------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
10
|
+
| `traces_sample_rate` | `float` | `null` | Fraction of transactions to trace (0.0–1.0); `null` disables tracing |
|
|
11
|
+
| `traces_sampler` | `callable` | `null` | Per-transaction sampling function; takes precedence over `traces_sample_rate` |
|
|
12
|
+
| `profiles_sample_rate` | `float` | `null` | Fraction of sampled transactions to profile (relative to `traces_sample_rate`) |
|
|
13
|
+
| `ignore_transactions` | `array` | `[]` | Transaction names to never trace (e.g., `['/up', '/healthz']`) |
|
|
14
|
+
| `before_send_transaction` | `callable` | no-op | Mutate or drop transaction events before sending |
|
|
15
|
+
| `strict_trace_continuation` | `bool` | `false` | Only continue an incoming distributed trace if the `sentry-org_id` baggage matches the SDK’s org ID; prevents trace contamination from third-party services (>=4.21.0). Replaces deprecated `strict_trace_propagation` |
|
|
16
|
+
|
|
17
|
+
## Code Examples
|
|
18
|
+
|
|
19
|
+
### Enable tracing
|
|
20
|
+
|
|
21
|
+
```php
|
|
22
|
+
// Plain PHP — uniform sample rate
|
|
23
|
+
\Sentry\init([
|
|
24
|
+
'dsn' => 'https://<key>@<org>.ingest.sentry.io/<project>',
|
|
25
|
+
'traces_sample_rate' => 0.2, // trace 20% of requests
|
|
26
|
+
]);
|
|
27
|
+
|
|
28
|
+
// Laravel — config/sentry.php
|
|
29
|
+
'traces_sample_rate' => env('SENTRY_TRACES_SAMPLE_RATE') === null
|
|
30
|
+
? null
|
|
31
|
+
: (float) env('SENTRY_TRACES_SAMPLE_RATE'),
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
```yaml
|
|
35
|
+
# Symfony — config/packages/sentry.yaml
|
|
36
|
+
sentry:
|
|
37
|
+
options:
|
|
38
|
+
traces_sample_rate: 0.2
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Dynamic sampling with `traces_sampler`
|
|
42
|
+
|
|
43
|
+
```php
|
|
44
|
+
// Plain PHP — closure directly in init()
|
|
45
|
+
\Sentry\init([
|
|
46
|
+
'dsn' => '...',
|
|
47
|
+
'traces_sampler' => function (\Sentry\Tracing\SamplingContext $context): float {
|
|
48
|
+
$transactionName = $context->getTransactionContext()->getName();
|
|
49
|
+
|
|
50
|
+
// Drop health checks
|
|
51
|
+
if (in_array($transactionName, ['/healthz', '/up', '/ping'])) {
|
|
52
|
+
return 0.0;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// Honour parent sampling decision in distributed traces
|
|
56
|
+
$parentSampled = $context->getParentSampled();
|
|
57
|
+
if ($parentSampled !== null) {
|
|
58
|
+
return (float) $parentSampled;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// 50% of HTTP requests, 10% of everything else
|
|
62
|
+
return str_starts_with($transactionName, 'GET ') || str_starts_with($transactionName, 'POST ')
|
|
63
|
+
? 0.5
|
|
64
|
+
: 0.1;
|
|
65
|
+
},
|
|
66
|
+
]);
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
```yaml
|
|
70
|
+
# Symfony — traces_sampler must be wired through the service container (closures can't be serialized)
|
|
71
|
+
sentry:
|
|
72
|
+
options:
|
|
73
|
+
traces_sampler: "sentry.callback.traces_sampler"
|
|
74
|
+
|
|
75
|
+
services:
|
|
76
|
+
sentry.callback.traces_sampler:
|
|
77
|
+
class: 'App\Service\Sentry'
|
|
78
|
+
factory: ['@App\Service\Sentry', "getTracesSampler"]
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
```php
|
|
82
|
+
// src/Service/Sentry.php
|
|
83
|
+
namespace App\Service;
|
|
84
|
+
|
|
85
|
+
class Sentry
|
|
86
|
+
{
|
|
87
|
+
public function getTracesSampler(): callable
|
|
88
|
+
{
|
|
89
|
+
return function (\Sentry\Tracing\SamplingContext $context): float {
|
|
90
|
+
return 0.5;
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Custom span API — `TransactionContext` and `SpanContext`
|
|
97
|
+
|
|
98
|
+
```php
|
|
99
|
+
use Sentry\Tracing\TransactionContext;
|
|
100
|
+
use Sentry\Tracing\SpanContext;
|
|
101
|
+
|
|
102
|
+
// 1. Build and start a root transaction
|
|
103
|
+
$transactionContext = TransactionContext::make()
|
|
104
|
+
->setName('process-order')
|
|
105
|
+
->setOp('task');
|
|
106
|
+
|
|
107
|
+
$transaction = \Sentry\startTransaction($transactionContext);
|
|
108
|
+
|
|
109
|
+
// 2. Register on the hub so child spans attach to it
|
|
110
|
+
\Sentry\SentrySdk::getCurrentHub()->setSpan($transaction);
|
|
111
|
+
|
|
112
|
+
// 3. Add a child span
|
|
113
|
+
$spanContext = SpanContext::make()
|
|
114
|
+
->setOp('db.query')
|
|
115
|
+
->setDescription('SELECT * FROM orders WHERE id = ?');
|
|
116
|
+
|
|
117
|
+
$span = $transaction->startChild($spanContext);
|
|
118
|
+
// ... do work ...
|
|
119
|
+
$span->finish();
|
|
120
|
+
|
|
121
|
+
// 4. Finish transaction — submits everything to Sentry
|
|
122
|
+
$transaction->finish();
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### `\Sentry\trace()` helper (recommended)
|
|
126
|
+
|
|
127
|
+
Removes boilerplate: starts the span, sets it as current, finishes it automatically.
|
|
128
|
+
|
|
129
|
+
```php
|
|
130
|
+
$result = \Sentry\trace(
|
|
131
|
+
function (\Sentry\State\Scope $scope): array {
|
|
132
|
+
return fetchOrdersFromDatabase();
|
|
133
|
+
},
|
|
134
|
+
SpanContext::make()
|
|
135
|
+
->setOp('db.query')
|
|
136
|
+
->setDescription('fetch-orders')
|
|
137
|
+
);
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### Safe manual span pattern (handles no-transaction case)
|
|
141
|
+
|
|
142
|
+
```php
|
|
143
|
+
function expensiveOperation(): void
|
|
144
|
+
{
|
|
145
|
+
$parent = \Sentry\SentrySdk::getCurrentHub()->getSpan();
|
|
146
|
+
$span = null;
|
|
147
|
+
|
|
148
|
+
if ($parent !== null) {
|
|
149
|
+
$context = SpanContext::make()
|
|
150
|
+
->setOp('some_operation')
|
|
151
|
+
->setDescription('This is a description');
|
|
152
|
+
$span = $parent->startChild($context);
|
|
153
|
+
\Sentry\SentrySdk::getCurrentHub()->setSpan($span);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
try {
|
|
157
|
+
// ... do work ...
|
|
158
|
+
} finally {
|
|
159
|
+
if ($span !== null) {
|
|
160
|
+
$span->finish();
|
|
161
|
+
\Sentry\SentrySdk::getCurrentHub()->setSpan($parent);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### Span data attributes
|
|
168
|
+
|
|
169
|
+
```php
|
|
170
|
+
// At creation time
|
|
171
|
+
$spanContext = SpanContext::make()
|
|
172
|
+
->setOp('http.client')
|
|
173
|
+
->setData([
|
|
174
|
+
'http.request.method' => 'GET',
|
|
175
|
+
'http.response.status_code' => 200,
|
|
176
|
+
]);
|
|
177
|
+
|
|
178
|
+
// On an existing span
|
|
179
|
+
$span->setData(['db.system' => 'postgresql', 'db.table' => 'orders']);
|
|
180
|
+
|
|
181
|
+
// Read-modify-write
|
|
182
|
+
$span->setData([
|
|
183
|
+
'counter' => $span->getData('counter', 0) + 1,
|
|
184
|
+
]);
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### Span status
|
|
188
|
+
|
|
189
|
+
```php
|
|
190
|
+
$span->setStatus(\Sentry\Tracing\SpanStatus::createFromHttpStatusCode($response->getStatusCode()));
|
|
191
|
+
$transaction->setStatus(\Sentry\Tracing\SpanStatus::ok());
|
|
192
|
+
$transaction->setStatus(\Sentry\Tracing\SpanStatus::internalError());
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Accessing the active span/transaction
|
|
196
|
+
|
|
197
|
+
```php
|
|
198
|
+
$transaction = \Sentry\SentrySdk::getCurrentHub()->getTransaction(); // ?Transaction
|
|
199
|
+
$span = \Sentry\SentrySdk::getCurrentHub()->getSpan(); // ?Span
|
|
200
|
+
|
|
201
|
+
if ($transaction !== null) {
|
|
202
|
+
$transaction->setData(['order.type' => 'subscription']);
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Mutating all spans via `before_send_transaction`
|
|
207
|
+
|
|
208
|
+
```php
|
|
209
|
+
\Sentry\init([
|
|
210
|
+
'before_send_transaction' => function (\Sentry\Event $event, ?\Sentry\EventHint $hint): ?\Sentry\Event {
|
|
211
|
+
// Drop health-check transactions
|
|
212
|
+
if (in_array($event->getTransaction(), ['GET /up', 'GET /healthz'])) {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
// Add data to every span in the transaction
|
|
217
|
+
foreach ($event->getSpans() as $span) {
|
|
218
|
+
$span->setData(['server' => 'web-01']);
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return $event;
|
|
222
|
+
},
|
|
223
|
+
]);
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
## Auto-Instrumentation Matrix
|
|
227
|
+
|
|
228
|
+
### Plain PHP — No automatic instrumentation
|
|
229
|
+
|
|
230
|
+
The plain PHP SDK provides **zero automatic instrumentation**. Every transaction and
|
|
231
|
+
span must be created manually using the Custom Span API.
|
|
232
|
+
|
|
233
|
+
### Laravel — Auto-instrumented operations
|
|
234
|
+
|
|
235
|
+
The `Tracing\Middleware` is auto-prepended and the `Tracing\ServiceProvider` wires all
|
|
236
|
+
listeners automatically.
|
|
237
|
+
|
|
238
|
+
| Operation | Span Op | Enabled by default |
|
|
239
|
+
| -------------------------- | -------------------- | ----------------------------------------------------- |
|
|
240
|
+
| HTTP request lifecycle | `http.server` | ✅ Always |
|
|
241
|
+
| Route handler dispatch | `http.route` | ✅ Always |
|
|
242
|
+
| SQL queries | `db.sql.query` | ✅ (`tracing.sql_queries`) |
|
|
243
|
+
| DB transactions | `db.transaction` | ✅ Always |
|
|
244
|
+
| Blade view rendering | `view.render` | ✅ (`tracing.views`) |
|
|
245
|
+
| Outgoing HTTP client | `http.client` | ✅ (`tracing.http_client_requests`, Laravel ≥ 8.45) |
|
|
246
|
+
| Cache operations | `cache.*` | ✅ (`tracing.cache`, Laravel ≥ 11.11) |
|
|
247
|
+
| Queue job processing | `queue.process` | ⚙️ `tracing.queue_jobs: true` |
|
|
248
|
+
| Queue job as transaction | `queue.process` | ⚙️ `tracing.queue_job_transactions: true` |
|
|
249
|
+
| Redis commands | (redis spans) | ⚙️ `tracing.redis_commands: true` |
|
|
250
|
+
| Livewire components | (livewire spans) | ⚙️ `tracing.livewire: true` |
|
|
251
|
+
| Notifications | (notification spans) | ✅ (`tracing.notifications`) |
|
|
252
|
+
| Lighthouse GraphQL | (graphql spans) | ✅ When Lighthouse installed |
|
|
253
|
+
| Laravel Folio routes | transaction name | ✅ When Folio installed |
|
|
254
|
+
| Filesystem disk operations | (file spans) | ⚙️ Opt-in via `Storage\Integration::configureDisks()` |
|
|
255
|
+
|
|
256
|
+
```php
|
|
257
|
+
// Filesystem disk opt-in (config/filesystems.php)
|
|
258
|
+
'disks' => \Sentry\Laravel\Features\Storage\Integration::configureDisks([
|
|
259
|
+
'local' => ['driver' => 'local', 'root' => storage_path('app'), 'throw' => false],
|
|
260
|
+
's3' => ['driver' => 's3', /* ... */],
|
|
261
|
+
], enableSpans: true, enableBreadcrumbs: true),
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
### Symfony — Auto-instrumented operations
|
|
265
|
+
|
|
266
|
+
`TracingRequestListener` and other compiler-wired listeners activate automatically.
|
|
267
|
+
|
|
268
|
+
| Operation | Span Op | Origin |
|
|
269
|
+
| --------------------------------- | ---------------------- | ------------------ |
|
|
270
|
+
| HTTP main request | `http.server` | `auto.http.server` |
|
|
271
|
+
| HTTP sub-request | `http.server` | `auto.http.server` |
|
|
272
|
+
| Console command | `console.command` | `auto.console` |
|
|
273
|
+
| Outbound HTTP calls | `http.client` | `auto.http.client` |
|
|
274
|
+
| Doctrine DB query | `db.sql.query` | `auto.db` |
|
|
275
|
+
| Doctrine DB prepare | `db.sql.prepare` | `auto.db` |
|
|
276
|
+
| Doctrine DB exec | `db.sql.exec` | `auto.db` |
|
|
277
|
+
| Doctrine TX begin/commit/rollback | `db.sql.transaction.*` | `auto.db` |
|
|
278
|
+
| PSR-6 cache get/put/delete/flush | `cache.*` | `auto.cache` |
|
|
279
|
+
| Twig template rendering | `view.render` | `auto.view` |
|
|
280
|
+
|
|
281
|
+
## Distributed Tracing
|
|
282
|
+
|
|
283
|
+
Two headers carry trace context between services:
|
|
284
|
+
|
|
285
|
+
| Header | Purpose |
|
|
286
|
+
| -------------- | ----------------------------------------------------------- |
|
|
287
|
+
| `sentry-trace` | Trace ID, span ID, sampling decision (Sentry native format) |
|
|
288
|
+
| `baggage` | Dynamic sampling context (W3C baggage spec) |
|
|
289
|
+
|
|
290
|
+
> **CORS note:** Both headers must be in your CORS allowlist if browser requests are
|
|
291
|
+
> involved. Proxies and API gateways may strip unknown headers.
|
|
292
|
+
|
|
293
|
+
### Extracting incoming trace context
|
|
294
|
+
|
|
295
|
+
```php
|
|
296
|
+
$sentryTrace = $_SERVER['HTTP_SENTRY_TRACE'] ?? '';
|
|
297
|
+
$baggage = $_SERVER['HTTP_BAGGAGE'] ?? '';
|
|
298
|
+
|
|
299
|
+
// continueTrace() returns a TransactionContext pre-populated with parent trace data
|
|
300
|
+
$ctx = \Sentry\continueTrace($sentryTrace, $baggage);
|
|
301
|
+
$ctx->setName('process-payment')->setOp('task');
|
|
302
|
+
|
|
303
|
+
$transaction = \Sentry\startTransaction($ctx);
|
|
304
|
+
\Sentry\SentrySdk::getCurrentHub()->setSpan($transaction);
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
### Injecting outgoing trace headers
|
|
308
|
+
|
|
309
|
+
```php
|
|
310
|
+
// Manual header injection (e.g., Guzzle, curl, any HTTP client)
|
|
311
|
+
$headers = [
|
|
312
|
+
'sentry-trace' => \Sentry\getTraceparent(),
|
|
313
|
+
'baggage' => \Sentry\getBaggage(),
|
|
314
|
+
];
|
|
315
|
+
|
|
316
|
+
$client = new \GuzzleHttp\Client();
|
|
317
|
+
$response = $client->get('https://internal-api.example.com', [
|
|
318
|
+
'headers' => $headers,
|
|
319
|
+
]);
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Guzzle middleware (automatic header injection)
|
|
323
|
+
|
|
324
|
+
```php
|
|
325
|
+
use Sentry\Tracing\GuzzleTracingMiddleware;
|
|
326
|
+
|
|
327
|
+
$stack = \GuzzleHttp\HandlerStack::create();
|
|
328
|
+
$stack->push(GuzzleTracingMiddleware::trace());
|
|
329
|
+
|
|
330
|
+
$client = new \GuzzleHttp\Client(['handler' => $stack]);
|
|
331
|
+
$response = $client->get('https://example.com/');
|
|
332
|
+
// sentry-trace + baggage headers injected automatically; span created for the request
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
### `continueTrace()` full pattern (queue consumers, workers)
|
|
336
|
+
|
|
337
|
+
```php
|
|
338
|
+
// Continue a distributed trace from a queue job payload
|
|
339
|
+
$context = \Sentry\continueTrace(
|
|
340
|
+
$job->getMetadata('sentry_trace'),
|
|
341
|
+
$job->getMetadata('baggage')
|
|
342
|
+
);
|
|
343
|
+
$context->setOp('queue.process')->setName('App\Jobs\ProcessPayment');
|
|
344
|
+
|
|
345
|
+
$transaction = \Sentry\startTransaction($context);
|
|
346
|
+
\Sentry\SentrySdk::getCurrentHub()->setSpan($transaction);
|
|
347
|
+
|
|
348
|
+
try {
|
|
349
|
+
$job->handle();
|
|
350
|
+
} catch (\Throwable $e) {
|
|
351
|
+
$transaction->setStatus(\Sentry\Tracing\SpanStatus::internalError());
|
|
352
|
+
throw $e;
|
|
353
|
+
} finally {
|
|
354
|
+
$transaction->finish();
|
|
355
|
+
}
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### HTML meta tag injection (frontend/backend trace stitching)
|
|
359
|
+
|
|
360
|
+
Inject these tags into your HTML `<head>` so the Sentry JavaScript SDK can continue the
|
|
361
|
+
backend trace in the browser.
|
|
362
|
+
|
|
363
|
+
```php
|
|
364
|
+
// Plain PHP
|
|
365
|
+
echo sprintf('<meta name="sentry-trace" content="%s"/>', \Sentry\getTraceparent());
|
|
366
|
+
echo sprintf('<meta name="baggage" content="%s"/>', \Sentry\getBaggage());
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
```blade
|
|
370
|
+
{{-- Laravel Blade template --}}
|
|
371
|
+
{!! \Sentry\Laravel\Integration::sentryMeta() !!}
|
|
372
|
+
|
|
373
|
+
{{-- Or individually: --}}
|
|
374
|
+
{!! \Sentry\Laravel\Integration::sentryTracingMeta() !!}
|
|
375
|
+
{!! \Sentry\Laravel\Integration::sentryBaggageMeta() !!}
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
```twig
|
|
379
|
+
{# Symfony Twig template — inject via a controller variable #}
|
|
380
|
+
{{ sentry_trace_meta | raw }}
|
|
381
|
+
{{ sentry_baggage_meta | raw }}
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Framework-automatic propagation
|
|
385
|
+
|
|
386
|
+
| Framework | Incoming (extract) | Outgoing (inject) |
|
|
387
|
+
| --------- | --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
388
|
+
| Plain PHP | Manual `continueTrace()` | Manual header injection |
|
|
389
|
+
| Laravel | Auto in `Tracing\Middleware` | Auto on Laravel HTTP Client (≥ 8.45) |
|
|
390
|
+
| Symfony | Auto in `TracingRequestListener` (supports both `sentry-trace` and `traceparent`) | Auto via HTTP Client decorator (injects `sentry-trace`, `baggage`, `traceparent`) |
|
|
391
|
+
|
|
392
|
+
## Profiling
|
|
393
|
+
|
|
394
|
+
Requires the **Excimer** PHP extension (Wikimedia sampling profiler).
|
|
395
|
+
|
|
396
|
+
- Platform: **Linux or macOS only** — Windows is not supported
|
|
397
|
+
- PHP: 7.2+
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
# Install Excimer
|
|
401
|
+
apt-get install php-excimer # Debian/Ubuntu
|
|
402
|
+
pecl install excimer # PECL
|
|
403
|
+
phpenmod -s fpm excimer # Enable
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
```php
|
|
407
|
+
// Plain PHP — traces_sample_rate must be set; profiles_sample_rate is relative to it
|
|
408
|
+
\Sentry\init([
|
|
409
|
+
'dsn' => '...',
|
|
410
|
+
'traces_sample_rate' => 1.0,
|
|
411
|
+
'profiles_sample_rate' => 1.0, // profile 100% of sampled transactions
|
|
412
|
+
]);
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
```php
|
|
416
|
+
// Laravel — config/sentry.php
|
|
417
|
+
'traces_sample_rate' => 1.0,
|
|
418
|
+
'profiles_sample_rate' => 1.0,
|
|
419
|
+
```
|
|
420
|
+
|
|
421
|
+
```yaml
|
|
422
|
+
# Symfony — config/packages/sentry.yaml
|
|
423
|
+
sentry:
|
|
424
|
+
options:
|
|
425
|
+
traces_sample_rate: 1.0
|
|
426
|
+
profiles_sample_rate: 1.0
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
`profiles_sample_rate` is a **ratio of already-sampled transactions**:
|
|
430
|
+
|
|
431
|
+
```
|
|
432
|
+
Effective profiling rate = traces_sample_rate × profiles_sample_rate
|
|
433
|
+
|
|
434
|
+
Examples:
|
|
435
|
+
0.5 × 0.5 = 25% of all requests profiled
|
|
436
|
+
1.0 × 1.0 = 100% of all requests profiled
|
|
437
|
+
0.1 × 1.0 = 10% of all requests profiled
|
|
438
|
+
```
|
|
439
|
+
|
|
440
|
+
## Framework-Specific Notes
|
|
441
|
+
|
|
442
|
+
### Plain PHP
|
|
443
|
+
|
|
444
|
+
- Zero automatic instrumentation — create every transaction and span manually
|
|
445
|
+
- Call `\Sentry\flush()` before process exit in CLI scripts to ensure buffered data is
|
|
446
|
+
sent
|
|
447
|
+
- For queue workers and long-running processes, start a transaction per job with
|
|
448
|
+
`continueTrace()` to preserve distributed trace context
|
|
449
|
+
|
|
450
|
+
### Laravel
|
|
451
|
+
|
|
452
|
+
- `Tracing\Middleware` is **auto-prepended** by `Tracing\ServiceProvider` — do not add
|
|
453
|
+
it manually
|
|
454
|
+
- Transaction start time is backdated to Laravel boot via `setBootedTimestamp()` —
|
|
455
|
+
captures full request duration including framework startup
|
|
456
|
+
- `missing_routes: false` (default) discards 404/unmatched route transactions; set to
|
|
457
|
+
`true` to trace them
|
|
458
|
+
- `config:cache` breaks if `traces_sampler` is a closure — use a class/callable string
|
|
459
|
+
or only set it at runtime
|
|
460
|
+
- Queue tracing: `tracing.queue_jobs: true` creates spans;
|
|
461
|
+
`tracing.queue_job_transactions: true` creates standalone transactions with
|
|
462
|
+
distributed trace propagation using payload keys `sentry_trace_parent_data` /
|
|
463
|
+
`sentry_baggage_data`
|
|
464
|
+
- On **Octane**: FastCGI terminable middleware dispatches spans after response — no
|
|
465
|
+
user-visible latency.
|
|
466
|
+
Without FastCGI, use a local Relay proxy
|
|
467
|
+
|
|
468
|
+
### Symfony
|
|
469
|
+
|
|
470
|
+
- `TracingRequestListener` accepts both `sentry-trace` (Sentry) and `traceparent` (W3C)
|
|
471
|
+
headers for incoming distributed traces
|
|
472
|
+
- HTTP Client decorator injects three outgoing headers: `sentry-trace`, `baggage`,
|
|
473
|
+
`traceparent`
|
|
474
|
+
- Console commands are auto-traced by `TracingConsoleListener` — creates a root
|
|
475
|
+
transaction if none is active, otherwise creates a child span
|
|
476
|
+
- Messenger integration is **error-capture only** (via `MessengerListener`) — no tracing
|
|
477
|
+
spans for queue messages
|
|
478
|
+
- FastCGI: spans are sent after response via `kernel.terminate`. Without FastCGI, use a
|
|
479
|
+
local Relay proxy
|
|
480
|
+
|
|
481
|
+
## Span Ops Reference
|
|
482
|
+
|
|
483
|
+
| `op` | What it tracks |
|
|
484
|
+
| ---------------------------------------------------- | ------------------------------------ |
|
|
485
|
+
| `http.server` | Incoming HTTP request |
|
|
486
|
+
| `http.client` | Outgoing HTTP request |
|
|
487
|
+
| `http.route` | Controller/action dispatch (Laravel) |
|
|
488
|
+
| `db.sql.query` | SQL query execution |
|
|
489
|
+
| `db.sql.prepare` | SQL prepare (Symfony) |
|
|
490
|
+
| `db.sql.exec` | SQL exec (Symfony) |
|
|
491
|
+
| `db.sql.execute` | Statement execute (Symfony) |
|
|
492
|
+
| `db.sql.transaction.begin` / `.commit` / `.rollback` | DB transaction lifecycle (Symfony) |
|
|
493
|
+
| `db.transaction` | DB transaction (Laravel) |
|
|
494
|
+
| `view.render` | Template rendering (Blade / Twig) |
|
|
495
|
+
| `cache.get` | Cache read |
|
|
496
|
+
| `cache.put` | Cache write |
|
|
497
|
+
| `cache.remove` | Cache delete |
|
|
498
|
+
| `cache.flush` | Cache clear |
|
|
499
|
+
| `queue.publish` | Job enqueue |
|
|
500
|
+
| `queue.process` | Job processing |
|
|
501
|
+
| `console.command` | CLI command (Symfony) |
|
|
502
|
+
|
|
503
|
+
## Troubleshooting
|
|
504
|
+
|
|
505
|
+
| Issue | Solution |
|
|
506
|
+
| --------------------------------------- | -------------------------------------------------------------------------------------------------------------------------- |
|
|
507
|
+
| No transactions appearing | Verify `traces_sample_rate > 0` or `traces_sampler` returns non-zero; confirm SDK is initialized before request handling |
|
|
508
|
+
| Spans not linked to transaction | Ensure spans are created inside an active transaction; call `setSpan($transaction)` on the hub after `startTransaction()` |
|
|
509
|
+
| Distributed traces broken | Verify `sentry-trace` and `baggage` headers pass through proxies, load balancers, and CORS middleware |
|
|
510
|
+
| `traces_sampler` ignored in Laravel | Closures break `config:cache`; use an invokable class or only configure at runtime (not in config file) |
|
|
511
|
+
| `traces_sampler` not working in Symfony | Must be a service factory — closures can’t be serialized. Register as a service and reference by ID |
|
|
512
|
+
| Missing route transactions in Laravel | Set `tracing.missing_routes: true` in sentry config (default is `false` — 404s are discarded) |
|
|
513
|
+
| No profiling data | Confirm Excimer extension is installed (`php -m \| grep excimer`); Windows not supported; `traces_sample_rate` must be set |
|
|
514
|
+
| High response latency from tracing | Use FastCGI (terminable middleware) or deploy a local Relay proxy to make uploads async |
|
|
515
|
+
| Queue jobs not traced | Set `tracing.queue_jobs: true`; for standalone transactions also set `tracing.queue_job_transactions: true` |
|
|
516
|
+
| HTML meta tags show empty values | Call `getTraceparent()` / `getBaggage()` inside an active transaction; outside a transaction these return empty strings |
|