GUIAPainel de controle geral com resumo dos 4 Golden Signals
Para que este painel funcione corretamente você precisa:
Prometheus datasource configurado no Grafananode_exporter para métricas de nós (CPU, memória, disco)kube-state-metrics para estado de pods e recursos K8sup métrica para health check (scrape_duration_seconds)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.
job="node-exporter" é o label de job padrão configurado pelo kube-prometheus-stack. Sua instalação pode usar job="node" ou outro valor — ajuste conforme necessário.$job_node (no JSON do dashboard) permite alternar entre node-exporter e node sem editar as queries dos painéis individualmente.$job_node em Configurações do Dashboard → Variables.┌────────────────────────────────────────┐ │ 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] └────────────────────────────────────────┘
Mostra a porcentagem de alvos "up" no Prometheus.
Query padrão: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)
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)
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]))
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)
Tabela com 4 KPIs principais. Personalizar:
http_request_duration_seconds por sua métrica5m → 1m para mais sensibilidade)Tabela dinâmica com estado de nós.
max by (instance) (up{job="node"})
Mudar colunas: No painel → Columns, adicione:
node_cpu_seconds_total → Total de CPUnode_memory_MemAvailable_bytes → Memória disponívelnode_filesystem_avail_bytes → Espaço em discoTabela 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"})
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
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 |
| 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 Panel → Panel options → modifique gridPos.h