RNode Server Metrics Examples
Quick examples of how to use and extend RNode Server metrics.
🚀 Basic Usage
typescript
import { createApp } from 'rnode-server';
const app = createApp({
metrics: true // Enable Prometheus metrics
});
app.listen(4546, () => {
console.log('Server running with metrics on /metrics');
});📊 Available Metrics
HTTP Metrics
http_requests_total- Total request counthttp_requests_duration_seconds- Request durationrnode_server_http_status_total- Status code counts
System Metrics
rnode_server_process_cpu_usage_percent- CPU usagernode_server_process_memory_kb- Memory usagernode_server_uptime_seconds- Server uptime
Business Metrics
rnode_server_cache_hits_total- Cache hitsrnode_server_cache_misses_total- Cache missesrnode_server_slow_requests_total- Slow requests
🔧 Custom Metrics
typescript
import { record_cache_hit, record_cache_miss } from 'rnode-server';
// Cache middleware
app.use((req, res, next) => {
const cacheKey = req.url;
if (cache.has(cacheKey)) {
record_cache_hit();
return res.json(cache.get(cacheKey));
}
record_cache_miss();
next();
});📈 Monitoring Queries
Request Rate
sql
rate(http_requests_total[5m])Error Rate
sql
rate(http_requests_total{status=~"5.."}[5m])95th Percentile Response Time
sql
histogram_quantile(0.95, rate(http_requests_duration_seconds_bucket[5m]))Cache Hit Ratio
sql
rate(rnode_server_cache_hits_total[5m]) / (rate(rnode_server_cache_hits_total[5m]) + rate(rnode_server_cache_misses_total[5m]))🎯 Performance Alerts
yaml
# High error rate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.1
# Slow requests
expr: rate(rnode_server_slow_requests_total[5m]) > 0.05
# High CPU usage
expr: rnode_server_process_cpu_usage_percent > 80
# High memory usage
expr: rnode_server_process_memory_kb > 1048576 # 1GB📱 Quick Test
bash
# Start server with metrics
npm run dev
# Check metrics endpoint
curl http://localhost:4546/metrics
# Generate some load
ab -n 1000 -c 10 http://localhost:4546/hello
# Check metrics again
curl http://localhost:4546/metrics | grep http_requests_total