赞
踩
使用zabbix自带模板实现监控CPU、磁盘
zabbix自带模板有一个 Template OS Linux模板。这个模板有监控CPU的监控项,如果没有添加一个监控项“ CPU idle time”
这个监控项监控的是CPU剩余的时间。监控到这个指标也就可以监控到使用了多少。
首先,如果没有添加一个监控项“ CPU idle time”,具体步骤如下:
配置—>模板—->找到Template OS Linux模板—监控项
创建监控项
改名称—–>选择进入
选择CPU idle time
填其他选项:
添加好监控项的效果:监控项列表里出现“CPU idle time”
添加触发器,想要报警,就要有一个临界值,超过这个临界值的时候就报警。这个临界值发起里面设置的。
配置—>模板—->找到Template OS Linux模板
创建触发器
填写相关的信息
表达式是:
{Template OS Linux:system.cpu.util[,idle].avg(1m)}<15
(这个表达式是最重要的,表示剩余量小与15的时候触发改触发器)
添加图形:配置—>模板—->图形
选择劝群组和主机
创建图形
添加成功之后会看到图形,如果其他地方操作没有错误,等几分钟就会有图形:
在监控的本机给他来个压测
注意:先用一个小一点的数字测试,观察图形之后再逐步加大(建议先用500测试一下)
[root@zabbix_server ~]#echo "scale=5000; 4*a(1)" | bc -l –q
自动发现磁盘IO并注册监控
zabbix3.4并没有给我们提供这么一个模板来完成在Linux中磁盘IO的监控,所以我们需要自己来创建一个,在此还是在Linux OS中添加。
由于一台服务器中磁盘众多,如果只一两台可以手动添加,但服务集群达到几十那就非常麻烦,因此需要利用 自动发现 这个功能,自动发现后自动添加对服务器磁盘的监控,而且添加磁盘后也会自动添加到监控,实现自动化运维的效果,所以在这里也演示一次自动发现的配置。
上面的key值是需要在 zabbix_agent.conf 中配置的
UserParameter=disk.discovery,/usr/local/share/zabbix/alertscripts/disk_discovery.sh
自动发面的规则用shell代码实现,返回一段磁盘的json list
代码 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"
自动发现磁盘已完
添加监控项
配置-模板-监控项
创建监控项
按照上面的内容添加第一个写扇区的次数监控,接下来按下面的内容添加共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
储存值:差量(每秒速率)
然后如果得到这些值是需要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 执行权限
添加图形显示
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。