You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下Monit磁盘I/O监控告警配置问题与版本升级需求

我之前折腾Monit磁盘IO告警的时候也踩过不少坑,结合官方文档和实际操作经验,给你理清楚问题出在哪以及怎么解决:

一、磁盘读写速率告警配置失败的原因与解决办法

1. 核心语法错误:混淆了磁盘使用率与读写速率的配置

你提到的官方示例check filesystem xxx with path /xxx/xxx if read rate > 90% then alert其实有个关键误区:

  • 磁盘使用率的监控才用百分比(比如if usage >90% then alert),而读写速率是绝对值指标,必须明确指定单位(如MB/s、KB/s),直接写百分比会触发语法错误,这是你配置失败的第一个原因。

2. 版本兼容性问题:老版本Monit不支持read/write rate关键字

Monit在5.27版本之后才正式支持read rate和write rate的原生监控,如果你当前的版本低于这个版本,哪怕语法写对了也会报错——这也是你说“监控项能显示磁盘分析数据但告警规则配置失败”的核心原因:老版本的Monit本身就没实现这个功能。

针对不同版本的配置方案

方案1:新版本Monit(5.27+)的正确配置

先通过monit -V确认版本,符合要求的话,正确的配置示例如下:

check filesystem data_disk with path /mnt/data
  # 连续5个监控周期(默认1分钟/周期)读速率超过100MB/s则告警
  if read rate > 100 MB/s for 5 cycles then alert
  # 连续3个监控周期写速率超过80MB/s则告警
  if write rate > 80 MB/s for 3 cycles then alert

配置完成后用monit -t验证,无报错后重启Monit服务即可。

方案2:老版本Monit(<5.27)的替代方案

老版本不支持原生的IO速率监控,需要借助外部工具(如iostat、sar)通过check program来实现:

# 监控sda磁盘的写速率,超过80MB/s则告警
check program disk_write_sda with path "/usr/bin/iostat -d -x 1 2 | grep 'sda' | tail -n1 | awk '{print $7}'"
  if output > 80 then alert  # 数值对应iostat输出的wMB/s单位,根据实际情况调整
  every 2 cycles  # 每2个周期执行一次检测
  • 先手动执行脚本部分,确认输出是纯数字(比如iostat -d -x 1 2 | grep 'sda' | tail -n1 | awk '{print $7}'),确保Monit能正确解析数值。
  • 注意给脚本赋予执行权限,确保Monit用户有执行iostat的权限。
二、Monit版本升级方案

根据你的操作系统类型,选择对应的升级方式:

1. Debian/Ubuntu系列

  • 先备份配置文件:sudo cp /etc/monit/monitrc /etc/monit/monitrc.bak
  • 卸载旧版本:sudo apt remove --purge monit
  • 添加Monit官方源:
    创建/etc/apt/sources.list.d/monit.list文件,写入:
    deb https://packages.monit.org/debian <你的发行版代号> monit
    
    比如Ubuntu 22.04填写jammy,Debian 11填写bullseye。
  • 导入GPG密钥:wget -O - https://packages.monit.org/debian/monit.gpg | sudo apt-key add -
  • 更新源并安装新版本:sudo apt update && sudo apt install monit

2. RHEL/CentOS/Rocky系列

  • 备份配置文件:sudo cp /etc/monit/monitrc /etc/monit/monitrc.bak
  • 卸载旧版本:sudo yum remove monit
  • 添加Monit官方源:
    创建/etc/yum.repos.d/monit.repo文件,写入:
    [monit]
    name=Monit Repository
    baseurl=https://packages.monit.org/rhel/$releasever/$basearch
    gpgkey=https://packages.monit.org/monit.gpg
    enabled=1
    gpgcheck=1
    
  • 安装新版本:sudo yum install monit

3. 通用源码编译升级(适合所有系统)

  • 备份配置文件:sudo cp /etc/monit/monitrc /etc/monit/monitrc.bak
  • 下载最新稳定版源码(替换为当前最新版本号):wget https://mmonit.com/monit/dist/monit-5.33.0.tar.gz
  • 解压并进入目录:tar xzf monit-5.33.0.tar.gz && cd monit-5.33.0
  • 配置编译参数:./configure --prefix=/usr/local/monit(可自定义安装路径)
  • 编译安装:make && sudo make install
  • 替换系统中的旧二进制:sudo ln -sf /usr/local/monit/bin/monit /usr/bin/monit
  • 重启Monit服务:sudo systemctl restart monit

升级完成后,再次用monit -V确认版本,然后按照新版本的配置语法设置告警规则即可。

内容的提问来源于stack exchange,提问作者MTBer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:58:00