面试题答案
一键面试整体思路
- 从服务器端:
- 编写脚本定期收集本地监控数据,如使用
free
命令获取内存使用率,sar
等命令获取网络流量。 - 将收集到的数据推送给主服务器,可使用
curl
等工具通过网络发送数据到主服务器的指定接口。
- 编写脚本定期收集本地监控数据,如使用
- 主服务器端:
- 搭建接收数据的接口,可借助
httpd
等 Web 服务器或简单的nc
监听端口来接收从服务器推送的数据。 - 对接收的数据进行分析,设定各项指标的正常范围,判断从服务器指标是否异常。
- 当指标异常时,通过邮件(如
mail
命令)或其他方式通知相关人员。
- 搭建接收数据的接口,可借助
关键部分Bash代码示例
从服务器收集并推送数据脚本(以内存使用率为例)
#!/bin/bash
# 获取内存使用率
memory_usage=$(free -h | awk 'NR==2{printf "%.2f%%", ($3/$2)*100}')
# 推送数据到主服务器(假设主服务器IP为192.168.1.100,端口为8080)
curl -X POST -d "server=$(hostname)&memory_usage=$memory_usage" http://192.168.1.100:8080/receive_data
主服务器接收数据脚本(简单使用 nc
监听端口示例)
#!/bin/bash
# 监听端口8080接收数据
nc -l 8080 | while read data; do
# 解析数据,假设数据格式为 server=xxx&memory_usage=xx.xx%
IFS='=&' read -r -a parts <<< "$data"
server=${parts[1]}
memory_usage=${parts[3]}
# 分析数据,假设内存使用率超过80%为异常
if (( $(echo "$memory_usage > 80" | bc -l) )); then
echo "Server $server has high memory usage: $memory_usage" | mail -s "Memory Alert" admin@example.com
fi
done
上述代码仅为示例,实际应用中需要根据具体需求进行完善,如网络安全、数据格式校验等。