zabbix3.0自动发现磁盘并监控磁盘IO

Zabbix 版本:3.0

操作系统:Ubuntu16.04

操作环境,在被监控的主机上安装zabbix agent。安装方式为源码包安装。

简要安装步骤:

参考:https://www.zabbix.com/documentation/3.0/manual/installation/install#installation_from_sources

wget https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/3.0.24/zabbix-3.0.24.tar.gz/download
mv download zabbix-3.0.tar.gz
tar zxf zabbix-3.0.tar.gz
mkdir zabbix
cd  zabbix
./configure --enable-agent --prefix=$HOME/zabbix

make install

需要的预备知识:

       我的监控方案参考很多网上的资源,具体链接就不在这里写了。

       磁盘性能的数据来源主要是/proc/diskstats,其他方案用的大多数是iostat命令,但是这个命名需要安装一个包(syststat)。生产环境不能连互联网,也不想用源码包安装了,iostat取的好像也是/proc/diskstats的数据。

      先了解一下这和目录下数据的含义:

diskstats各字段的含义:
官方解释:https://www.kernel.org/doc/Documentation/iostats.txt
 
A    B  C                        6        7        8   9   10      11   
8      16 sdb 113686 7710 7704472 65448 225772 188612 184042704 298452 0  51952  363852
A:主设备号
B:次设备号
C:设备名称
1:读完成次数 ----- 读磁盘的次数,成功完成读的总次数。
2:合并读完成次数,第6个域:合并写完成次数。为了效率可能会合并相邻的读和写。从而两次4K的读在它最终被处理到磁盘上之前可能会变成一次8K的读,才被计数(和排队),因此只有一次I/O操作。这个域使你知道这样的操作有多频繁。
3:读扇区的次数,成功读过的扇区总次数。
4:读花费的毫秒数,这是所有读操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)
5:写完成次数 ----写完成的次数,成功写完成的总次数。
6:合并写完成次数 -----合并写次数
7:写扇区次数 ---- 写扇区的次数,成功写扇区总次数。
8:写操作花费的毫秒数 --- 写花费的毫秒数,这是所有写操作所花费的毫秒数(用__make_request()到end_that_request_last()测量)
9:正在处理的输入/输出请求数 -- -I/O的当前进度,只有这个域应该是0。当请求被交给适当的request_queue_t时增加和请求完成时减小
10:输入/输出操作花费的毫秒数 ----花在I/O操作上的毫秒数,这个域会增长只要field 9不为0。
11:输入/输出操作花费的加权毫秒数 ----- 加权, 花在I/O操作上的毫秒数,在每次I/O开始,I/O结束,I/O合并时这个域都会增加。这可以给I/O完成时间和存储那些可以累积的提供一个便利的测量标准。

agent安装完之后开始改配置文件。

先改一下配置文件:etc/zabbix_agentd.conf

UnsafeUserParameters=1
# 把这个值改为1,因为自动发现的脚本中有一些特殊字符,被认为是不安全的因素,1表示允许这些字符存在(我的理解)如果不该,后期在Server端就会报错,原因就在这里。

然后在etc/zabbix_agentd.conf末尾加两行

# 第一行是自动发现脚本的路径
UserParameter=disk.discovery,/home/zabbix/etc/zabbix_agentd.conf.d/disk_discovery.sh
# 第二行是检测磁盘IO的脚本路径
 UserParameter=disk.status[*],/home/zabbix/etc/zabbix_agentd.conf.d/disk_status.sh $1 $2

当然这两行可以单独写在另一个配置文件中,注意路径:

 # Include=/usr/local/etc/zabbix_agentd.userparams.conf
 # 在etc/zabbix_agentd.conf 中指明路径。

自动发现脚本的文件内容:

#!/bin/bash
diskarray=(`cat /proc/diskstats |grep -E "sd[abcdefg]|xvd[abcdefg]"|grep -i "$1"|awk '{print $3}'|sort|uniq   2>/dev/null`)
length=${#diskarray[@]}
printf "{
"
printf  '	'""data":["
for ((i=0;i<$length;i++))
do
        printf '
		{'
        printf ""{#DISK_NAME}":"${diskarray[$i]}"}"
        if [ $i -lt $[$length-1] ];then
                printf ','
        fi
done
printf  "
	]
"
printf "}
"

检测磁盘状态的脚本内容

#/bin/sh

device=$1
DISK=$2

case $DISK in

         read.ops)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $4}'    #//磁盘读的次数
            ;;
         read.merged)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $5}'      #//合并读完成次数
            ;;
         read.sectors)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $6}'      #//读扇区的次数(一个扇区的等于512B)
            ;;
         read.ms)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $7}'    #//磁盘读的毫秒数
            ;;
         write.ops)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $8}'     #//磁盘写的次数
            ;;
         write.merged)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $9}'      #//合并写完成次数
            ;;           
         write.sectors)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $10}'     #//写扇区的次数(一个扇区的等于512B)
            ;;
         write.ms)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $11}'    #//磁盘写的毫秒数
            ;;
         io.active)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $12}'    #//I/O的当前进度,
            ;;
         io.ms)
            /bin/cat /proc/diskstats | grep "$device" | head -1 | awk '{print $13}'      #//花费在IO操作上的毫秒数
            ;;

esac

然后启动agent就可以了。启动路径在/sbin/zabbix-agentd

 到此agent端的配置完成,开始在server端配置。

1.创建一个模板(可选),建议配置一个,名字根据需求写

配置--模板--创建模板 

2.创建自动发现

3. 在自动发现规则里选创建监控原型(注意这里,之前有一个文章直接在监控项里创建的,误导了我一上午)

具体的监控项原型

效果图:

 

详细的步骤各解释后期补充

参考链接:https://idc.wanyunshuju.com/zabbix/563.html

原文地址:https://www.cnblogs.com/gaoyuanzhi/p/10150226.html