企业级Linux系统健康检查脚本

#!/bin/bash
# filename: system_health_check.sh
# 描述: 企业系统健康状态检查

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 阈值配置
CPU_THRESHOLD=80
MEMORY_THRESHOLD=90
DISK_THRESHOLD=85

# 函数:输出带颜色的消息
print_status() {
    local status=$1
    local message=$2
    
    case $status in
        "OK")
            echo -e "${GREEN}✓ OK${NC}: $message"
            ;;
        "WARNING")
            echo -e "${YELLOW}⚠ WARNING${NC}: $message"
            ;;
        "ERROR")
            echo -e "${RED}✗ ERROR${NC}: $message"
            ;;
    esac
}

# 函数:检查CPU使用率
check_cpu_usage() {
    local cpu_usage=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
    local cpu_usage_int=$(printf "%.0f" "$cpu_usage")
    
    if [[ $cpu_usage_int -gt $CPU_THRESHOLD ]]; then
        print_status "WARNING" "CPU使用率: ${cpu_usage}% (阈值: ${CPU_THRESHOLD}%)"
    else
        print_status "OK" "CPU使用率: ${cpu_usage}%"
    fi
}

# 函数:检查内存使用
check_memory_usage() {
    local memory_info=$(free | grep Mem)
    local total_mem=$(echo $memory_info | awk '{print $2}')
    local used_mem=$(echo $memory_info | awk '{print $3}')
    local memory_usage=$((used_mem * 100 / total_mem))
    
    if [[ $memory_usage -gt $MEMORY_THRESHOLD ]]; then
        print_status "WARNING" "内存使用率: ${memory_usage}% (阈值: ${MEMORY_THRESHOLD}%)"
    else
        print_status "OK" "内存使用率: ${memory_usage}%"
    fi
}

# 函数:检查磁盘空间
check_disk_usage() {
    local disk_usage=$(df / | awk 'NR==2 {print $5}' | cut -d'%' -f1)
    
    if [[ $disk_usage -gt $DISK_THRESHOLD ]]; then
        print_status "WARNING" "根分区使用率: ${disk_usage}% (阈值: ${DISK_THRESHOLD}%)"
    else
        print_status "OK" "根分区使用率: ${disk_usage}%"
    fi
}

# 函数:检查关键服务
check_services() {
    local services=("ssh" "nginx" "mysql")
    
    for service in "${services[@]}"; do
        if systemctl is-active --quiet "$service"; then
            print_status "OK" "服务 $service 运行正常"
        else
            print_status "ERROR" "服务 $service 未运行"
        fi
    done
}

# 函数:生成报告
generate_report() {
    local hostname=$(hostname)
    local timestamp=$(date '+%Y-%m-%d %H:%M:%S')
    
    echo "=== 系统健康检查报告 ==="
    echo "主机名: $hostname"
    echo "检查时间: $timestamp"
    echo "=========================="
    
    check_cpu_usage
    check_memory_usage
    check_disk_usage
    check_services
}

# 主函数
main() {
    echo "开始系统健康检查..."
    generate_report
}

# 脚本入口
if [[ "${BASH_SOURCE[0]}" == "${0}" ]]; then
    main "$@"
fi

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值