#!/bin/bash # ============================================== # 风七六阿里云开发环境状态检查脚本 # 服务器地址: 8.140.221.49 # ============================================== set -e # 颜色定义 RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # 服务器配置 SERVER_IP="8.140.221.49" SSH_KEY="/var/lib/jenkins/.ssh/id_rsa" SSH_USER="root" echo -e "${BLUE}==============================================${NC}" echo -e "${BLUE} 风七六阿里云开发环境状态检查${NC}" echo -e "${BLUE} Server: ${SERVER_IP}${NC}" echo -e "${BLUE}==============================================${NC}" # 服务检查列表 SERVICES=( "Nacos|8848|http://${SERVER_IP}:8848/nacos/v1/console/health" "MariaDB|3306|tcp" "Redis|6379|tcp" "Image Registry|5000|http://${SERVER_IP}:5000/v2/_catalog" "Nginx|80|http://${SERVER_IP}" "API Gateway|8080|http://${SERVER_IP}:8080/actuator/health" "Jenkins|8080|http://${SERVER_IP}:8080/login" "SonarQube|9000|http://${SERVER_IP}:9000/api/system/health" "Nexus|8091|http://${SERVER_IP}:8091/service/rest/v1/status" ) SUCCESS_COUNT=0 FAILED_COUNT=0 FAILED_SERVICES=() echo "" echo -e "${YELLOW}[1/3] 检查核心服务状态${NC}" echo "----------------------------------------------" for SERVICE in "${SERVICES[@]}"; do IFS='|' read -r NAME PORT URL <<< "$SERVICE" echo -n "🔍 检查 $NAME..." if [ "$URL" = "tcp" ]; then # TCP端口检查 if timeout 5 bash -c "echo > /dev/tcp/${SERVER_IP}/${PORT}" 2>/dev/null; then echo -e "${GREEN} ✅${NC}" SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) else echo -e "${RED} ❌${NC}" FAILED_COUNT=$((FAILED_COUNT + 1)) FAILED_SERVICES+=("$NAME") fi else # HTTP服务检查 if curl -s -f -m 10 "$URL" > /dev/null 2>&1; then echo -e "${GREEN} ✅${NC}" SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) else echo -e "${RED} ❌${NC}" FAILED_COUNT=$((FAILED_COUNT + 1)) FAILED_SERVICES+=("$NAME") fi fi done echo "" echo -e "${YELLOW}[2/3] 检查Nacos服务注册${NC}" echo "----------------------------------------------" NACOS_URL="http://${SERVER_IP}:8848/nacos/v1/ns/service/list?pageNo=1&pageSize=100" SERVICE_LIST=$(curl -s "$NACOS_URL") if [ -z "$SERVICE_LIST" ]; then echo -e "${RED}✗ 无法获取服务列表${NC}" else EXPECTED_SERVICES=("auth-service" "user-service" "merchant-service" "order-service" "rider-service" "product-service" "map-service" "marketing-service" "upload-service") for SERVICE in "${EXPECTED_SERVICES[@]}"; do if echo "$SERVICE_LIST" | grep -q "\"name\":\"$SERVICE\""; then echo -e "${GREEN}✓ $SERVICE${NC}" else echo -e "${YELLOW}⚠ $SERVICE (未注册)${NC}" fi done fi echo "" echo -e "${YELLOW}[3/3] 检查前端服务${NC}" echo "----------------------------------------------" FRONTEND_PATHS=("/platform" "/merchant" "/official") for PATH in "${FRONTEND_PATHS[@]}"; do URL="http://${SERVER_IP}${PATH}" if curl -s -f -m 5 "$URL" > /dev/null 2>&1; then echo -e "${GREEN}✓ ${URL}${NC}" else echo -e "${RED}✗ ${URL}${NC}" fi done echo "" echo -e "${BLUE}==============================================${NC}" echo -e "${BLUE} 检查结果汇总${NC}" echo -e "${BLUE}==============================================${NC}" echo "服务总数: ${#SERVICES[@]}" echo -e "正常: ${GREEN}${SUCCESS_COUNT}${NC}" echo -e "异常: ${RED}${FAILED_COUNT}${NC}" if [ ${#FAILED_SERVICES[@]} -gt 0 ]; then echo "" echo -e "${YELLOW}需要关注的服务:${NC}" for SERVICE in "${FAILED_SERVICES[@]}"; do echo "- $SERVICE" done echo "" echo -e "${YELLOW}建议操作:${NC}" echo "1. 登录服务器: ssh -i /path/to/key root@${SERVER_IP}" echo "2. 检查服务状态: systemctl status jenkins nexus" echo "3. 启动服务: systemctl start jenkins nexus" else echo "" echo -e "${GREEN}🎉 所有服务状态正常!${NC}" fi echo "" echo -e "${BLUE}==============================================${NC}" echo -e "${BLUE} 服务访问地址${NC}" echo -e "${BLUE}==============================================${NC}" echo "Nacos: http://${SERVER_IP}:8848/nacos" echo "Jenkins: http://${SERVER_IP}:8080" echo "SonarQube: http://${SERVER_IP}:9000" echo "Nexus: http://${SERVER_IP}:8091" echo "平台端: http://${SERVER_IP}/platform" echo "商家端: http://${SERVER_IP}/merchant" echo "API网关: http://${SERVER_IP}:8080" echo -e "${BLUE}==============================================${NC}"