infrastructure-monitor

armanzeroeight's avatarfrom armanzeroeight

Set up monitoring, logging, and alerting for infrastructure and applications. Use when implementing observability, creating dashboards, or configuring alerts.

⭐19stars🔀4forks📁View on GitHub🕐Updated Dec 2, 2025

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.
nameinfrastructure-monitor
descriptionSet 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