RetroDash // OVERVIEW

GUIDEPanel de control general con resumen de los 4 Golden Signals

Tema

Requisitos

Para que este dashboard funcione correctamente necesitas:

Notas de Compatibilidad

Importación en Grafana 12+

Estos dashboards fueron probados con Grafana 12.3 y kube-prometheus-stack. Para importar: vaya a Dashboards → Import, pegue el JSON y seleccione su datasource Prometheus en el menú desplegable.

Mapa de Paneles

┌────────────────────────────────────────┐
│    OVERVIEW — 4 GOLDEN SIGNALS         │
├────────────────────────────────────────┤
│  Health  │ Avg      │  Error  │ CPU    │
│  Score   │ Latency  │  Rate   │ Satur. │
├──────────┼──────────┼─────────┼────────┤
│  Signals Summary (4 KPIs) [6 cols]    │
├────────────────────────────────────────┤
│  Node Status Grid    │  Pod Status     │
│  (tabla)             │  (tabla)        │
├────────────────────────────────────────┤
│  Top Resource Consumers [12 cols]      │
└────────────────────────────────────────┘

Personalización por Panel

Health Score

Muestra el porcentaje de targets "up" en Prometheus.

100 * count(up == 1) / count(up)

Para cambiar: Si usas un exporter custom, sustituye up por tu métrica:

100 * count(my_service_healthy == 1) / count(my_service_healthy)

Umbrales: Edita Thresholds en panel (default: 90 yellow, 75 red)

Avg Latency

Latencia promedio de requests en milisegundos.

avg(rate(http_request_duration_seconds_sum[5m]))
/ avg(rate(http_request_duration_seconds_count[5m])) * 1000

Cambiar métrica: Si no usas Prometheus HTTP conventions, usa:

avg(my_request_latency_ms)

Error Rate

Porcentaje de requests con status code 5xx.

100 * sum(rate(http_requests_total{status=~"5.."}[5m]))
/ sum(rate(http_requests_total[5m]))

Personalización: Para incluir 4xx:

100 * sum(rate(http_requests_total{status=~"[45].."}[5m]))
/ sum(rate(http_requests_total[5m]))

CPU Saturation

Uso de CPU como porcentaje.

100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

Filtrar por instancia específica:

100 - (avg(rate(node_cpu_seconds_total{mode="idle",instance="server1:9100"}[5m])) * 100)

Golden Signals Summary

Tabla con 4 KPIs principales. Personalizar:

Node Status Grid

Tabla dinámica con estado de nodos.

max by (instance) (up{job="node"})

Cambiar columnas: En panel → Columns, añade:

Pod Status

Tabla de pods con estado.

max by (pod, namespace) (kube_pod_status_phase)

Filtrar por namespace: En variables, crea selector:

label_values(kube_pod_info, namespace)

Luego usa en la query:

max by (pod, namespace) (kube_pod_status_phase{namespace="$namespace"})

Top Resource Consumers

Ranking de pods por CPU/memoria.

topk(10, sum by (pod, namespace)
(rate(container_cpu_usage_seconds_total[5m])) * 100)

Cambiar top N: Reemplaza topk(10 con topk(20 para top 20

Cambiar Tema de Color

Este dashboard incluye 3 temas predefinidos. Usa los botones arriba o edita JSON:

Tema Primary Glow Background
GREEN #33FF00 rgba(51,255,0,0.5) #0A1A0A
AMBER #FFB000 rgba(255,176,0,0.5) #0D1117
BLUE #00BFFF rgba(0,191,255,0.5) #0A0A1A

Adaptar a tu Resolución de Tablet

Dispositivo Resolución GridPos Height
iPad Pro 12.9 2048×2732 12-14
iPad Air 10.9 1640×2360 10-12
Samsung Tab S9 1752×2800 11-13
Google Pixel Tablet 1600×2560 10-12
Desktop 1920×1080 Full 8-10

Para ajustar: En Grafana, edita cada panel → Panel tab → Panel options → modifica gridPos.h

Importar en Grafana

  1. En Grafana, ve a Dashboards → Import
  2. Copia el JSON del dashboard (disponible en repo o export)
  3. Pega en Import via panel json
  4. Selecciona datasource Prometheus
  5. Haz clic en Import
  6. Verifica que todas las métricas se cargan correctamente