infrastructure-monitor
Set up monitoring, logging, and alerting for infrastructure and applications. Use when implementing observability, creating dashboards, or configuring alerts.
When & Why to Use This Skill
The Infrastructure Monitor skill empowers developers and SREs to establish a robust observability stack for applications and systems. It provides comprehensive guidance on implementing the 'Golden Signals' of monitoring—latency, traffic, errors, and saturation—by streamlining the configuration of Prometheus for metrics, Grafana for visualization, and Loki for centralized logging.
Use Cases
- Case 1: Instrumenting Node.js applications with Prometheus to track real-time HTTP request durations and status codes.
- Case 2: Designing Grafana dashboards to visualize critical system health metrics, including CPU usage, memory consumption, and database query performance.
- Case 3: Configuring automated alerting rules to detect high error rates or system anomalies, ensuring rapid incident response and reduced downtime.
- Case 4: Implementing structured logging and log aggregation using Loki to facilitate efficient debugging and audit trails across distributed environments.
| name | infrastructure-monitor |
|---|---|
| description | Set up monitoring, logging, and alerting for infrastructure and applications. Use when implementing observability, creating dashboards, or configuring alerts. |
Infrastructure Monitor
Set up comprehensive monitoring and observability.
Quick Start
Use Prometheus for metrics, Grafana for dashboards, Loki for logs, set up alerts for critical issues.
Instructions
Metrics with Prometheus
Application instrumentation:
const prometheus = require('prom-client');
const httpRequestDuration = new prometheus.Histogram({
name: 'http_request_duration_seconds',
help: 'Duration of HTTP requests in seconds',
labelNames: ['method', 'route', 'status_code']
});
app.use((req, res, next) => {
const start = Date.now();
res.on('finish', () => {
const duration = (Date.now() - start) / 1000;
httpRequestDuration.labels(req.method, req.route?.path, res.statusCode).observe(duration);
});
next();
});
Prometheus config:
scrape_configs:
- job_name: 'app'
static_configs:
- targets: ['app:3000']
scrape_interval: 15s
Dashboards with Grafana
Key metrics to monitor:
- Request rate (requests/second)
- Error rate (errors/total requests)
- Response time (p50, p95, p99)
- CPU and memory usage
- Database query time
Logging with Loki
Structured logging:
const winston = require('winston');
const logger = winston.createLogger({
format: winston.format.json(),
transports: [
new winston.transports.Console()
]
});
logger.info('User logged in', { userId: user.id, ip: req.ip });
Alerting
Alert rules:
groups:
- name: app_alerts
rules:
- alert: HighErrorRate
expr: rate(http_requests_total{status=~"5.."}[5m]) > 0.05
for: 5m
annotations:
summary: "High error rate detected"
Best Practices
- Monitor golden signals (latency, traffic, errors, saturation)
- Set up actionable alerts
- Use log aggregation
- Implement distributed tracing
- Create runbooks for alerts
- Regular dashboard reviews