RetroDash // OVERVIEW

GUIAPainel de controle geral com resumo dos 4 Golden Signals

Tema

Requisitos

Para que este painel funcione corretamente você precisa:

Notas de Compatibilidade

Importação no Grafana 12+

Estes dashboards foram testados com Grafana 12.3 e kube-prometheus-stack. Para importar: vá em Dashboards → Import, cole o JSON e selecione seu datasource Prometheus no menu suspenso.

Mapa de Painéis

┌────────────────────────────────────────┐
│    OVERVIEW — 4 GOLDEN SIGNALS         │
├────────────────────────────────────────┤
│  Saúde  │ Latência │  Taxa   │ CPU    │
│  Ponto  │ Média    │  Erro   │ Satur. │
├──────────┼──────────┼─────────┼────────┤
│  Resumo de Sinais (4 KPIs) [6 cols]   │
├────────────────────────────────────────┤
│  Grade de Status do Nó │ Status Pod   │
│  (tabela)              │ (tabela)     │
├────────────────────────────────────────┤
│  Top Consumidores de Recursos [12 cols]
└────────────────────────────────────────┘

Personalização por Painel

Health Score

Mostra a porcentagem de alvos "up" no Prometheus.

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

Para mudar: Se você usa um exporter customizado, substitua up por sua métrica:

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

Limiares: Edite Thresholds no painel (padrão: 90 amarelo, 75 vermelho)

Avg Latency

Latência média de requisições em milissegundos.

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

Mudar métrica: Se você não usa convenções HTTP do Prometheus, use:

avg(my_request_latency_ms)

Error Rate

Porcentagem de requisições com código de status 5xx.

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

Personalização: Para incluir 4xx:

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

CPU Saturation

Uso de CPU como porcentagem.

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

Filtrar por instância específica:

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

Golden Signals Summary

Tabela com 4 KPIs principais. Personalizar:

Node Status Grid

Tabela dinâmica com estado de nós.

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

Mudar colunas: No painel → Columns, adicione:

Pod Status

Tabela de pods com estado.

max by (pod, namespace) (kube_pod_status_phase)

Filtrar por namespace: Em variáveis, crie seletor:

label_values(kube_pod_info, namespace)

Depois use na query:

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

Top Resource Consumers

Ranking de pods por CPU/memória.

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

Mudar top N: Substitua topk(10 com topk(20 para top 20

Mudar Tema de Cor

Este painel inclui 3 temas predefinidos. Use os botões acima ou edite JSON:

Tema Primário Brilho Fundo
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 à sua Resolução de Tablet

Dispositivo Resolução Altura GridPos
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: No Grafana, edite cada painel → aba PanelPanel options → modifique gridPos.h

Importar no Grafana

  1. No Grafana, vá para Dashboards → Import
  2. Copie o JSON do painel (disponível no repo ou export)
  3. Cole em Import via panel json
  4. Selecione datasource Prometheus
  5. Clique em Import
  6. Verifique que todas as métricas carregam corretamente