当前位置:   article > 正文

linux 磁盘io时 cpu使用率,zabbix3.4监控自动发现磁盘io和CPU使用率触发器报警

/bin/cat /proc/diskstats | grep "\b$device\b" | head -1 | awk '{print $6}

使用zabbix自带模板实现监控CPU、磁盘

zabbix自带模板有一个 Template OS Linux模板。这个模板有监控CPU的监控项,如果没有添加一个监控项“ CPU idle time”

这个监控项监控的是CPU剩余的时间。监控到这个指标也就可以监控到使用了多少。

首先,如果没有添加一个监控项“ CPU idle time”,具体步骤如下:

配置—>模板—->找到Template OS Linux模板—监控项

af9a46267d5332d1f28798cd88abfae0.png

创建监控项

f447cc5e04a990fab4abb0253b5066c6.png

改名称—–>选择进入

a171ddee56b4d3e8e473055cc0e7127b.png

选择CPU idle time

05654d1a6de9e34671aa864210c066e8.png

填其他选项:

2e581743957af525c148365c1d395f21.png

添加好监控项的效果:监控项列表里出现“CPU idle time”

e5047035e74cccb640e3e9ee1a37886e.png

添加触发器,想要报警,就要有一个临界值,超过这个临界值的时候就报警。这个临界值发起里面设置的。

配置—>模板—->找到Template OS Linux模板

4b608d9c67dd62f20652dabfae07c828.png

创建触发器

bcc19ce8b92b5131d4ee674912b7bce1.png

填写相关的信息

表达式是:

{Template OS Linux:system.cpu.util[,idle].avg(1m)}<15

(这个表达式是最重要的,表示剩余量小与15的时候触发改触发器)

26a014103efc27d8fe0bf8cef051a76a.png

添加图形:配置—>模板—->图形

5292e3bfd1f6a52c0c605d911f05bdd2.png

选择劝群组和主机

73da81337683645c9eea23fcacd9de2f.png

创建图形

129cd9719f4f7f30efaf935e29b79eb5.png

8346efbadd6ff254d6afd82f6915d251.png

1d6921ecdbbc668b6c1c539d2ae8e9a6.png

e34441a95eb0ec6337277f75dbd6f54c.png

添加成功之后会看到图形,如果其他地方操作没有错误,等几分钟就会有图形:

a41d1a51afd2040f56d29f38dd266020.png

在监控的本机给他来个压测

注意:先用一个小一点的数字测试,观察图形之后再逐步加大(建议先用500测试一下)

[root@zabbix_server ~]#echo "scale=5000; 4*a(1)" | bc -l –q

自动发现磁盘IO并注册监控

zabbix3.4并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加。

由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用 自动发现 这个功能,自动发现后自动添加对服务器磁盘的监控,而且添加磁盘后也会自动添加到监控,实现自动化运维的效果,所以在这里也演示一次自动发现的配置。

511ba81a2372871def67451de2f81df4.png

9247ec0064782b5340638ffbcdef62c6.png

上面的key值是需要在 zabbix_agent.conf 中配置的

UserParameter=disk.discovery,/usr/local/share/zabbix/alertscripts/disk_discovery.sh

自动发面的规则用shell代码实现,返回一段磁盘的json list

93bb16a845deaeb282a5dc0e37ed45cb.png

代码 disk_discovery.sh

#!/bin/bash

diskarray=(`cat /proc/diskstats |grep -E "bsd[abcdefg]b|bxvd[abcdefg]b"|grep -i "b$1b"|awk '{print $3}'|sort|uniq   2>/dev/null`)

length=${#diskarray[@]}

printf "{n"

printf  't'""data":["

for ((i=0;i

do

printf 'ntt{'

printf ""{#DISK_NAME}":"${diskarray[$i]}"}"

if [ $i -lt $[$length-1] ];then

printf ','

fi

done

printf  "nt]n"

printf "}n"

自动发现磁盘已完

添加监控项

配置-模板-监控项

e5b414565b4987da68b611b2a54ef021.png

创建监控项

827d37ece12f8e3ccca20976f2c78537.png

按照上面的内容添加第一个写扇区的次数监控,接下来按下面的内容添加共6个内容

名称: {#DISK_NAME}磁盘读的次数

键值: disk.status[{#DISK_NAME},read.ops]

单位: ops/second

储存值:差量(每秒速率)

名称: {#DISK_NAME}磁盘写的次数

键值: disk.status[{#DISK_NAME},write.ops]

单位: ops/second

储存值:差量(每秒速率)

名称: {#DISK_NAME}磁盘读的毫秒数

键值: disk.status[{#DISK_NAME},read.ms]

单位: ms

储存值:差量(每秒速率)

名称: {#DISK_NAME}磁盘写的毫秒数

键值: disk.status[{#DISK_NAME},write.ms]

单位: ms

储存值:差量(每秒速率)

名称: {#DISK_NAME}读扇区的次数

键值:  disk.status[{#DISK_NAME},read.sectors]

单位:  B/sec

使用自定义倍数: 512

储存值:差量(每秒速率)

名称: {#DISK_NAME}写扇区的次数

键值:  disk.status[{#DISK_NAME},write.sectors]

单位:  B/sec

使用自定义倍数: 512

储存值:差量(每秒速率)

d8cc1c227c64f88f7432c0c7e34d5970.png

然后如果得到这些值是需要shell脚本的:

disk_status.sh

#/bin/sh

device=$1

DISK=$2

case $DISK in

read.ops)

/bin/cat /proc/diskstats | grep "b$deviceb" | head -1 | awk '{print $4}'    #//磁盘读的次数

;;

read.ms)

/bin/cat /proc/diskstats | grep "b$deviceb" | head -1 | awk '{print $7}'    #//磁盘读的毫秒数

;;

write.ops)

/bin/cat /proc/diskstats | grep "b$deviceb" | head -1 | awk '{print $8}'     #//磁盘写的次数

;;

write.ms)

/bin/cat /proc/diskstats | grep "b$deviceb" | head -1 | awk '{print $11}'    #//磁盘写的毫秒数

;;

io.active)

/bin/cat /proc/diskstats | grep "b$deviceb" | head -1 | awk '{print $12}'    #//I/O的当前进度

;;

read.sectors)

/bin/cat /proc/diskstats | grep "b$deviceb" | head -1 | awk '{print $6}'      #//读扇区的次数

;;

write.sectors)

/bin/cat /proc/diskstats | grep "b$deviceb" | head -1 | awk '{print $10}'     #//写扇区的次数

;;

io.ms)

/bin/cat /proc/diskstats | grep "b$deviceb" | head -1 | awk '{print $13}'      #//花费在IO操作上的毫秒数

;;

esac

在客户端中的zabbix_agent.conf 中一起配置:

UserParameter=disk.discovery,/usr/local/share/zabbix/alertscripts/disk_discovery.sh

UserParameter=disk.status[*],/usr/local/share/zabbix/alertscripts/disk_status.sh $1 $2

两个文件需要给x 执行权限

添加图形显示

662c5ac8f978a90e27e83c00fac253d5.png

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/161259
推荐阅读
相关标签
  

闽ICP备14008679号