ubuntu

在Ubuntu中如何监控Cobbler状态

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

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}

五 可视化与告警建议

0
看了该问题的人还看了