Systematic procedures for responding to and resolving Gamma integration incidents.
| Level | Description | Response Time | Escalation |
|---|---|---|---|
| P1 | Complete outage, no presentations | < 15 min | Immediate |
| P2 | Degraded, slow or partial failures | < 30 min | 1 hour |
| P3 | Minor issues, workaround available | < 2 hours | 4 hours |
| P4 | Cosmetic or non-urgent | < 24 hours | None |
set -euo pipefail
# Check Gamma status page
curl -s https://status.gamma.app/api/v2/status.json | jq '.status'
# Check our integration health
curl -s https://your-app.com/health/gamma | jq '.'
# Quick connectivity test
curl -w "\nTime: %{time_total}s\n" \
-H "Authorization: Bearer $GAMMA_API_KEY" \
https://api.gamma.app/v1/ping
set -euo pipefail
# Check error rate (Prometheus)
curl -s 'http://prometheus:9090/api/v1/query?query=rate(gamma_requests_total{status=~"5.."}[5m])' | jq '.data.result' # 9090: Prometheus port
# Check latency P95
curl -s 'http://prometheus:9090/api/v1/query?query=histogram_quantile(0.95,rate(gamma_request_duration_seconds_bucket[5m]))' | jq '.data.result' # Prometheus port
# Check rate limit
curl -s 'http://prometheus:9090/api/v1/query?query=gamma_rate_limit_remaining' | jq '.data.result' # Prometheus port
# Last 100 error logs
grep -i "gamma.*error" /var/log/app/gamma-*.log | tail -100
# Rate limit hits
grep "429" /var/log/app/gamma-*.log | wc -l # HTTP 429 Too Many Requests
# Timeout errors
grep -i "timeout" /var/log/app/gamma-*.log | tail -50
Symptoms:
Actions:
Verify Gamma status: https://status.gamma.app
If Gamma outage confirmed:
If Gamma is operational:
# Check our request patterns
grep "5[0-9][0-9]" /var/log/app/gamma-*.log | \
awk '{print $1}' | sort | uniq -c | sort -rn
# Look for malformed requests
grep -B5 "500" /var/log/app/gamma-*.log | grep "request"
Rollback recent deployments if issue correlates
Symptoms:
Actions:
Immediate mitigation:
# Enable request throttling
curl -X POST http://localhost:8080/admin/throttle \
-d '{"gamma": {"rps": 10}}'
Check for runaway processes:
# Find high-volume clients
grep "gamma" /var/log/app/*.log | \
awk '{print $5}' | sort | uniq -c | sort -rn | head -20
Enable circuit breaker:
curl -X POST http://localhost:8080/admin/circuit-breaker \
-d '{"service": "gamma", "state": "open"}'
Long-term: Review rate limit tier with Gamma
Symptoms:
Actions:
Check Gamma latency vs our latency:
# Direct Gamma latency
for i in {1..5}; do
curl -w "%{time_total}\n" -o /dev/null -s \
-H "Authorization: Bearer $GAMMA_API_KEY" \
https://api.gamma.app/v1/ping
done
If Gamma is slow:
If our infrastructure is slow:
Symptoms:
Actions:
Verify API key:
# Test key directly
curl -H "Authorization: Bearer $GAMMA_API_KEY" \
https://api.gamma.app/v1/ping
# Check key format
echo $GAMMA_API_KEY | head -c 20
If key is invalid:
GAMMA_API_KEY_SECONDARY
Notify team and update secrets
INCIDENT: Gamma Integration Issue
Severity: P[X]
Status: Investigating / Identified / Mitigating / Resolved
Impact: [Description of user impact]
Start Time: [ISO timestamp]
Summary: [Brief description]
Current Actions:
- [Action 1]
- [Action 2]
Next Update: [Time]
We're currently experiencing issues with presentation generation.
Our team is actively working to resolve this.
Workaround: [If available]
Status updates: [Link to status page]
ETA: [If known]
Proceed to gamma-data-handling for data management.
| Error | Cause | Resolution |
|---|---|---|
| Authentication failure | Invalid or expired credentials | Refresh tokens or re-authenticate with Gamma |
| Configuration conflict | Incompatible settings detected | Review and resolve conflicting parameters |
| Resource not found | Referenced resource missing | Verify resource exists and permissions are correct |
Basic usage: Apply gamma incident runbook to a standard project setup with default configuration options.
Advanced scenario: Customize gamma incident runbook for production environments with multiple constraints and team-specific requirements.