1. 服务状态监控
通过systemctl命令检查SFTP服务(依赖SSH服务)的运行状态,确认服务是否正常启动:
sudo systemctl status sshd
若输出显示“Active: active (running)”,则表示SFTP服务正常运行。
2. 日志分析与审计
/etc/ssh/sshd_config,添加或修改以下行,将SFTP日志定向到local5设施并设置日志级别为DEBUG3(详细模式):Subsystem sftp /usr/libexec/openssh/sftp-server -l DEBUG3 -f local5
重启SSH服务使配置生效:sudo systemctl restart sshd。/etc/rsyslog.conf,在末尾添加以下行,将local5日志重定向到/var/log/sftp.log:auth,authpriv.*,local5.* /var/log/sftp.log
重启rsyslog服务:sudo systemctl restart rsyslog。tail -f /var/log/sftp.log实时监控SFTP操作日志(如连接、断开、文件传输等);或通过journalctl -u sshd -f查看SSH服务的实时日志(包含SFTP活动)。3. 实时进程与资源监控
top命令实时查看系统中各个进程的资源占用情况(按P键按CPU排序,按M键按内存排序),找到sftp-server进程对应的CPU、内存使用率;htop是top的增强版,提供更直观的界面和更多功能(如颜色标识、树形视图)。vmstat 1:每秒刷新虚拟内存统计信息(包括交换内存使用、进程阻塞情况);free -m:显示系统内存使用情况(总内存、已用内存、空闲内存,单位为MB);iostat -x 1:每秒刷新磁盘I/O统计信息(包括读写速度、I/O等待时间,%util列显示磁盘利用率);sar -u 1:每秒刷新CPU使用率(包括用户态、内核态、空闲时间)。4. 网络连接与流量监控
sudo netstat -tnp | grep sftp或sudo ss -tnp | grep sftp查看当前SFTP连接状态(显示本地地址、远程地址、连接状态、进程ID和名称),确认是否有异常连接(如大量TIME_WAIT状态的连接)。sudo tcpdump -i any port 22 -w sftp_traffic.pcap捕获SFTP流量(默认端口22),并将数据保存到pcap文件中,后续可通过tcpdump或Wireshark分析流量内容(如传输速率、数据包大小)。5. 第三方监控工具
sudo yum install prometheus,编辑/etc/prometheus/prometheus.yml配置文件,添加SFTP监控job(如抓取SSH服务的指标);sudo yum install grafana,启动Grafana服务后,添加Prometheus作为数据源,创建仪表盘展示SFTP连接数、传输速率、服务器资源使用率等指标。6. 自定义监控脚本
编写Shell脚本定期检查系统资源(CPU、内存、磁盘、网络)和SFTP连接状态,当指标超过预设阈值时发送报警。例如,以下脚本监控CPU、内存、磁盘使用率,并在使用率超过阈值时发送邮件:
#!/bin/bash
# 获取系统资源使用率
cpu=$(top -bn1 | grep "Cpu(s)" | awk '{ print 2 - $4 }')
mem=$(free -m | awk 'NR==2{ printf "%.2f%%", $3*100/$2 }')
disk=$(df -h | awk '$NF=="/"{ printf "%s", $5 }')
# 设置阈值
cpu_threshold=80
mem_threshold=85
disk_threshold=90
# 检查阈值并发送报警
if (( $(echo "$cpu > $cpu_threshold" | bc -l) )); then
echo "CPU使用率超过阈值:${cpu%.*}%" | mail -s "SFTP服务器CPU报警" admin@example.com
fi
if (( $(echo "$mem > $mem_threshold" | bc -l) )); then
echo "内存使用率超过阈值:${mem%.*}%" | mail -s "SFTP服务器内存报警" admin@example.com
fi
if [[ "$disk" > "$disk_threshold" ]]; then
echo "磁盘使用率超过阈值:$disk" | mail -s "SFTP服务器磁盘报警" admin@example.com
fi
将脚本保存为monitor_sftp.sh,添加执行权限(chmod +x monitor_sftp.sh),并通过cron定时运行(如每5分钟运行一次)。