Files
awoooi/ops/monitoring/deploy-exporters.sh
OG T c7f9c119e7 fix(cd): 補提交 ops/monitoring 腳本
遺漏文件導致 CD Monitoring Coverage 步驟失敗

新增:
- generate_monitoring.py - 監控覆蓋率檢查
- coverage_report.py - 覆蓋率報告
- discover_docker.py - Docker 服務發現
- deploy-exporters.sh - Exporter 部署腳本
- postgres-exporter-queries.yaml - PostgreSQL 查詢配置

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-03-29 15:45:42 +08:00

77 lines
3.3 KiB
Bash
Executable File
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# =============================================================================
# AWOOOI Database Exporters 部署腳本
# =============================================================================
# 用途: 在 192.168.0.188 部署 PostgreSQL + Redis Exporter
# 執行: ./deploy-exporters.sh [user]
# 版本: v1.0
# 日期: 2026-03-29 (台北時區)
# =============================================================================
set -e
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
TARGET_HOST="192.168.0.188"
TARGET_USER="${1:-ogt}"
TARGET_DIR="/home/${TARGET_USER}/monitoring"
echo "╔════════════════════════════════════════════════════════════════╗"
echo "║ AWOOOI Database Exporters 部署 ║"
echo "╚════════════════════════════════════════════════════════════════╝"
echo ""
# 檢查必要檔案
if [[ ! -f "${SCRIPT_DIR}/docker-compose.exporters.yaml" ]]; then
echo "❌ 找不到 docker-compose.exporters.yaml"
exit 1
fi
echo "📁 來源目錄: ${SCRIPT_DIR}"
echo "🎯 目標主機: ${TARGET_USER}@${TARGET_HOST}:${TARGET_DIR}"
echo ""
# Step 1: 建立遠端目錄
echo "1⃣ 建立遠端目錄..."
ssh "${TARGET_USER}@${TARGET_HOST}" "mkdir -p ${TARGET_DIR}"
# Step 2: 複製檔案
echo "2⃣ 複製配置檔案..."
scp "${SCRIPT_DIR}/docker-compose.exporters.yaml" "${TARGET_USER}@${TARGET_HOST}:${TARGET_DIR}/"
scp "${SCRIPT_DIR}/postgres-exporter-queries.yaml" "${TARGET_USER}@${TARGET_HOST}:${TARGET_DIR}/"
# Step 3: 部署容器
echo "3⃣ 部署 Exporters..."
ssh "${TARGET_USER}@${TARGET_HOST}" "cd ${TARGET_DIR} && docker compose -f docker-compose.exporters.yaml up -d"
# Step 4: 驗證
echo "4⃣ 驗證部署..."
sleep 3
echo ""
echo "📊 容器狀態:"
ssh "${TARGET_USER}@${TARGET_HOST}" "docker ps --filter 'name=exporter' --format 'table {{.Names}}\t{{.Status}}\t{{.Ports}}'"
echo ""
echo "🔍 驗證端點..."
# PostgreSQL Exporter
PG_STATUS=$(ssh "${TARGET_USER}@${TARGET_HOST}" "curl -s -o /dev/null -w '%{http_code}' http://localhost:9187/metrics 2>/dev/null || echo '000'")
if [[ "${PG_STATUS}" == "200" ]]; then
echo " ✅ PostgreSQL Exporter: http://${TARGET_HOST}:9187/metrics"
else
echo " ❌ PostgreSQL Exporter: HTTP ${PG_STATUS}"
fi
# Redis Exporter
REDIS_STATUS=$(ssh "${TARGET_USER}@${TARGET_HOST}" "curl -s -o /dev/null -w '%{http_code}' http://localhost:9121/metrics 2>/dev/null || echo '000'")
if [[ "${REDIS_STATUS}" == "200" ]]; then
echo " ✅ Redis Exporter: http://${TARGET_HOST}:9121/metrics"
else
echo " ❌ Redis Exporter: HTTP ${REDIS_STATUS}"
fi
echo ""
echo "╔════════════════════════════════════════════════════════════════╗"
echo "║ ✅ 部署完成! ║"
echo "╚════════════════════════════════════════════════════════════════╝"