跳到主要内容
VM Ops Manager
下载
文档目录

监控

为每个 VM 启用轮询,了解采集的指标,并查看确切的探测命令。


这里的监控是无代理的:不会在服务器上安装任何东西,也不会开放额外端口。 应用为每个被监控的 VM 维持一条 SSH 连接,每个轮询周期只运行一条只读命令。

为某个 VM 启用监控

打开该 VM 的监控标签页,然后:

  1. 打开启用开关。
  2. 选择用于轮询的凭据 —— 应使用低权限账户,参见 凭据。
  3. 设置轮询间隔(秒)。大多数情况下 60 秒是比较合理的折中值。

轮询会在大约 15 秒内开始 —— 后台监控任务会周期性检查哪些 VM 已启用, 并将其与正在运行的任务匹配。关闭开关后,任务也会在同样的时间范围内停止。

立即轮询按钮会立刻执行一次轮询,而不必等待下一个计划周期。

加密库锁定意味着监控停止

轮询需要凭据,而凭据保存在加密库中。因此:

  • 锁定加密库 → 所有轮询任务停止。
  • 解锁加密库 → 任务自动重新启动。
  • 锁屏 → 无影响,监控照常继续运行。

采集的指标

分组内容
系统负载运行时间、1 分钟负载均值、CPU 百分比
内存已用/总内存,已用/总交换空间
磁盘每个挂载点的已用量、总量、百分比
网络每秒接收/发送字节数
进程CPU 占用最高的六个进程
安全监听端口、账户、已授权的 SSH 密钥、sudoers、登录日志

CPU 百分比和网络速率是在相邻两次轮询之间推算得出的 —— 因此启用监控后 的第一次轮询不会有这两项数值。

历史数据与保留期

  • 原始采样数据保留 14 天,之后会被清理。
  • 与此同时,数据会被聚合为每日汇总并长期保存。月度报告读取的是这张 汇总表,而不是原始采样 —— 如果读取原始采样,“月度报告” 实际上会 悄悄地只包含两周的数据。

监控标签页中的图表取自这 14 天的原始采样窗口。

服务器无响应时

单次轮询失败属于正常情况。连续两次失败会将该 VM 标记为不可达, 并创建一个事件。

每次失败后,轮询间隔会逐步退避(最多 5 分钟),以避免持续冲击一台已经 失联的机器。当机器恢复后,轮询间隔会恢复正常,并记录一个恢复事件。

探测命令

当客户问 “你们的软件在我们服务器上到底运行了什么” 时,您需要的就是这个。 该命令是源代码中的一个常量,绝不会由用户数据拼接而成,应用会原样展示 (在监控标签页中点击查看探测命令按钮)。

LC_ALL=C; export LC_ALL
echo '@@VMOPS:uptime@@';  cat /proc/uptime
echo '@@VMOPS:load@@';    cat /proc/loadavg
echo '@@VMOPS:cpu@@';     grep '^cpu ' /proc/stat
echo '@@VMOPS:mem@@';     grep -E '^(MemTotal|MemFree|MemAvailable|Buffers|Cached|SwapTotal|SwapFree):' /proc/meminfo
echo '@@VMOPS:net@@';     cat /proc/net/dev
echo '@@VMOPS:disk@@';    df -P -k
echo '@@VMOPS:procs@@';   ps -eo pcpu,pmem,comm --sort=-pcpu | head -6
echo '@@VMOPS:ports@@';   ss -H -tuln || netstat -tuln
echo '@@VMOPS:users@@';   cut -d: -f1,3,7 /etc/passwd
echo '@@VMOPS:keys@@';    # readable authorized_keys file contents
echo '@@VMOPS:sudoers@@'; cat /etc/sudoers /etc/sudoers.d/*
echo '@@VMOPS:auth@@';    journalctl -u sshd  # or /var/log/auth.log
echo '@@VMOPS:fail2ban@@'; fail2ban-client status sshd
echo '@@VMOPS:end@@'

这个设计背后有四条原则:

一次往返。 每次轮询都只是一次 sh -c 调用,返回一个用分隔符隔开的 单一数据块。同时监控 30 台机器不应该意味着 300 个 exec 通道。

读取 /proc,而不是 top。 top、vmstat、free 的输出格式会因 发行版和语言环境而不同;/proc 则不会。

固定且可审计。 该命令绝不会根据输入数据拼接组装 —— 不存在命令注入的 攻击面,其内容也随时可供检查。

只降级,绝不崩溃。 任何需要 root 权限但不可用的部分会返回为空, 其余轮询内容照常返回。