📊 Grafana
🎯 Visão Geral
Grafana é a plataforma de visualização e análise de métricas do cluster AKS.
📦 Deployment
\\yaml
Namespace: observability
Deployment: kube-prometheus-stack-grafana
Image: quay.io/kiwigrid/k8s-sidecar:2.5.0
Replicas: 1
Status: 1/1 Running
\\
🌐 Acesso
LoadBalancer Interno
\\
URL: http://10.124.5.10
Type: LoadBalancer (interno ao cluster)
\\
Port-Forward (para acesso externo)
\\ash
kubectl port-forward -n observability svc/kube-prometheus-stack-grafana 3000:80
\\
Acesse: http://localhost:3000
Credenciais Padrão
\\yaml
Usuário: admin
Senha: (recuperar via secret)
\\
Recuperar senha:
\\ash
kubectl get secret -n observability kube-prometheus-stack-grafana -o jsonpath='{.data.admin-password}' | base64 --decode
\\
📊 Dashboards Pré-configurados
Kubernetes Dashboards
- Kubernetes / Compute Resources / Cluster
- CPU e memória do cluster
- Uso por namespace
-
Pods por node
-
Kubernetes / Compute Resources / Namespace (Pods)
- Métricas por pod
- CPU/Memory usage
-
Network I/O
-
Kubernetes / Compute Resources / Node (Pods)
- Métricas por node
- Capacidade disponível
- Pods em cada node
Prometheus Dashboards
- Prometheus / Overview
- Status do Prometheus
- Targets ativos
-
Alertas disparados
-
Node Exporter / Full
- Métricas detalhadas do sistema operacional
- CPU, memória, disco, rede
🔧 Data Sources Configurados
| Data Source | Type | URL | Status |
|---|---|---|---|
| Prometheus | Prometheus | http://prometheus-operated:9090 | ✅ Active |
🎨 Customizações
Sidecar para Auto-Discovery
- ✅ K8s Sidecar habilitado
- Descobre automaticamente ConfigMaps com label \grafana_dashboard: "1"\
- Dashboards aparecem automaticamente na UI
Exemplo: Adicionar Dashboard via ConfigMap
\\yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: custom-dashboard
namespace: observability
labels:
grafana_dashboard: "1"
data:
custom-dashboard.json: |
{
"dashboard": { ... }
}
\\
📈 Métricas Importantes
Cluster Health
\\promql
Nodes disponíveis
kube_node_status_condition{condition="Ready",status="true"}
Pods em execução
kube_pod_status_phase{phase="Running"}
CPU usage do cluster
sum(rate(container_cpu_usage_seconds_total[5m]))
\\
Application Performance
\\promql
Requisições HTTP por segundo
sum(rate(http_requests_total[5m])) by (service)
Latência P95
histogram_quantile(0.95, sum(rate(http_request_duration_seconds_bucket[5m])) by (le, service))
\\
🚨 Alertas Integrados
Grafana está integrado com Alertmanager para notificações.
Ver alertas ativos
- Menu: Alerting → Alert Rules
- Mostra alertas do Prometheus
🔗 Integrações
Prometheus
- ✅ Conectado via service interno
- ✅ Query auto-complete habilitado
Alertmanager
- ✅ Mostra alertas disparados
- ✅ Permite silenciar via UI
Loki (opcional)
- ⏸️ Não configurado atualmente
- Planejado para logs centralizados
🔧 Troubleshooting
Grafana não carrega
\\ash
Verificar pods
kubectl get pods -n observability -l app.kubernetes.io/name=grafana
Ver logs
kubectl logs -n observability deployment/kube-prometheus-stack-grafana -f
\\
Dashboard não aparece
\\ash
Verificar ConfigMaps com label correto
kubectl get configmap -n observability -l grafana_dashboard=1
Reiniciar sidecar
kubectl rollout restart deployment/kube-prometheus-stack-grafana -n observability
\\
Prometheus não conecta
\\ash
Testar conectividade
kubectl run curl --image=curlimages/curl -it --rm -- curl http://prometheus-operated:9090/-/healthy
\\