-
-
Notifications
You must be signed in to change notification settings - Fork 1
Event Filtering
Jean-Marc Strauven edited this page Aug 6, 2025
·
2 revisions
Learn how to effectively filter, analyze, and understand different types of events captured by ChronoTrace.
ChronoTrace captures comprehensive event data across multiple categories:
- π Database Events - SQL queries, transactions, connections, bindings
- ποΈ Cache Events - Hits, misses, writes, deletions, store operations
- π HTTP Events - External API calls, responses, failures, timeouts
Filter database events to focus on specific aspects of your application's data layer:
# Show only database events
php artisan chronotrace:replay {trace-id} --filter=database
# Show only slow database queries (>100ms)
php artisan chronotrace:replay {trace-id} --filter=database --min-duration=100
# Show database events with specific patterns
php artisan chronotrace:replay {trace-id} --filter=database --search="users"# Example database event output
ββ DATABASE EVENTS (8 queries, 145ms total) βββββββββββββββββββ
β [+0ms] SELECT * FROM users WHERE id = ? [123] (5ms)
β Connection: mysql, Rows: 1
β
β [+15ms] SELECT * FROM posts WHERE user_id = ? [123] (25ms)
β Connection: mysql, Rows: 50
β
β [+45ms] SELECT * FROM comments WHERE post_id IN (?, ?, ...) (85ms) β οΈ
β Connection: mysql, Rows: 1,500
β
β [+135ms] UPDATE users SET last_seen = ? WHERE id = ? (5ms)
β Connection: mysql, Affected: 1
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββWhat to look for:
β οΈ Slow queries (>100ms) - Usually indicate missing indexes- π N+1 patterns - Multiple similar queries in sequence
- π Large result sets - High row counts may need pagination
- π Connection issues - Multiple connections when one should suffice
# Filter by query type
php artisan chronotrace:replay {trace-id} --filter=database --query-type=select
php artisan chronotrace:replay {trace-id} --filter=database --query-type=insert,update
# Filter by table
php artisan chronotrace:replay {trace-id} --filter=database --table=users,posts
# Filter by connection
php artisan chronotrace:replay {trace-id} --filter=database --connection=mysql,pgsql# Show only cache events
php artisan chronotrace:replay {trace-id} --filter=cache
# Show cache misses only
php artisan chronotrace:replay {trace-id} --filter=cache --cache-result=miss
# Show cache operations on specific keys
php artisan chronotrace:replay {trace-id} --filter=cache --search="user:"# Example cache event output
ββ CACHE EVENTS (6 operations) ββββββββββββββββββββββββββββββββ
β [+25ms] GET user:123:profile (HIT)
β Store: redis, TTL: 3600s, Size: 2.1KB
β
β [+35ms] GET products:featured (MISS) β οΈ
β Store: redis, Fallback to database
β
β [+180ms] SET products:featured (TTL: 1800s, Size: 15.6KB)
β Store: redis, Operation: 12ms
β
β [+195ms] GET shipping:rates:90210 (HIT)
β Store: redis, TTL: 7200s, Size: 890B
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββWhat to look for:
β οΈ Cache misses followed by expensive operations- π Cache stampeding - Multiple misses for same key
- β° TTL optimization - Keys expiring too quickly/slowly
- π Large cache values - May indicate inefficient caching
# Analyze cache hit rates
php artisan chronotrace:replay {trace-id} --filter=cache --stats
# Expected output:
Cache Statistics:
- Total Operations: 15
- Cache Hits: 12 (80%)
- Cache Misses: 3 (20%)
- Average Operation Time: 3ms
- Total Cache Size: 45.7KB# Show only HTTP events
php artisan chronotrace:replay {trace-id} --filter=http
# Show failed HTTP requests only
php artisan chronotrace:replay {trace-id} --filter=http --status=4xx,5xx
# Show slow HTTP requests (>1 second)
php artisan chronotrace:replay {trace-id} --filter=http --min-duration=1000# Example HTTP event output
ββ HTTP EVENTS (3 requests) ββββββββββββββββββββββββββββββββββββ
β [+78ms] POST https://api.stripe.com/v1/charges (1,234ms)
β Status: 200 OK
β Request: 2.1KB, Response: 890B
β Connection: 45ms, DNS: 12ms
β
β [+1,350ms] GET https://api.shipping.com/rates (2,156ms) β οΈ
β Status: 200 OK
β Request: 456B, Response: 1.2KB
β Connection: 1,200ms (slow), DNS: 15ms
β
β [+3,520ms] POST https://webhook.example.com/notify (567ms)
β Status: 200 OK
β Request: 1.8KB, Response: 125B
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββWhat to look for:
β οΈ Slow connections - High connection time indicates network issues- π Failed requests - 4xx/5xx status codes
- β° Timeout patterns - Requests approaching timeout limits
- π Large payloads - Oversized requests/responses
# Focus on failed requests
php artisan chronotrace:replay {trace-id} --filter=http --status=error
# Show timeout issues
php artisan chronotrace:replay {trace-id} --filter=http --min-duration=30000
# Filter by specific hosts
php artisan chronotrace:replay {trace-id} --filter=http --host="api.stripe.com"# Show only job events
php artisan chronotrace:replay {trace-id} --filter=jobs
# Show failed jobs only
php artisan chronotrace:replay {trace-id} --filter=jobs --status=failed
# Show jobs from specific queues
php artisan chronotrace:replay {trace-id} --filter=jobs --queue=emails,payments# Example job event output
ββ QUEUE EVENTS (4 jobs) βββββββββββββββββββββββββββββββββββββββ
β [+195ms] DISPATCH SendWelcomeEmail
β Queue: emails, Delay: 0s, Tries: 3
β Payload: {"user_id": 123, "template": "welcome"}
β
β [+200ms] DISPATCH ProcessPayment
β Queue: payments, Delay: 5s, Tries: 5
β Payload: {"order_id": 789, "amount": 99.99}
β
β [+205ms] DISPATCH UpdateInventory
β Queue: default, Delay: 0s, Tries: 1
β Payload: {"product_id": 456, "quantity": -2}
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ# Combine multiple event types
php artisan chronotrace:replay {trace-id} --filter=database,http
php artisan chronotrace:replay {trace-id} --filter=cache,jobs
# Show all events but filter by duration
php artisan chronotrace:replay {trace-id} --min-duration=50
# Complex filtering
php artisan chronotrace:replay {trace-id} --filter=database,http --min-duration=100 --search="payment"# Identify performance bottlenecks across event types
php artisan chronotrace:replay {trace-id} --performance-analysis
# Expected output:
Performance Breakdown:
- Database: 145ms (32% of total)
- HTTP: 289ms (64% of total) β οΈ Bottleneck
- Cache: 8ms (2% of total)
- Jobs: 12ms (3% of total)
Recommendations:
- Optimize HTTP calls to external APIs
- Consider caching API responses
- Implement timeout strategies# Find N+1 query patterns
php artisan chronotrace:replay {trace-id} --detect-n-plus-one
# Identify cache stampeding
php artisan chronotrace:replay {trace-id} --detect-cache-stampede
# Find slow operation chains
php artisan chronotrace:replay {trace-id} --detect-slow-chains# Use grep-like patterns
php artisan chronotrace:replay {trace-id} --filter=database --grep="SELECT.*users"
php artisan chronotrace:replay {trace-id} --filter=http --grep="stripe\.com"
# Exclude specific patterns
php artisan chronotrace:replay {trace-id} --filter=database --exclude="session"# Show events in specific time ranges
php artisan chronotrace:replay {trace-id} --time-range=0-100ms
php artisan chronotrace:replay {trace-id} --time-range=100ms-500ms
# Show events before/after specific timestamp
php artisan chronotrace:replay {trace-id} --before=100ms
php artisan chronotrace:replay {trace-id} --after=200ms# 1. First, see the complete picture
php artisan chronotrace:replay {trace-id}
# 2. Identify the problem area
php artisan chronotrace:replay {trace-id} --min-duration=100
# 3. Focus on specific event types
php artisan chronotrace:replay {trace-id} --filter=database --min-duration=50# Focus on slow operations first
php artisan chronotrace:replay {trace-id} --min-duration=100
# Then drill down by event type
php artisan chronotrace:replay {trace-id} --filter=http --min-duration=1000# Database performance issues
php artisan chronotrace:replay {trace-id} --filter=database --min-duration=50 --search="SELECT"
# API integration problems
php artisan chronotrace:replay {trace-id} --filter=http --status=error,timeout
# Cache efficiency analysis
php artisan chronotrace:replay {trace-id} --filter=cache --cache-result=miss# Create aliases for common patterns
alias ct-db-slow="php artisan chronotrace:replay \$1 --filter=database --min-duration=100"
alias ct-api-errors="php artisan chronotrace:replay \$1 --filter=http --status=error"
alias ct-cache-analysis="php artisan chronotrace:replay \$1 --filter=cache --stats"
# Usage
ct-db-slow abc123def456
ct-api-errors abc123def456# 1. Find the bottleneck
php artisan chronotrace:replay {trace-id} --performance-analysis
# 2. Focus on the slow area
php artisan chronotrace:replay {trace-id} --filter=http --min-duration=1000
# 3. Analyze patterns
php artisan chronotrace:replay {trace-id} --filter=http --detect-timeout-patterns# 1. Check for N+1 queries
php artisan chronotrace:replay {trace-id} --filter=database --detect-n-plus-one
# 2. Find slow queries
php artisan chronotrace:replay {trace-id} --filter=database --min-duration=100
# 3. Analyze query patterns
php artisan chronotrace:replay {trace-id} --filter=database --search="SELECT.*WHERE.*IN"# 1. Check cache efficiency
php artisan chronotrace:replay {trace-id} --filter=cache --stats
# 2. Find cache misses
php artisan chronotrace:replay {trace-id} --filter=cache --cache-result=miss
# 3. Look for stampeding
php artisan chronotrace:replay {trace-id} --detect-cache-stampede- Understanding Traces - Learn trace structure and content
- Event Capturing - Configure what events to capture
- Commands - Complete command reference
- Performance Analysis - Advanced analysis techniques
Master event filtering to quickly identify and solve issues! Use these filtering techniques to focus on specific problems and reduce noise in your trace analysis.
- Getting Started - Install and configure ChronoTrace
- Examples - Real-world debugging scenarios
- Production Guide - Deploy safely in production
- Troubleshooting - Solve common issues
| Section | Page | Description |
|---|---|---|
| π Basics | Your First Trace | Step-by-step beginner guide |
| ποΈ Config | Recording Modes | Choose when to record traces |
| π‘οΈ Security | Security & PII | Protect sensitive data |
| π§ Tools | Commands | Complete command reference |
- π¬ GitHub Discussions - Community support
- π Report Issues - Bug reports & feature requests
- π§ Contact - Direct support
- π‘ Feature Requests - Suggest improvements
ChronoTrace helps Laravel developers debug applications faster with intelligent request tracing.
Made with β€οΈ by Grazulex β’ Documentation updated August 2024