@stacksleuth/redis-agent
Version:
Advanced Redis performance monitoring agent - Command-level tracking, memory usage analysis, connection pooling optimization, slow query detection, and real-time cache performance metrics.
229 lines (167 loc) • 5.72 kB
Markdown
<div align="center">

**StackSleuth Redis Agent**
[](https://badge.fury.io/js/%40stacksleuth%2Fredis-agent)
[](https://opensource.org/licenses/MIT)
[](https://www.typescriptlang.org/)
[](https://nodejs.org/)
</div>
Advanced Redis performance monitoring agent - Command-level tracking, memory usage analysis, connection pooling optimization, slow query detection, and real-time cache performance metrics.
- 🔴 **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
```bash
npm install @stacksleuth/redis-agent
yarn add @stacksleuth/redis-agent
pnpm add @stacksleuth/redis-agent
```
```bash
yarn add @stacksleuth/redis-agent
```
```bash
pnpm add @stacksleuth/redis-agent
```
```typescript
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');
```
```typescript
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');
```
```typescript
// 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]
});
}
}
```
```typescript
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
});
```
- **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**
```typescript
// Enable debug mode
const agent = new RedisAgent({
enabled: true,
debug: true
});
```
**High Memory Usage**
```typescript
// 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
```bash
DEBUG=stacksleuth:* node your-app.js
```
- **[Official Documentation](https://github.com/Jack-GitHub12/StackSleuth#readme)**
- **[API Reference](https://github.com/Jack-GitHub12/StackSleuth/blob/main/docs/redis-agent.md)**
- **[Examples Repository](https://github.com/Jack-GitHub12/StackSleuth/tree/main/examples/redis-agent)**
We welcome contributions! Please see our [Contributing Guide](https://github.com/Jack-GitHub12/StackSleuth/blob/main/CONTRIBUTING.md) for details.
MIT License - see the [LICENSE](https://github.com/Jack-GitHub12/StackSleuth/blob/main/LICENSE) file for details.
---
<div align="center">
**[Website](https://github.com/Jack-GitHub12/StackSleuth)** •
**[Documentation](https://github.com/Jack-GitHub12/StackSleuth#readme)** •
**[NPM Registry](https://www.npmjs.com/package/@stacksleuth/redis-agent)** •
**[GitHub](https://github.com/Jack-GitHub12/StackSleuth)**
Made with ⚡ by [StackSleuth](https://github.com/Jack-GitHub12/StackSleuth)
</div>