Pular para o conteúdo principal

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