跳转至内容
  • 最近帖子
  • 0 未读帖子 0
  • 板块分类
  • 服务状态
  • 跳转官网
  • 帮助文档
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

XTerminal 反馈社区

  1. 首页
  2. 版块
  3. xterminal 专区
  4. 服务器监控方式是否可以改一下

服务器监控方式是否可以改一下

已定时 已固定 已锁定 已移动 xterminal 专区
2 帖子 2 发布者 80 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C
    C
    ChrisDong
    发表于 最后由 编辑
    #1

    现在的服务器监控功能很好用,不过有一个小问题还可以优化。
    服务器监控是每隔几秒钟发送一次查询命令,查询CPU,内存,硬盘等信息的,但是这种方式有一个问题,就是我在使用堡垒机的时候,每一条命令都会被审计,那么Xterminal发出的这些查询服务器状态的命令也会被记录。
    这样堡垒机每个月审计的时候都会有大量的无用命令,影响审计结果,希望可以改用Mobaxterm的方式,无需发送命令也可以查询服务器状态。

    1 条回复 最后回复
    0
    • S
      S
      sanjinCoder
      编写于 最后由 编辑
      #2

      一、问题描述

      在 Ubuntu 26.04.1 LTS 服务器上,XTerminal 的服务器监控功能可以正常显示 CPU、内存、网络和磁盘容量信息,但磁盘 I/O 读取速度、写入速度始终显示为 0.0 B。

      经过排查发现,Linux 内核能够正常统计磁盘 I/O,XTerminal 远程采集脚本也可以计算读写速度,但对于 LVM(Logical Volume Manager)逻辑卷存在设备识别和名称关联问题。

      经过修改采集脚本的设备过滤规则,以及将 I/O 设备名统一为文件系统挂载源名称后,磁盘读写速度成功恢复显示。

      二、问题环境

      项目 环境
      操作系统 Ubuntu 26.04.1 LTS (Resolute Raccoon)
      内核版本 7.0.0-34-generic
      文件系统 ext4
      磁盘结构 SCSI 磁盘 + LVM
      根文件系统 /dev/mapper/ubuntu--vg-ubuntu--lv
      对应块设备 /dev/dm-0
      XTerminal 远程采集脚本版本 26
      XTerminal 客户端版本 最新版(具体版本号待补充)

      重装最新远程监控脚本后,问题依然存在。

      三、发现的两个问题

      问题 1:采集脚本没有包含 dm-* 设备

      文件路径:

      ~/.xterminal/sub/fs_stats/fs_stats.sh

      当前远程脚本版本 26 的设备过滤逻辑为:

      is_tracked_block_device() {
          case "$1" in
              sd[a-z]*|vd[a-z]*|hd[a-z]*|xvd[a-z]*|nvme*n*|mmcblk*|mtdblock*|ubiblock*|loop*)
                  return 0
                  ;;
          esac
          return 1
      }
      

      问题:缺少 dm-* 设备的匹配规则。

      Ubuntu 使用 LVM 时,实际逻辑卷设备为 dm-0。虽然 /proc/diskstats 包含该设备的 I/O 统计数据,但采集脚本会将其过滤。

      手动增加:

      |dm-[0-9]*
      

      之后,fs_stats.stats 成功出现:

      - device: dm-0
        rxPerSec: 0
        wxPerSec: 84195
        source: proc
      

      证明该设备可以正常采集。

      问题 2:LVM 设备名称没有正确关联

      添加 dm-0 采集支持后,监控界面仍然显示 0.0 B。

      进一步发现:

      文件系统容量统计使用:

      fsSize:
        - fs: /dev/mapper/ubuntu--vg-ubuntu--lv
          type: ext4
          mount: /
      

      磁盘 I/O 统计使用:

      fsStats:
        - device: dm-0
          rxPerSec: 0
          wxPerSec: 230286
          source: proc
      

      两个名称实际指向同一个块设备,但 XTerminal 无法正确关联其读写速度。

      为验证这一问题,修改采集脚本,将 dm-0 对外输出的设备名改成:

      /dev/mapper/ubuntu--vg-ubuntu--lv
      

      修改后采集结果:

      fsStats:
        - device: /dev/mapper/ubuntu--vg-ubuntu--lv
          rxPerSec: 0
          wxPerSec: 68949
          source: proc
      

      测试结果:XTerminal 磁盘写入速度成功恢复显示。

      进一步使用 dd 进行直接读取测试,产生实际磁盘读取 I/O,XTerminal 也能够正确显示读取速度。

      说明客户端可以展示读取和写入速度,异常与 LVM 设备名称关联具有明确关系。

      四、复现与验证结果

      测试操作 结果
      原版脚本监控 LVM 根分区 读写速度始终为 0
      检查 /proc/diskstats 存在正常 I/O 数据
      重装最新采集脚本 未解决
      添加 dm-[0-9]* 匹配规则 可以采集 dm-0,但界面仍为 0
      将 dm-0 输出为 ubuntu--vg-ubuntu--lv 未恢复
      将 dm-0 输出为完整 /dev/mapper/ubuntu--vg-ubuntu--lv 写入速度恢复
      使用 dd 产生直接磁盘读取 读取速度恢复
      恢复原脚本 临时修复不再保留

      补充说明:低负载下读取速度为 0 是正常情况,因为实际采样结果 rxPerSec 也可能为 0,不属于本次 Bug。

      五、原因分析

      根据实际脚本及验证结果,推测存在两个需要修复的兼容性问题:

      1. 远程采集脚本缺少 Device Mapper 设备支持。

      当前设备过滤规则没有包含 dm-*,导致 LVM 逻辑卷不能直接进入磁盘 I/O 统计列表。

      2. 磁盘容量和 I/O 数据的设备标识缺少规范化关联。

      fsSize.fs 使用 /dev/mapper/...,而 fsStats.device 使用 dm-0。

      两者虽然属于同一个逻辑卷,但当前展示链路未能正确关联。将 I/O 设备名称改成与 fsSize.fs 完全一致后,监控恢复正常。

      六、建议修复方案

      建议官方从以下两方面修复:

      1. 完善 Linux 远程采集脚本:在 is_tracked_block_device() 中支持 dm-[0-9]*,确保 LVM 和 Device Mapper 设备可以被正常采集。

      2. 完善设备名称映射逻辑:对 /dev/mapper/...、/dev/dm-* 等同一块设备的不同命名形式进行规范化关联,建议考虑 Linux 主次设备号(major:minor),避免直接通过设备名称字符串匹配。

      另外,在统计磁盘总 I/O 时,建议避免将 sda、sda3、dm-0 同一条存储链路的 I/O 简单相加,以免重复计算。

      七、结论

      本次问题在 Ubuntu 26.04.1 LTS + LVM 环境下已复现,并通过修改远程采集脚本成功验证临时解决方案。

      这不是 Ubuntu 内核无法提供磁盘 I/O 数据,而是 XTerminal 对 LVM 逻辑卷的采集及设备名称关联存在兼容性问题。

      希望官方能够在后续版本中修复,避免用户每次更新采集脚本后需要重新手动修改。


      如有需要,愿意提供复现bug的环境

      1 条回复 最后回复
      0

      你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

      厌倦了每次访问都刷到同样的帖子?您注册账号后,您下次访问时都将自动回到上次浏览的位置,并可选择接收新回复的通知(通过电子邮件或推送通知)。您还可以收藏帖子、为帖子点赞,以此向其他社区成员表达您的感谢。

      有了你的建议,这篇帖子会更精彩哦 💗

      注册 登录
      回复
      • 在新帖中回复
      登录后回复
      • 从旧到新
      • 从新到旧
      • 最多赞同


      • 登录

      • 没有帐号? 注册

      • 登录或注册以进行搜索。

      4

      在线

      8.5k

      用户

      3.0k

      主题

      8.9k

      帖子
      雨云500M带宽服务器推荐🔥
      • 第一个帖子
        最后一个帖子
      0
      • 最近帖子
      • 未读帖子 0
      • 板块分类
      • 服务状态
      • 跳转官网
      • 帮助文档