check_tg.sh 1.49 KB
#!/bin/bash
echo "=== 检查 NLB 目标组健康状态 ==="

# 获取 NLB ARN
NLB_ARN=$(aws elbv2 describe-load-balancers --names "k8s-ecommerc-microser-9e1de5bd30" --region us-east-1 --query 'LoadBalancers[0].LoadBalancerArn' --output text)
echo "NLB ARN: $NLB_ARN"

# 获取目标组 ARNs(作为数组处理)
echo "=== 获取目标组 ==="
TARGET_GROUPS=($(aws elbv2 describe-target-groups --load-balancer-arn $NLB_ARN --region us-east-1 --query 'TargetGroups[].TargetGroupArn' --output text))

echo "找到 ${#TARGET_GROUPS[@]} 个目标组"

# 检查每个目标组的健康状态
for TG_ARN in "${TARGET_GROUPS[@]}"; do
    echo "=== 检查目标组: $TG_ARN ==="
    
    # 获取目标组名称
    TG_NAME=$(aws elbv2 describe-target-groups --target-group-arns "$TG_ARN" --region us-east-1 --query 'TargetGroups[0].TargetGroupName' --output text)
    echo "目标组名称: $TG_NAME"
    
    # 获取目标组详情
    echo "目标组配置:"
    aws elbv2 describe-target-groups --target-group-arns "$TG_ARN" --region us-east-1 --query 'TargetGroups[0].{Port:Port,Protocol:Protocol,HealthCheckPath:HealthCheckPath,HealthCheckPort:HealthCheckPort,HealthCheckProtocol:HealthCheckProtocol}' --output table
    
    # 检查健康状态
    echo "目标健康状态:"
    aws elbv2 describe-target-health --target-group-arn "$TG_ARN" --region us-east-1 --query 'TargetHealthDescriptions[].[Target.Id,TargetHealth.State,TargetHealth.Reason]' --output table
    echo "----------------------------------------"
done