Files
novalon-website/scripts/setup-lightweight-monitoring.sh
T

200 lines
5.4 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
set -e
echo "🚀 轻量级监控系统配置"
echo "========================"
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
# 检查 Sentry 配置
check_sentry() {
echo -e "${YELLOW}📋 检查 Sentry 配置...${NC}"
if [ -z "$NEXT_PUBLIC_SENTRY_DSN" ]; then
echo -e "${RED}❌ Sentry DSN 未配置${NC}"
echo "请在 .env.production 中设置 NEXT_PUBLIC_SENTRY_DSN"
return 1
fi
echo -e "${GREEN}✅ Sentry 已配置${NC}"
}
# 配置 Google Analytics
setup_google_analytics() {
echo -e "${YELLOW}📋 配置 Google Analytics...${NC}"
echo "请输入 Google Analytics 测量 ID"
read -p "GA Measurement ID (格式: G-XXXXXXXXXX): " ga_id
if [ -z "$ga_id" ]; then
echo -e "${YELLOW}⚠️ 跳过 Google Analytics 配置${NC}"
return 0
fi
# 更新环境变量
if [ -f ".env.production" ]; then
if grep -q "NEXT_PUBLIC_GA_MEASUREMENT_ID" .env.production; then
sed -i.bak "s/NEXT_PUBLIC_GA_MEASUREMENT_ID=.*/NEXT_PUBLIC_GA_MEASUREMENT_ID=$ga_id/" .env.production
else
echo "NEXT_PUBLIC_GA_MEASUREMENT_ID=$ga_id" >> .env.production
fi
echo -e "${GREEN}✅ Google Analytics 已配置${NC}"
else
echo -e "${RED}❌ 找不到 .env.production 文件${NC}"
return 1
fi
}
# 配置 UptimeRobot
setup_uptime_robot() {
echo -e "${YELLOW}📋 配置 UptimeRobot...${NC}"
echo ""
echo "请按照以下步骤配置 UptimeRobot"
echo ""
echo "1. 访问 https://uptimerobot.com/"
echo "2. 注册免费账号"
echo "3. 创建新的 Monitor"
echo " - Monitor Type: HTTP(s)"
echo " - URL: https://www.novalon.cn"
echo " - Monitoring Interval: 5 minutes"
echo "4. 添加 Alert Contacts:"
echo " - Email: ops@novalon.cn"
echo ""
read -p "配置完成后按 Enter 继续..."
}
# 创建健康检查端点
create_health_check() {
echo -e "${YELLOW}📋 创建健康检查端点...${NC}"
# 检查是否已存在
if [ -d "src/app/api/health" ]; then
echo -e "${GREEN}✅ 健康检查端点已存在${NC}"
return 0
fi
mkdir -p src/app/api/health
cat > src/app/api/health/route.ts << 'EOF'
import { NextResponse } from 'next/server';
export async function GET() {
try {
// 检查数据库连接
const dbConnected = await checkDatabaseConnection();
// 获取系统信息
const uptime = process.uptime();
return NextResponse.json({
status: 'healthy',
timestamp: new Date().toISOString(),
version: process.env.npm_package_version || '1.0.0',
checks: {
database: dbConnected ? 'connected' : 'disconnected',
uptime: Math.floor(uptime)
}
});
} catch (error) {
return NextResponse.json({
status: 'unhealthy',
timestamp: new Date().toISOString(),
error: 'Health check failed'
}, { status: 500 });
}
}
async function checkDatabaseConnection(): Promise<boolean> {
try {
// 这里添加实际的数据库连接检查逻辑
return true;
} catch {
return false;
}
}
EOF
echo -e "${GREEN}✅ 健康检查端点已创建${NC}"
}
# 配置 Sentry 告警
setup_sentry_alerts() {
echo -e "${YELLOW}📋 配置 Sentry 告警...${NC}"
echo ""
echo "请按照以下步骤配置 Sentry 告警:"
echo ""
echo "1. 登录 Sentry Dashboard"
echo "2. 进入 Settings → Alerts"
echo "3. 创建新的 Alert Rule"
echo " - Issue: Critical Errors"
echo " - Environment: Production"
echo " - Frequency: Immediately"
echo " - Email: ops@novalon.cn"
echo ""
read -p "配置完成后按 Enter 继续..."
}
# 显示配置摘要
show_summary() {
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}🎉 轻量级监控配置完成!${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo "📊 监控组件:"
echo ""
echo -e " • Sentry: ${GREEN}${NC} 错误监控和性能追踪"
echo -e " • UptimeRobot: ${YELLOW}⚠️ 需要手动配置${NC} 可用性监控"
echo -e " • Google Analytics: ${YELLOW}⚠️ 需要手动配置${NC} 访问统计"
echo -e " • Health Check: ${GREEN}${NC} 内部服务状态"
echo -e " • Email Alerts: ${GREEN}${NC} ops@novalon.cn"
echo ""
echo "📋 下一步操作:"
echo ""
echo " 1. 配置 UptimeRobot: https://uptimerobot.com/"
echo " 2. 配置 Google Analytics: https://analytics.google.com/"
echo " 3. 配置 Sentry 告警: Sentry Dashboard → Settings → Alerts"
echo ""
echo "📚 详细文档: docs/LIGHTWEIGHT_MONITORING.md"
echo ""
}
# 主函数
main() {
echo ""
# 检查 Sentry
check_sentry
# 配置 Google Analytics
echo ""
read -p "是否配置 Google Analytics? (y/n): " setup_ga
if [[ $setup_ga =~ ^[Yy]$ ]]; then
setup_google_analytics
fi
# 配置 UptimeRobot
echo ""
read -p "是否配置 UptimeRobot? (y/n): " setup_uptime
if [[ $setup_uptime =~ ^[Yy]$ ]]; then
setup_uptime_robot
fi
# 创建健康检查
create_health_check
# 配置 Sentry 告警
setup_sentry_alerts
# 显示摘要
show_summary
}
# 运行主函数
main