You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在Zabbix 5.0.30中监控CentOS 7服务器的磁盘I/O(含TPS指标)

如何在Zabbix 5.0.30中监控CentOS 7服务器的磁盘I/O(含TPS指标)

我来帮你搞定这个问题~刚好之前处理过类似的需求,给你两种靠谱的方案,你可以根据自己的情况选:

方案一:用Zabbix内置监控项+计算项(无需修改Agent配置)

这个方案不用动Agent配置,直接在Zabbix前端就能搞定,适合不想折腾Agent的情况:

1. 监控kB_read/s(每秒读取KB数)

  • 进入Zabbix前端对应主机页面,点击「创建监控项」
    • 名称:磁盘sda每秒读取KB数
    • 键值:vfs.dev.read[sda,bytes,ps]
    • 类型:数值(浮点)
    • 单位:kB/s
    • 预处理:添加「除以」操作,值填1024(内置项返回字节数,转成KB需要除以1024)

2. 监控kB_wrtn/s(每秒写入KB数)

  • 同样创建监控项:
    • 名称:磁盘sda每秒写入KB数
    • 键值:vfs.dev.write[sda,bytes,ps]
    • 类型:数值(浮点)
    • 单位:kB/s
    • 预处理:添加「除以」操作,值填1024

3. 监控TPS(每秒I/O操作数)

Zabbix没有直接返回TPS的内置项,但TPS本质是每秒读操作数+每秒写操作数,我们可以用计算项实现:

  • 先创建两个基础监控项(如果还没的话):
    • 读操作每秒:键值vfs.dev.read[sda,operations,ps],类型数值(浮点)
    • 写操作每秒:键值vfs.dev.write[sda,operations,ps],类型数值(浮点)
  • 再创建计算项:
    • 名称:磁盘sda的TPS
    • 键值:custom.disk.tps[sda](自定义键值,只要不重复即可)
    • 类型:数值(浮点)
    • 单位:tps
    • 计算公式:last("vfs.dev.read[sda,operations,ps]") + last("vfs.dev.write[sda,operations,ps]")

方案二:自定义UserParameter(和iostat输出完全匹配)

如果你想直接拿到和iostat -d sda完全一致的数值,就用这个方案,需要修改Agent配置:

1. 修改Zabbix Agent配置文件

登录你的CentOS 7服务器,编辑Agent配置:

vi /etc/zabbix/zabbix_agentd.conf

添加以下自定义参数到文件末尾:

# 提取sda的TPS
UserParameter=disk.iostat.tps[sda],iostat -d sda 1 2 | awk 'NR==4 {print $2}'
# 提取sda的kB_read/s
UserParameter=disk.iostat.kb_read[sda],iostat -d sda 1 2 | awk 'NR==4 {print $3}'
# 提取sda的kB_wrtn/s
UserParameter=disk.iostat.kb_wrtn[sda],iostat -d sda 1 2 | awk 'NR==4 {print $4}'

解释:iostat -d sda 1 2是连续取两次统计(间隔1秒),得到平均数值避免瞬时波动;awk 'NR==4'是取输出的第4行(对应sda的统计行),再提取对应列的数值。

2. 重启Zabbix Agent服务

systemctl restart zabbix-agent

3. 在Zabbix前端创建监控项

回到Zabbix前端,给对应主机创建三个监控项:

  • TPS:
    • 名称:磁盘sda的TPS
    • 键值:disk.iostat.tps[sda]
    • 类型:数值(浮点)
    • 单位:tps
  • kB_read/s:
    • 名称:磁盘sda每秒读取KB数
    • 键值:disk.iostat.kb_read[sda]
    • 类型:数值(浮点)
    • 单位:kB/s
  • kB_wrtn/s:
    • 名称:磁盘sda每秒写入KB数
    • 键值:disk.iostat.kb_wrtn[sda]
    • 类型:数值(浮点)
    • 单位:kB/s

验证方法

你可以在Zabbix服务器上用zabbix_get命令测试自定义参数是否生效,比如:

zabbix_get -s <你的CentOS服务器IP> -k disk.iostat.tps[sda]

如果能返回类似0.27的数值,就说明配置成功了。

备注:内容来源于stack exchange,提问作者TRONG NGUYEN

火山引擎 最新活动