在 Debian 上监控 FetchDebian 的可执行方案
一 监控目标与总体思路
- 明确要监控的对象:包括 fetchdebian 进程的存活与退出码、下载进度与速率、网络连通性与镜像可用性、磁盘空间与 I/O、以及运行日志与错误。
- 组合使用 命令行实时监控、日志采集与告警、可选的可视化平台,形成从即时排查到长期趋势的完整闭环。
二 命令行实时监控
- 进程与资源
- 使用 pgrep/pidof 判断进程是否存在,配合 ps 查看命令行与启动参数:
- pgrep -x fetchdebian || echo “fetchdebian not running”
- ps -fp “$(pgrep -x fetchdebian)”
- 资源占用用 top/htop(交互)、vmstat、iostat、free、df、uptime 观察 CPU、内存、磁盘与负载变化;如需按进程统计,可用 pidstat -u -p (来自 sysstat)。示例:
- vmstat 1 5
- iostat -xz 1
- free -m
- df -h
- 网络与连接
- 查看连接与监听:ss -tulnp | grep fetchdebian;必要时用 netstat -tulnp。
- 连通性与镜像时延:curl -I --max-time 5 https://deb.debian.org/debian/ 或使用 time curl -o /dev/null https://deb.debian.org/debian/。
- 下载进度与速率
- 启用 fetchdebian -v/–verbose 获取详细输出;结合 pv 观察管道速率:fetchdebian package_name | pv -bart | cat >/dev/null(若工具直接写文件,可改用 lsof/ionice 观察写入速率)。
- 磁盘与 I/O 用 iostat -x 1 观察写吞吐与 await。
- 日志
- 若通过 systemd 托管:journalctl -u fetchdebian.service -f(实时跟踪);非 systemd 场景将标准输出/错误重定向到文件后用 tail -f 观察。
三 日志采集与告警
- 本地日志与轮转
- 建议将 fetchdebian 的输出统一到 syslog 或专用日志文件,并配置 logrotate 做按日/按大小轮转,避免磁盘被占满。
- 集中化与可视化
- 小规模可用 Uptime Kuma 做状态页与简单告警;中大型建议 Prometheus + Grafana 采集系统指标并配置阈值告警;日志侧可用 Graylog 或 ELK(Elasticsearch+Logstash+Kibana) 做检索、分析与可视化。
四 自动化巡检与阈值告警脚本
- 目标:对“进程存活、镜像连通、磁盘空间、最近错误”四项做定时巡检,异常时输出非零并触发告警(如邮件/企业微信/钉钉 Webhook)。
- 示例脚本(可直接放入 /usr/local/bin/check_fetchdebian.sh,配合 cron 每5分钟执行)
#!/usr/bin/env bash
set -Eeuo pipefail
LOGFILE="/var/log/fetchdebian-monitor.log"
WARN=80
CRIT=90
MIRROR="https://deb.debian.org/debian/"
log() { echo "$(date -Iseconds) $*" | tee -a "$LOGFILE"; }
if ! pgrep -x fetchdebian >/dev/null; then
log "CRIT: fetchdebian is NOT running"
exit 2
fi
if ! curl -I --max-time 5 "$MIRROR" >/dev/null 2>&1; then
log "CRIT: cannot reach Debian mirror $MIRROR"
exit 2
fi
usage=$(df / | awk 'NR==2 {gsub(/%/,""); print $5}')
if (( usage >= CRIT )); then
log "CRIT: rootfs ${usage}% used (threshold ${CRIT}%)"
exit 2
elif (( usage >= WARN )); then
log "WARN: rootfs ${usage}% used (threshold ${WARN}%)"
exit 1
fi
if journalctl -u fetchdebian.service --since "5 minutes ago" -q | grep -qi 'error'; then
log "CRIT: 'error' found in fetchdebian logs within last 5 minutes"
exit 2
fi
log "OK: fetchdebian running, mirror reachable, disk ${usage}%, no recent errors"
exit 0
- 使用提示
- 将脚本加入 cron:*/5 * * * * root /usr/local/bin/check_fetchdebian.sh
- 结合 Prometheus Node Exporter 文本收集器 或 Uptime Kuma 心跳 上报状态,实现统一告警与看板。
五 可选的可视化与长期监控
- 轻量到企业级可按需选择:Netdata(开箱即用的实时 Web 监控)、Glances(终端/Web)、Monit(进程与资源自愈)、Nagios/Zabbix(企业级告警与发现)、Prometheus + Grafana(时序指标与灵活面板)。