温馨提示×

在Ubuntu中如何监控Cobbler状态

小樊
33
2025-11-23 13:34:08
栏目: 智能运维

Ubuntu下监控Cobbler状态的可操作方案

一 基础健康检查

  • 服务运行状态:确认关键服务处于 active(running)状态
    • sudo systemctl is-active cobblerd
    • sudo systemctl is-active apache2(或 httpd)
    • sudo systemctl is-active tftpd-hpa
    • 若使用 Cobbler 管理 DHCP:sudo systemctl is-active isc-dhcp-server
  • 配置与同步:执行自检并同步配置,确保无阻塞项
    • cobbler check
    • cobbler sync
  • 引导文件就绪:检查常见引导加载器是否存在
    • ls /var/lib/cobbler/loaders/{pxelinux.0,menu.c32,grubx64.efi,shim.efi,yaboot} 2>/dev/null || echo “缺少引导文件,建议执行 cobbler get-loaders”

二 日志与端口观测

  • 关键日志实时查看
    • Cobbler 服务日志:sudo tail -f /var/log/cobbler/cobbler.log
    • Web 服务错误日志:sudo tail -f /var/log/apache2/error.log(若部署在 Apache)
  • 端口连通性验证
    • HTTP/HTTPS:ss -ltnp | egrep ‘:(80|443)’
    • TFTP:ss -ulnp | grep :69 或本机测试:tftp -v <cobbler_ip> -c get pxelinux.0
  • DHCP 探测(同网段验证)
    • sudo nmap --script broadcast-dhcp-discover -e <管理网卡名>

三 关键指标与巡检清单

维度 关键指标 命令或路径 判定要点
服务存活 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 记录与时间 变更后已同步无报错

四 自动化监控脚本示例

  • 功能:检查服务、自检、端口、引导文件,异常时输出非零并给出提示
  • 保存为 check_cobbler.sh,执行:chmod +x check_cobbler.sh && ./check_cobbler.sh
#!/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}

五 可视化与告警建议

  • 将脚本接入 Nagios/Icinga2/Zabbix 作为自定义检查项,设置阈值与告警联系人;结合 Grafana + Prometheus Node Exporter 采集系统资源(CPU、内存、磁盘 IO、网络)与端口存活,统一展示在运维看板。
  • 对关键变更(如新增发行版、修改 kickstart、调整 DHCP/TFTP)执行变更前后巡检,并在变更窗口内加强日志与端口的实时监控。

0