标签:The 磁盘io lin info cache 探索 inux 正则 利用
前言:zabbix并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加。
由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用 自动发现 这个功能,自动发现后自动添加对服务器磁盘的监控,而且添加磁盘后也会自动添加到监控,实现自动化运维的效果,所以在这里也演示一次自动发现的配置。
经测试无法自动发现多个磁盘,只能手动把{#DISK_NAME} 改成要监控的磁盘 (例如sda、sdb,dm-*、bcache0等 虚看自己服务器配置信息)
如图,我需要监控以上磁盘的三个重要指标
1、在被监控设备上部署自动发现的脚本disk.sh,内容如下
#!/bin/bash
diskarray=(`iostat -d -x 1 1|awk ‘{print $1}‘|sort|uniq 2>/dev/null`)
length=${#diskarray[@]}
printf "{\n"
printf ‘\t‘"\"data\":["
for ((i=0;i<$length;i++))
do
printf ‘\n\t\t{‘
printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"
if [ $i -lt $[$length-1] ];then
printf ‘,‘
fi
done
printf "\n\t]\n"
printf "}\n"
在设备上测试脚本执行后的效果:
{
"data":[
{"{#DISK_NAME}":"Device:"},
{"{#DISK_NAME}":"dm-0"},
{"{#DISK_NAME}":"dm-1"},
{"{#DISK_NAME}":"dm-2"},
{"{#DISK_NAME}":"dm-3"},
{"{#DISK_NAME}":"Linux"},
{"{#DISK_NAME}":"sda"},
{"{#DISK_NAME}":"sdb"},
{"{#DISK_NAME}":"sdc"}
]
}
我这里简单粗暴过滤出来了执行iostat -d -x 1 1命令后输出的第一行,可能部分不是磁盘名称, 不过没有关系,在后续zabbix页面会进行过滤的
2、脚本加权限
chmod 755 /opt/aspire/product/zabbix/bin/disk.sh
chown zabbix:zabbix /opt/aspire/product/zabbix/bin/disk.sh
3、在zabbix_agentd.conf中加入自定义监控项
UserParameter=disk.vfs.dev.read.s[*],iostat -d -x 1 1 | egrep $1 | head -1 | awk ‘{print $$4}‘
UserParameter=disk.vfs.dev.write.s[*], iostat -d -x 1 1 | egrep $1 | head -1 | awk ‘{print $$5}‘
UserParameter=disk.vfs.dev.untl.s[*],iostat -d -x 1 1 | egrep $1 | head -1 | awk ‘{print $$14}‘
UserParameter=disk.discovery,/opt/aspire/product/zabbix/bin/disk.sh
4、重启zabbix_agent进程
1、在zabbix页面过滤你需要监控的磁盘名称,服务器中部分磁盘监控意义不大 ,全量监控影响服务器性能,我这里是过滤出名称以sd、dm、bc开头的磁盘。
2、打开Linux模板,添加自动发现规则:
这里定义的键值需要与之前写入配置文件自动探索脚本key值一致。
关联配置正则表达式
3、配置监控项原型
key值与上面写进配置文件的保持一致
三、检验结果:
分布式监控系统Zabbix4.2添加自动发现磁盘IO(实操)
标签:The 磁盘io lin info cache 探索 inux 正则 利用
原文地址:https://blog.51cto.com/13858192/2507638