Capítulo 11.1 - Monitoramento do Kubernetes
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender a importância do monitoramento no Kubernetes
- Instalar o Prometheus para coleta de métricas
- Configurar o Grafana para visualização
- Entender as principais métricas do Kubernetes
- Configurar ServiceMonitors
- Criar dashboards personalizados
Introdução
O monitoramento é essencial para entender o estado de saúde e o desempenho de um cluster Kubernetes e de suas aplicações.
Ferramentas de Monitoramento
Prometheus
Sistema open-source de monitoramento e alerta que coleta e armazena métricas como séries temporais.
Características:
- Coleta de métricas via pull
- Armazenamento eficiente
- Linguagem de consulta PromQL
- Integração nativa com Kubernetes
Grafana
Plataforma de visualização que permite criar dashboards interativos a partir das métricas do Prometheus.
Características:
- Dashboards personalizáveis
- Alertas visuais
- Suporte a múltiplas fontes de dados
- Compartilhamento e colaboração
Instalação do Prometheus
Via Helm
# Adicionar o repositório
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# Instalar o Prometheus
helm install prometheus prometheus-community/kube-prometheus-stack \
--namespace monitoring \
--create-namespace
Verificação
# Ver Pods
kubectl get pods -n monitoring
# Ver Services
kubectl get svc -n monitoring
# Acessar o Prometheus
kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090
Métricas Importantes
Métricas do Cluster
- CPU: Uso de CPU dos nodes e Pods
- Memória: Uso de memória dos nodes e Pods
- Rede: Tráfego de rede de entrada/saída
- Armazenamento: Uso do armazenamento
Métricas de Aplicação
- Requisições HTTP: Taxa de requisições, latência, erros
- Conexões DB: Pool de conexões, tempo de resposta
- Fila: Tamanho das filas, tempo de processamento
Métricas do Kubernetes
- Pods: Estado, reinicializações, ready/unready
- Deployments: Réplicas desejadas vs atuais
- Services: Endpoints disponíveis
ServiceMonitors
Os ServiceMonitors permitem que o Prometheus descubra e faça scrape das métricas dos serviços.
Exemplo: ServiceMonitor
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: my-app-metrics
namespace: default
spec:
selector:
matchLabels:
app: my-app
endpoints:
- port: metrics
interval: 30s
path: /metrics
Service com Métricas
apiVersion: v1
kind: Service
metadata:
name: my-app-service
labels:
app: my-app
spec:
selector:
app: my-app
ports:
- name: http
port: 8080
- name: metrics
port: 9090
Instalação do Grafana
Via Helm (Incluído no kube-prometheus-stack)
O Grafana está incluído no kube-prometheus-stack.
Acesso
# Port-forward
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80
# Credenciais padrão
# Username: admin
# Password: prom-operator
Dashboards Pré-definidos
- Monitoramento do Cluster Kubernetes
- Node Exporter
- Monitoramento de Pods
- Etc.
Criação de Dashboards
Dashboard Básico
{
"dashboard": {
"title": "My App Dashboard",
"panels": [
{
"title": "Request Rate",
"targets": [
{
"expr": "rate(http_requests_total[5m])",
"legendFormat": "{{method}}"
}
]
},
{
"title": "Error Rate",
"targets": [
{
"expr": "rate(http_requests_total{status=~\"5..\"}[5m])"
}
]
}
]
}
}
PromQL (Prometheus Query Language)
Consultas Básicas
# Taxa de requisições
rate(http_requests_total[5m])
# Soma por label
sum(rate(http_requests_total[5m])) by (method)
# Porcentagem de erros
sum(rate(http_requests_total{status=~"5.."}[5m])) / sum(rate(http_requests_total[5m])) * 100
# Uso de CPU
100 - (avg(rate(container_cpu_usage_seconds_total[5m])) * 100)
Comandos Úteis
Prometheus
# Acessar o Prometheus
kubectl port-forward -n monitoring svc/prometheus-kube-prometheus-prometheus 9090:9090
# Ver targets
# Na interface do Prometheus: Status > Targets
Grafana
# Acessar o Grafana
kubectl port-forward -n monitoring svc/prometheus-grafana 3000:80
# Importar um dashboard
# No Grafana: + > Import > ID do dashboard
Boas Práticas
1. Métricas Essenciais
Monitore as métricas críticas: CPU, memória, latência, erros.
2. Retenção
Configure uma retenção apropriada para as métricas.
3. Dashboards
Crie dashboards por aplicação/serviço.
4. Alertas
Configure alertas para métricas críticas.
5. Performance
Evite fazer scrape com muita frequência para não sobrecarregar.
Resumo
Neste capítulo, você aprendeu:
Monitoramento: Essencial para a saúde do cluster
Prometheus: Coleta e armazenamento de métricas
Grafana: Visualização com dashboards
Métricas: Cluster, aplicação, Kubernetes
ServiceMonitors: Descoberta automática de métricas
PromQL: Linguagem de consulta para métricas
Dashboards: Visualização personalizável
Boas práticas: Métricas essenciais, retenção, alertas
Próximos Passos
Capítulo 11.2: Logs
Capítulo 11.3: Alerting
Lab 11.1: Instalação do Prometheus e Grafana
Capítulo criado em: Dezembro 2024