sentry-setup-tracing

Setup Sentry Tracing (Performance Monitoring) in any project. Use when asked to enable tracing, track transactions/spans, measure latency, or add performance monitoring. Supports JavaScript, Python, and Ruby.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "sentry-setup-tracing" with this command: npx skills add jaffrepaul/agent-skills/jaffrepaul-agent-skills-sentry-setup-tracing

Setup Sentry Tracing

Configure Sentry's performance monitoring to track transactions and spans.

Invoke This Skill When

  • User asks to "enable tracing" or "add performance monitoring"
  • User wants to track API response times, page loads, or latency
  • User asks about tracesSampleRate or custom spans

Important: The SDK versions, API names, and code samples below are examples. Always verify against docs.sentry.io before implementing, as APIs and minimum versions may have changed.

Quick Reference

PlatformMin SDKEnableCustom Span
JS/Browser9.0.0+tracesSampleRate + browserTracingIntegration()Sentry.startSpan()
Next.js9.0.0+tracesSampleRate in each runtime config fileSentry.startSpan()
Node.js9.0.0+tracesSampleRateSentry.startSpan()
Python0.11.2+traces_sample_rate@sentry_sdk.trace or start_span()
Ruby5.0.0+traces_sample_rateSentry.with_child_span()

JavaScript Setup

Enable tracing

Sentry.init({
  dsn: "YOUR_DSN",
  tracesSampleRate: 1.0,  // 1.0 = 100%, lower for production
  integrations: [Sentry.browserTracingIntegration()],  // Browser/React only
  tracePropagationTargets: ["localhost", /^https:\/\/api\./],
});

Custom spans

// Async operation
const result = await Sentry.startSpan(
  { name: "fetch-user", op: "http.client" },
  async () => {
    return await fetch("/api/user").then(r => r.json());
  }
);

// Nested spans
await Sentry.startSpan({ name: "checkout", op: "transaction" }, async () => {
  await Sentry.startSpan({ name: "validate", op: "validation" }, validateCart);
  await Sentry.startSpan({ name: "payment", op: "payment" }, processPayment);
});

Dynamic sampling

tracesSampler: ({ name, inheritOrSampleWith }) => {
  if (name.includes("healthcheck")) return 0;
  if (name.includes("checkout")) return 1.0;
  return inheritOrSampleWith(0.1);  // Respects parent sampling decision, falls back to 0.1
},

Python Setup

Enable tracing

sentry_sdk.init(
    dsn="YOUR_DSN",
    traces_sample_rate=1.0,
)

Custom spans

# Decorator
@sentry_sdk.trace
def expensive_function():
    return do_work()

# Context manager
with sentry_sdk.start_span(name="process-order", op="task") as span:
    span.set_data("order.id", order_id)
    process(order_id)

Dynamic sampling

from sentry_sdk.types import SamplingContext

def traces_sampler(sampling_context: SamplingContext) -> float:
    name = sampling_context.get("transaction_context", {}).get("name", "")
    parent_sampled = sampling_context.get("parent_sampled")
    if "healthcheck" in name: return 0
    if "checkout" in name: return 1.0
    if parent_sampled is not None: return float(parent_sampled)  # Respect parent decision
    return 0.1

sentry_sdk.init(dsn="YOUR_DSN", traces_sampler=traces_sampler)

Ruby Setup

Sentry.init do |config|
  config.dsn = "YOUR_DSN"
  config.traces_sample_rate = 1.0
end

Common Operation Types

op ValueUse Case
http.clientOutgoing HTTP
http.serverIncoming HTTP
db / db.queryDatabase
cacheCache operations
queue.taskBackground jobs
functionFunction calls

Sampling Recommendations

TrafficRate
Development1.0
Low (<1K req/min)0.5 - 1.0
Medium (1K-10K)0.1 - 0.5
High (>10K)0.01 - 0.1

Distributed Tracing

Configure tracePropagationTargets to send trace headers to your APIs:

tracePropagationTargets: ["localhost", "https://api.yourapp.com"],

For Next.js 14 App Router, add to root layout (not needed in Next.js 15+):

export function generateMetadata(): Metadata {
  return { other: { ...Sentry.getTraceData() } };
}

Verification

After enabling tracing, trigger a traced operation (e.g., an HTTP request) and check the Sentry Performance dashboard for transactions. Custom spans should appear nested under the parent transaction.

Troubleshooting

IssueSolution
Transactions not appearingCheck tracesSampleRate > 0, verify DSN
Browser traces missingAdd browserTracingIntegration()
Distributed traces disconnectedCheck tracePropagationTargets, CORS headers
Too many transactionsLower sample rate, use tracesSampler to filter

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

sentry-pr-code-review

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

sentry-python-setup

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

sentry-setup-tracing

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

sentry-otel-exporter-setup

No summary provided by upstream source.

Repository SourceNeeds Review