#!/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 ""