Ubuntu下监控Cobbler状态的可操作方案
一 基础健康检查
二 日志与端口观测
三 关键指标与巡检清单
| 维度 | 关键指标 | 命令或路径 | 判定要点 |
|---|---|---|---|
| 服务存活 | cobblerd、apache2、tftpd-hpa、isc-dhcp-server | systemctl is-active | 全部为 active |
| 配置健康 | check 无严重报错 | cobbler check | 无 “ERROR/严重” 项 |
| 引导文件 | pxelinux.0、menu.c32、grubx64.efi、shim.efi、yaboot | /var/lib/cobbler/loaders/ | 文件齐全 |
| 端口可达 | 80/443、69、67/68 | ss、nmap | 端口监听且可访问 |
| 镜像与仓库 | 发行版、仓库、ks 模板 | cobbler distro list、cobbler repo list、cobbler profile list | 列表不为空且可安装 |
| 安装日志 | 客户端安装过程 | /var/log/cobbler/installing/ | 最近安装有对应日志 |
| 配置一致性 | 最近一次同步 | cobbler sync 记录与时间 | 变更后已同步无报错 |
四 自动化监控脚本示例
#!/usr/bin/env bash
set -Eeuo pipefail
COBBLER_IP="192.168.1.10" # 修改为你的 Cobbler 服务器 IP
WEB_SERV="apache2" # Ubuntu 通常为 apache2(部分系统为 httpd)
DHCP_SERV="isc-dhcp-server" # 若未由 Cobbler 管理,可设为 ""
services=(cobblerd "$WEB_SERV" tftpd-hpa)
[[ -n "$DHCP_SERV" ]] && services+=("$DHCP_SERV")
echo "=== $(date) Cobbler 健康检查 ==="
# 1) 服务存活
for s in "${services[@]}"; do
if systemctl is-active --quiet "$s"; then
echo "[OK] $s 运行正常"
else
echo "[ERROR] $s 未运行"
FAILED=1
fi
done
# 2) cobbler check
if cobbler check >/dev/null 2>&1; then
echo "[OK] cobbler check 通过"
else
echo "[WARN] cobbler check 存在告警或错误,请执行:cobbler check"
FAILED=1
fi
# 3) 端口
for port in 80 443 69; do
if ss -ltnp | egrep -q ":$port\b"; then
echo "[OK] 端口 $port 监听中"
else
echo "[ERROR] 端口 $port 未监听"
FAILED=1
fi
done
# 4) DHCP 探测(同网段)
if command -v nmap >/dev/null 2>&1; then
if sudo nmap --script broadcast-dhcp-discover -e "$(ip route | awk '/^default/ {print $5; exit}')" \
| grep -q "Server Identifier"; then
echo "[OK] DHCP 响应正常"
else
echo "[WARN] 未检测到 DHCP 响应(若由外部 DHCP 管理可忽略)"
fi
fi
# 5) 引导文件
loaders=(pxelinux.0 menu.c32 grubx64.efi shim.efi yaboot)
missing=()
for f in "${loaders[@]}"; do
[[ -f "/var/lib/cobbler/loaders/$f" ]] || missing+=("$f")
done
if ((${#missing[@]})); then
echo "[ERROR] 缺少引导文件: ${missing[*]}"
echo "建议执行:cobbler get-loaders"
FAILED=1
else
echo "[OK] 引导文件齐全"
fi
# 6) 镜像/仓库/配置非空
if cobbler distro list | grep -q . && cobbler repo list | grep -q . && cobbler profile list | grep -q .; then
echo "[OK] 存在发行版/仓库/配置,可供安装"
else
echo "[WARN] 未发现发行版/仓库/配置,请先导入镜像并创建 profile"
FAILED=1
fi
# 7) 最近安装日志
if compgen -G "/var/log/cobbler/installing/*" >/dev/null; then
echo "[OK] 存在客户端安装日志目录"
else
echo "[INFO] 未找到客户端安装日志(可能尚未执行安装)"
fi
echo "=== 检查结束 ==="
exit ${FAILED:-0}
五 可视化与告警建议