Pular para conteúdo

📊 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

  1. Kubernetes / Compute Resources / Cluster
  2. CPU e memória do cluster
  3. Uso por namespace
  4. Pods por node

  5. Kubernetes / Compute Resources / Namespace (Pods)

  6. Métricas por pod
  7. CPU/Memory usage
  8. Network I/O

  9. Kubernetes / Compute Resources / Node (Pods)

  10. Métricas por node
  11. Capacidade disponível
  12. Pods em cada node

Prometheus Dashboards

  1. Prometheus / Overview
  2. Status do Prometheus
  3. Targets ativos
  4. Alertas disparados

  5. Node Exporter / Full

  6. Métricas detalhadas do sistema operacional
  7. 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: AlertingAlert 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
\\