如何在Debian上监控FTPServer状态
导读:在 Debian 上监控 FTPServer 状态 一 快速检查与日志定位 服务状态与自启 查看运行状态:sudo systemctl status vsftpd(若使用 proftpd:sudo systemctl status pr...
在 Debian 上监控 FTPServer 状态
一 快速检查与日志定位
- 服务状态与自启
- 查看运行状态:sudo systemctl status vsftpd(若使用 proftpd:sudo systemctl status proftpd)
- 设置开机自启:sudo systemctl enable --now vsftpd
- 端口与连接
- 监听端口(默认 21/TCP):ss -tulnp | grep ‘:21’ 或 netstat -tulnp | grep ‘:21’
- 当前连接与进程:sudo lsof -i :21 或 sudo lsof -i -P -n | grep vsftpd
- 日志与故障排查
- 服务日志:sudo journalctl -u vsftpd -f
- 应用日志:常见路径 /var/log/vsftpd.log 或 /var/log/vsftpd/(按实际配置);proftpd 常见于 /var/log/proftpd/。实时查看:tail -f /var/log/vsftpd.log
- 网络抓包(可选)
- 抓控制通道:sudo tcpdump -i eth0 port 21 -nn -v
二 资源与性能监控
- 进程与资源
- 交互式查看:htop(安装:sudo apt-get install htop)
- 系统概览:top
- 系统资源
- 内存:free -m
- 磁盘空间:df -h
- 负载:uptime
- I/O 与 CPU
- 综合资源:vmstat 1
- 磁盘 I/O:iostat -x 1(安装:sudo apt-get install sysstat)
- 全能监控工具
- nmon:sudo apt-get install nmon,适合现场排查与趋势观察
三 持续监控与告警方案
- 企业级平台
- Nagios:通过 check_ftp / check_nrpe 做可用性探测与告警(示例命令:/usr/lib/nagios/plugins/check_ftp -H 127.0.0.1)
- Zabbix:在 Web 端添加主机,使用内置 FTP 模板或自定义监控项/触发器
- Prometheus + Grafana:以 node_exporter 采集主机指标,结合 Blackbox Exporter 对 21/TCP 做主动探测,Grafana 可视化与告警
- 轻量自建
- Monitorix:安装后默认监听 8080/TCP,配置 /etc/monitorix/monitorix.conf 并启用服务,适合中小规模与快速部署
四 一键健康检查脚本示例
- 功能:检查服务、端口、登录测试(明文 FTP),异常时邮件告警
- 保存为 /usr/local/bin/check_ftp.sh,赋权 chmod +x
#!/usr/bin/env bash
set -Eeuo pipefail
FTP_HOST="${
1:-127.0.0.1}
"
FTP_PORT="${
2:-21}
"
WARN=3
CRIT=5
FROM="ftp-monitor@$(hostname)"
TO="${
3:-admin@example.com}
"
SUBJ_OK="[OK] FTP ${
FTP_HOST}
:${
FTP_PORT}
healthy"
SUBJ_FAIL="[FAIL] FTP ${
FTP_HOST}
:${
FTP_PORT}
check failed"
TMP_ERR=$(mktemp)
cleanup() {
rm -f "$TMP_ERR";
}
trap cleanup EXIT
check_service() {
if ! systemctl is-active --quiet vsftpd;
then
echo "CRITICAL: vsftpd is not running" >
&
2
return 1
fi
}
check_port() {
if ! ss -lntp | grep -q ":${
FTP_PORT}
";
then
echo "CRITICAL: port ${
FTP_PORT}
not listening" >
&
2
return 1
fi
}
check_login() {
local user="${
4:-ftp}
"
local pass="${
5:-}
"
local timeout=10
if command -v lftp >
/dev/null 2>
&
1;
then
if lftp -u "$user,$pass" -p "$FTP_PORT" -e "quit" "ftp://${
FTP_HOST}
" >
/dev/null 2>
&
1;
then
echo "OK: login as ${
user}
succeeded"
return 0
else
echo "CRITICAL: login as ${
user}
failed" >
&
2
return 1
fi
else
echo "WARNING: lftp not installed, skip login test" >
&
2
return 0
fi
}
main() {
local errors=0
check_service || ((errors++))
check_port || ((errors++))
check_login "$@" || ((errors++))
if (( errors == 0 ));
then
echo "$SUBJ_OK"
exit 0
elif (( errors <
= WARN ));
then
echo "$SUBJ_FAIL: $errors issue(s)" >
&
2
exit 1
else
echo "$SUBJ_FAIL: $errors issue(s)" >
&
2
exit 2
fi
}
main "$@"
- 定时巡检(每 5 分钟):crontab -e
- 示例:*/5 * * * * /usr/local/bin/check_ftp.sh 127.0.0.1 21 admin@example.com
- 说明
- 上述登录测试为明文 FTP;若为 FTPS(FTP over SSL/TLS),请改用支持 TLS 的客户端(如 curl 的 –ftp-ssl)或跳过登录项,改为仅做端口连通性探测(如 nc/telnet 到 21/TCP)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Debian上监控FTPServer状态
本文地址: https://pptw.com/jishu/750532.html
