sentry-reliability-patterns
Adds fault-tolerance to Sentry error tracking to prevent application crashes during logging outages.
Install
mkdir -p .claude/skills/sentry-reliability-patterns && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/8416" && unzip -o skill.zip -d .claude/skills/sentry-reliability-patterns && rm skill.zipInstalls to .claude/skills/sentry-reliability-patterns
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Build reliable Sentry integrations with graceful degradation, circuitKey capabilities
- →Wrap Sentry initialization in try/catch blocks
- →Implement circuit breakers for Sentry outages
- →Buffer events in an offline file-based queue
- →Register signal handlers for graceful shutdown
- →Add retry logic with exponential backoff
How it works
It uses a circuit breaker to stop sending events during outages and an offline queue to buffer events until connectivity is restored.
Inputs & outputs
When to use sentry-reliability-patterns
- →Prevent SDK init failures from crashing the app
- →Implement Sentry offline error queuing
- →Add circuit breakers for error tracking
- →Ensure graceful degradation when Sentry is down
About this skill
Sentry Reliability Patterns
Overview
Build Sentry integrations that never take your application down via three pillars: safe initialization with graceful degradation, a circuit breaker that stops hammering Sentry when unreachable, and an offline event queue that buffers errors during outages. Every pattern prioritizes application uptime over telemetry completeness.
Prerequisites
@sentry/nodev8+ (TypeScript) orsentry-sdkv2+ (Python)- A valid Sentry DSN from project settings at
sentry.io - A fallback logging destination decided (console, file, or external logger)
- Understanding of your application shutdown lifecycle (signal handlers, container orchestration)
Instructions
Step 1 — Safe Initialization with Graceful Degradation
Wrap Sentry.init() in try/catch so an invalid DSN, network error, or SDK bug never crashes the app. Track initialization state with a boolean flag. Protect beforeSend callbacks with their own error boundary.
Create lib/sentry-safe.ts with initSentrySafe() and captureError(). See graceful-degradation.md for full implementation.
Key rules:
- Never let
Sentry.init()crash the process — wrap in try/catch, setsentryAvailable = falseon failure - Verify client creation with
Sentry.getClient()— invalid DSNs silently produce no client - Always log errors locally as baseline before attempting Sentry capture
- Wrap user-supplied
beforeSendhooks in nested try/catch — return raw event on hook failure
Step 2 — Circuit Breaker for Sentry Outages
When Sentry is unreachable, continued attempts waste resources and add latency. Track consecutive failures and trip open after a threshold. After cooldown, enter half-open state and send a single probe.
Implement SentryCircuitBreaker class with closed/open/half-open states. See circuit-breaker-pattern.md for full implementation. Expose state via health-checks.md endpoint.
Key rules:
- Default: 5 failures to trip open, 60-second cooldown before half-open probe
- In open state, skip Sentry calls entirely and log to fallback
- On half-open success, reset to closed with zero failure count
- Expose
getStatus()for health check endpoints and monitoring dashboards
Step 3 — Offline Queue, Custom Transport, and Graceful Shutdown
Buffer events when network is unavailable and replay on reconnect. Use bounded file-based queue to survive restarts. Pair with signal handlers that flush via Sentry.close() before process exit.
Implement three modules:
lib/sentry-offline-queue.ts—enqueueEvent()anddrainQueue(). See network-failure-handling.mdlib/sentry-transport.ts— Custom transport with exponential backoff retry. See timeout-handling.mdlib/sentry-shutdown.ts—SIGTERM/SIGINThandlers callingSentry.close(2000). See timeout-handling.md
Key rules:
- Cap offline queue at 1000 events, evict oldest when full
- Drain queue on startup and when connectivity restores
- Call
Sentry.close(timeout)beforeprocess.exit()— without it, in-flight events are silently dropped - For critical errors, use dual-write-pattern.md to send to multiple destinations via
Promise.allSettled
Output
- Safe init wrapper catching SDK failures, starting app in degraded mode
captureError()with automatic fallback to local logging- Circuit breaker stopping sends after repeated failures, self-healing after cooldown
- Health check endpoint exposing SDK status and circuit breaker state
- File-based offline queue buffering events during outages, draining on reconnect
- Signal handlers flushing in-flight events before process exit
- Custom transport with exponential-backoff retry logic
Error Handling
| Error | Cause | Solution |
|---|---|---|
App crashes on Sentry.init() | Invalid DSN or SDK bug | Wrap in try/catch via initSentrySafe() |
Events lost on SIGTERM | No Sentry.close() before exit | Register signal handlers with Sentry.close(2000) |
| Sentry outage cascades latency | Every error path hits Sentry HTTP | Circuit breaker trips after 5 failures |
| Events lost during network blip | SDK drops events silently | Retry transport + offline queue |
| Silent event loss | SDK fails without throwing | Health check probes with captureMessage + flush |
| Queue grows unbounded | Never drained, Sentry permanently down | Cap at 1000 events, drain on startup |
beforeSend crashes pipeline | User hook throws | Nested try/catch, return raw event |
See errors.md for extended troubleshooting.
Examples
See examples.md for complete TypeScript and Python integration examples including full-stack wiring of all three patterns.
Resources
- Sentry JS Configuration —
beforeSend,sampleRate, init options - Custom Transports — retry and offline transports
- Shutdown & Draining —
Sentry.close()andSentry.flush() - Sentry Python SDK —
sentry_sdk.init(),flush(), scope management - Sentry Status Page — monitor platform outages
Next Steps
- Emit circuit breaker state changes to observability platform (Datadog, Prometheus) for outage alerting
- Set up periodic
drainQueue()viasetInterval(Node) or cron (Python) instead of startup-only - Apply retry transport pattern to Python via
sentry_sdk.init(transport=...)parameter - Test failure modes in staging — simulate Sentry failures with
beforeSendto verify circuit breaker behavior - Add dual-write for P0/fatal errors to secondary destinations (CloudWatch, PagerDuty)
Prerequisites
Limitations
- →Offline queue capped at 1000 events
- →Circuit breaker trips after 5 failures
How it compares
This pattern prevents telemetry failures from crashing the application by using defensive initialization and local fallback logging.
Compared to similar skills
sentry-reliability-patterns side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| sentry-reliability-patterns (this skill) | 0 | 27d | Review | Advanced |
| qa-tester | 29 | 9mo | No flags | Intermediate |
| analyzing-logs | 14 | 27d | Review | Beginner |
| home-assistant-manager | 9 | 8mo | Review | Advanced |
Try saying
Example prompts that trigger this skill in your AI assistant.
More by jeremylongshore
View all by jeremylongshore →You might also like
qa-tester
svilupp
Browser automation QA testing skill. Systematically tests web applications for functionality, security, and usability issues. Reports findings by severity (CRITICAL/HIGH/MEDIUM/LOW) with immediate alerts for critical failures.
analyzing-logs
jeremylongshore
Analyze application logs to detect performance issues, identify error patterns, and improve stability by extracting key insights.
home-assistant-manager
komal-SkyNET
Expert-level Home Assistant configuration management with efficient deployment workflows (git and rapid scp iteration), remote CLI access via SSH and hass-cli, automation verification protocols, log analysis, reload vs restart optimization, and comprehensive Lovelace dashboard management for tablet-optimized UIs. Includes template patterns, card types, debugging strategies, and real-world examples.
distributed-tracing
wshobson
Implement distributed tracing with Jaeger and Tempo to track requests across microservices and identify performance bottlenecks. Use when debugging microservices, analyzing request flows, or implementing observability for distributed systems.
service-mesh-observability
wshobson
Implement comprehensive observability for service meshes including distributed tracing, metrics, and visualization. Use when setting up mesh monitoring, debugging latency issues, or implementing SLOs for service communication.
sentry
openai
Use when the user asks to inspect Sentry issues or events, summarize recent production errors, or pull basic Sentry health data via the Sentry API; perform read-only queries with the bundled script and require `SENTRY_AUTH_TOKEN`.