@stacksleuth/redis-agent
v0.2.4
Published
Advanced Redis performance monitoring agent - Command-level tracking, memory usage analysis, connection pooling optimization, slow query detection, and real-time cache performance metrics.
Maintainers
Readme
@stacksleuth/redis-agent
StackSleuth Redis Agent
🚀 What is StackSleuth Redis Agent?
Advanced Redis performance monitoring agent - Command-level tracking, memory usage analysis, connection pooling optimization, slow query detection, and real-time cache performance metrics.
✨ Key Features
- 🔴 Command-level Tracking: Individual Redis command performance
- 💾 Memory Usage Analysis: Redis memory optimization insights
- 🔗 Connection Pool Monitoring: Connection efficiency tracking
- 🐌 Slow Query Detection: Automatic slow command identification
- 📊 Cache Hit/Miss Metrics: Cache performance optimization
- 🔄 Real-time Monitoring: Live Redis performance insights
- ⚡ Multiple Client Support: Redis, ioredis, node_redis support
- 🎯 Custom Metrics: Application-specific Redis monitoring
📦 Installation
# npm
npm install @stacksleuth/redis-agent
# yarn
yarn add @stacksleuth/redis-agent
# pnpm
pnpm add @stacksleuth/redis-agentyarn add @stacksleuth/redis-agentpnpm add @stacksleuth/redis-agent🏁 Quick Start
import Redis from 'ioredis';
import { RedisAgent } from '@stacksleuth/redis-agent';
// Initialize Redis client
const redis = new Redis({
host: 'localhost',
port: 6379
});
// Initialize Redis agent
const agent = new RedisAgent({
enabled: true,
monitorCommands: true,
trackMemory: true,
slowQueryThreshold: 100 // ms
});
// Start monitoring
agent.startMonitoring();
// Instrument Redis client
agent.instrumentClient(redis);
// Your Redis operations are now monitored
await redis.set('key', 'value');
const value = await redis.get('key');📖 Comprehensive Examples
Redis Monitoring Setup
import Redis from 'ioredis';
import { RedisAgent } from '@stacksleuth/redis-agent';
// Initialize Redis client
const redis = new Redis({
host: 'localhost',
port: 6379
});
// Initialize Redis agent
const agent = new RedisAgent({
enabled: true,
monitorCommands: true,
trackMemory: true,
slowQueryThreshold: 100
});
// Start monitoring
agent.startMonitoring();
// Instrument Redis client
agent.instrumentClient(redis);
// Your Redis operations are now monitored
await redis.set('user:123', JSON.stringify(userData));
const user = await redis.get('user:123');Cache Performance Tracking
// Track cache hit/miss rates
class CacheService {
async get(key) {
const value = await redis.get(key);
// Track cache metrics
agent.recordMetric(value ? 'cache.hit' : 'cache.miss', 1, {
keyPattern: key.split(':')[0]
});
return value;
}
async set(key, value, ttl = 3600) {
await redis.setex(key, ttl, value);
agent.recordMetric('cache.set', 1, {
ttl,
keyPattern: key.split(':')[0]
});
}
}🎯 Real-World Usage
Production Configuration
const agent = new RedisAgent({
enabled: process.env.NODE_ENV === 'production',
projectId: process.env.STACKSLEUTH_PROJECT_ID,
apiKey: process.env.STACKSLEUTH_API_KEY,
sampleRate: process.env.NODE_ENV === 'production' ? 0.01 : 0.1,
bufferSize: 1000,
flushInterval: 10000
});Monitoring Best Practices
- Sampling Rate: Use lower sampling rates (1-5%) in production
- Buffer Management: Configure appropriate buffer sizes for your traffic
- Error Handling: Always include error context in your monitoring
- Security: Never log sensitive data like passwords or API keys
- Performance: Monitor the monitoring - track agent overhead
🛠️ Troubleshooting
Common Issues
Agent Not Starting
// Enable debug mode
const agent = new RedisAgent({
enabled: true,
debug: true
});High Memory Usage
// Optimize memory usage
const agent = new RedisAgent({
bufferSize: 500,
flushInterval: 5000,
sampleRate: 0.01
});Missing Metrics
- Check that the agent is enabled
- Verify your API key and project ID
- Ensure sampling rate allows data through
- Check network connectivity to StackSleuth API
Debug Mode
DEBUG=stacksleuth:* node your-app.js📚 Resources
🤝 Contributing
We welcome contributions! Please see our Contributing Guide for details.
📄 License
MIT License - see the LICENSE file for details.
Website • Documentation • NPM Registry • GitHub
Made with ⚡ by StackSleuth
