aula-15: implementação completa APM (Tempo + OTel + demo app)
Componentes: - tempo-values.yaml: Grafana Tempo monolithic, 256Mi, 10Gi PVC - otel-collector-values.yaml: recebe OTLP, exporta traces→Tempo, gera span metrics (RED)→Victoria Metrics via spanmetrics connector - demo-app/: Node.js com rotas /fast (1 query), /slow (N+1, 51 queries), /fixed (JOIN), auto-instrumentado com OpenTelemetry - alerts/latency-alerts.yaml: VMRule com Doherty threshold (p95>400ms) - setup.sh: instala Tempo, OTel Collector, configura Grafana datasource, deploy demo app via ConfigMap (sem Docker build necessário) - cleanup.sh: remove apenas recursos da aula-15, preserva aula-12 Zero hardcoded hostnames. Tudo via .env e placeholders.
This commit is contained in:
129
aula-15/cleanup.sh
Executable file
129
aula-15/cleanup.sh
Executable file
@@ -0,0 +1,129 @@
|
||||
#!/bin/bash
|
||||
# =============================================================================
|
||||
# Aula 15 - Cleanup (Remove APM: Tempo + OTel + Demo App)
|
||||
# =============================================================================
|
||||
#
|
||||
# Remove:
|
||||
# - Demo app namespace (demo)
|
||||
# - Grafana Tempo (Helm release)
|
||||
# - OpenTelemetry Collector (Helm release)
|
||||
# - Grafana datasource ConfigMap (Tempo)
|
||||
# - Alertas de latencia
|
||||
# - Arquivo .env
|
||||
#
|
||||
# NAO remove:
|
||||
# - Victoria Metrics / Grafana (pertencem a aula-12)
|
||||
# - Namespace monitoring
|
||||
#
|
||||
# =============================================================================
|
||||
|
||||
set -e
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m'
|
||||
|
||||
log_info() { echo -e "${BLUE}[INFO]${NC} $1"; }
|
||||
log_success() { echo -e "${GREEN}[OK]${NC} $1"; }
|
||||
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
|
||||
echo -e "${CYAN} Cleanup - Aula 15 (APM)${NC}"
|
||||
echo -e "${CYAN}═══════════════════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
|
||||
log_warn "Isso vai remover:"
|
||||
echo " - Namespace demo (demo app + PostgreSQL + dados)"
|
||||
echo " - Grafana Tempo (Helm release)"
|
||||
echo " - OpenTelemetry Collector (Helm release)"
|
||||
echo " - Datasource Tempo no Grafana"
|
||||
echo " - Alertas de latencia"
|
||||
echo ""
|
||||
echo -e "${GREEN}NAO sera removido:${NC}"
|
||||
echo " - Victoria Metrics (aula-12)"
|
||||
echo " - Grafana (aula-12)"
|
||||
echo " - Namespace monitoring"
|
||||
echo ""
|
||||
read -p "Continuar? (digite 'sim' para confirmar): " confirm
|
||||
|
||||
if [ "$confirm" != "sim" ]; then
|
||||
log_info "Operacao cancelada"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 1. Remover namespace demo (demo app + PostgreSQL)
|
||||
# -------------------------------------------------------------------------
|
||||
log_info "Removendo namespace demo..."
|
||||
if kubectl get namespace demo &> /dev/null; then
|
||||
kubectl delete namespace demo --timeout=60s 2>/dev/null || true
|
||||
log_success "Namespace demo removido"
|
||||
else
|
||||
log_info "Namespace demo nao encontrado"
|
||||
fi
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 2. Remover Grafana Tempo
|
||||
# -------------------------------------------------------------------------
|
||||
log_info "Removendo Grafana Tempo..."
|
||||
if helm status tempo -n monitoring &> /dev/null; then
|
||||
helm uninstall tempo -n monitoring --wait 2>/dev/null || true
|
||||
log_success "Tempo removido"
|
||||
else
|
||||
log_info "Tempo nao encontrado"
|
||||
fi
|
||||
|
||||
# Remover PVC do Tempo
|
||||
kubectl delete pvc -n monitoring -l app.kubernetes.io/name=tempo --wait=false 2>/dev/null || true
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 3. Remover OpenTelemetry Collector
|
||||
# -------------------------------------------------------------------------
|
||||
log_info "Removendo OpenTelemetry Collector..."
|
||||
if helm status otel-collector -n monitoring &> /dev/null; then
|
||||
helm uninstall otel-collector -n monitoring --wait 2>/dev/null || true
|
||||
log_success "OTel Collector removido"
|
||||
else
|
||||
log_info "OTel Collector nao encontrado"
|
||||
fi
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 4. Remover datasource ConfigMap do Tempo no Grafana
|
||||
# -------------------------------------------------------------------------
|
||||
log_info "Removendo datasource Tempo do Grafana..."
|
||||
kubectl delete configmap grafana-datasource-tempo -n monitoring 2>/dev/null || true
|
||||
log_success "Datasource removido"
|
||||
|
||||
# Reiniciar Grafana para remover datasource
|
||||
log_info "Reiniciando Grafana..."
|
||||
kubectl rollout restart deployment -n monitoring -l app.kubernetes.io/name=grafana 2>/dev/null || true
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 5. Remover alertas de latencia
|
||||
# -------------------------------------------------------------------------
|
||||
log_info "Removendo alertas de latencia..."
|
||||
kubectl delete -f "${SCRIPT_DIR}/alerts/latency-alerts.yaml" -n monitoring 2>/dev/null || true
|
||||
log_success "Alertas removidos"
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# 6. Remover .env
|
||||
# -------------------------------------------------------------------------
|
||||
if [[ -f "${SCRIPT_DIR}/.env" ]]; then
|
||||
rm "${SCRIPT_DIR}/.env"
|
||||
log_info ".env removido"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
log_success "Cleanup concluido!"
|
||||
echo ""
|
||||
echo "O namespace monitoring e Victoria Metrics + Grafana foram mantidos."
|
||||
echo "Para remover tudo, execute o cleanup da aula-12."
|
||||
echo ""
|
||||
Reference in New Issue
Block a user