| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111 |
- #!/bin/bash
- # 健康检查脚本
- # 用途:检查所有服务的健康状态
- set -e
- REDIS_PASSWORD="Hzdyjs@123456"
- MYSQL_PASSWORD="Hzdyjs@Root@123456"
- echo "=========================================="
- echo "系统健康检查"
- echo "时间: $(date '+%Y-%m-%d %H:%M:%S')"
- echo "=========================================="
- # 1. 检查系统资源
- echo "[1/8] 检查系统资源..."
- echo "CPU使用率: $(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')%"
- echo "内存使用: $(free -h | awk '/^Mem:/ {print $3 "/" $2}')"
- echo "磁盘使用: $(df -h / | awk 'NR==2 {print $3 "/" $2 " (" $5 ")"}')"
- # 2. 检查MySQL主从状态
- echo ""
- echo "[2/8] 检查MySQL主从状态..."
- if systemctl is-active --quiet mysqld; then
- echo "✓ MySQL服务运行中"
- mysql -u root -p"$MYSQL_PASSWORD" -e "SHOW SLAVE STATUS\G" 2>/dev/null | grep -E "Slave_IO_Running|Slave_SQL_Running" || echo " (主库模式)"
- else
- echo "✗ MySQL服务未运行"
- fi
- # 3. 检查Redis主从状态
- echo ""
- echo "[3/8] 检查Redis主从状态..."
- if systemctl is-active --quiet redis; then
- echo "✓ Redis服务运行中"
- redis-cli -a "$REDIS_PASSWORD" INFO replication 2>/dev/null | grep -E "role|master_host|master_link_status" || echo " (无法连接)"
- else
- echo "✗ Redis服务未运行"
- fi
- # 4. 检查后端服务
- echo ""
- echo "[4/8] 检查后端服务..."
- BACKEND_PORTS=(8080 8081)
- for port in "${BACKEND_PORTS[@]}"; do
- if curl -sf http://127.0.0.1:$port/health > /dev/null 2>&1; then
- echo "✓ 后端服务 $port 健康"
- else
- echo "✗ 后端服务 $port 异常"
- fi
- done
- # 5. 检查Nginx
- echo ""
- echo "[5/8] 检查Nginx..."
- if systemctl is-active --quiet nginx; then
- echo "✓ Nginx服务运行中"
- if curl -sf http://127.0.0.1/health > /dev/null 2>&1; then
- echo "✓ Nginx健康检查通过"
- else
- echo "✗ Nginx健康检查失败"
- fi
- else
- echo "✗ Nginx服务未运行"
- fi
- # 6. 检查MinIO
- echo ""
- echo "[6/8] 检查MinIO..."
- if docker ps | grep -q minio; then
- echo "✓ MinIO容器运行中"
- if curl -sf http://127.0.0.1:9000/minio/health/live > /dev/null 2>&1; then
- echo "✓ MinIO健康检查通过"
- else
- echo "✗ MinIO健康检查失败"
- fi
- else
- echo "✗ MinIO容器未运行"
- fi
- # 7. 检查网络连通性
- echo ""
- echo "[7/8] 检查网络连通性..."
- PEER_IP="172.16.0.67"
- if [ "$(hostname -I | awk '{print $1}')" = "$PEER_IP" ]; then
- PEER_IP="172.16.0.68"
- fi
- if ping -c 1 -W 2 "$PEER_IP" > /dev/null 2>&1; then
- echo "✓ 对端机器 $PEER_IP 网络连通"
- else
- echo "✗ 对端机器 $PEER_IP 网络不通"
- fi
- # 8. 检查磁盘空间
- echo ""
- echo "[8/8] 检查磁盘空间..."
- DISK_USAGE=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
- if [ "$DISK_USAGE" -lt 80 ]; then
- echo "✓ 磁盘使用率: ${DISK_USAGE}% (正常)"
- elif [ "$DISK_USAGE" -lt 90 ]; then
- echo "⚠ 磁盘使用率: ${DISK_USAGE}% (警告)"
- else
- echo "✗ 磁盘使用率: ${DISK_USAGE}% (危险)"
- fi
- echo ""
- echo "=========================================="
- echo "健康检查完成"
- echo "=========================================="
|