#!/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
企业级Linux系统健康检查脚本
最新推荐文章于 2026-03-31 10:22:22 发布

258

被折叠的 条评论
为什么被折叠?



