请问zabbix如何监控freenas磁盘信息?

请问zabbix如何监控freenas磁盘信息?,第1张

自动寻找磁盘

说到底,所有的自动判断都是人为的设置好所有的可能性,然后根据实际情况从中选择,方法有很多,看大家具体要求。在这里,我要对磁盘监控,首先要找出有哪些磁盘,这里使用shell脚本实现。由于zabbix的discovery需要固定的格式,具体可以参考这里,最下面部分。

脚本如下:

1 #!/bin/bash 2 #written by lenwood 3 #mail:ccyhaoran@livecn 4 diskarray=(`cat /proc/diskstats |grep -E "\bsd[abcdefg]\b|\bxvd[abcdefg]\b"|grep -i "\b$1\b"|awk '{print $3}'|sort|uniq   2>/dev/null`) 5 length=${#diskarray[@]} 6 printf "{\n" 7 printf  '\t'"\"data\":[" 8 for ((i=0;i<$length;i++)) 9 do10         printf '\n\t\t{'11         printf "\"{#DISK_NAME}\":\"${diskarray[$i]}\"}"12         if [ $i -lt $[$length-1] ];then13                 printf ','14         fi15 done16 printf  "\n\t]\n"17 printf "}\n"

如上,这里通过读取/proc/diskstats,选择其中的磁盘,根据实际情况,我这里就找出类似sda或者xvda的,因为我们用的是sata接口的硬盘以及部分阿里云的服务器。

脚本执行出来的结果类似如下

1 {2     "data":[3         {"{#DISK_NAME}":"sda"}4         {"{#DISK_NAME}":"sdb"}5     ]6 }

然后使用zabbix执行这个脚本,那么就要将其写到zabbix_agentdconf中去,如下

UserParameter=ioscandisk[],/infra/zabbix/os/disk_scansh $1

iostat命令

对于磁盘的监控我采用iostat命令,因为它能给出磁盘的详细信息,如扇区读写情况,io队列长度,iowait,svctime等等。

命令如下:

1 nohup iostat -m -x -d 30 >/tmp/iostat_output &

通过tail -f /tmp/iostat_output,可获得iostat命令收集的磁盘信息,结果类似下面

Device:         rrqm/s   wrqm/s   r/s   w/s    rMB/s    wMB/s avgrq-sz avgqu-sz   await  svctm  %util
hda               000     020  000  743     000     016    4328     023   3080   243   181hda1              000     020  000  743     000     016    4328     023   3080   243   181hda2              000     000  000  000     000     000     000     000    000   000   000xvdb              000     000  000  000     000     000     000     000    000   000   000xvdb1             000     000  000  000     000     000     000     000    000   000   000hdc               000     000  000  000     000     000     000     000    000   000   000

其中部分参数的详细解释如下

rrqm/s:   每秒进行 merge 的读 *** 作数目。即 delta(rmerge)/s
wrqm/s:  每秒进行 merge 的写 *** 作数目。即 delta(wmerge)/s
r/s:           每秒完成的读 I/O 设备次数。即 delta(rio)/sw/s:         每秒完成的写 I/O 设备次数。即 delta(wio)/s
rsec/s:    每秒读扇区数。即 delta(rsect)/s
wsec/s:  每秒写扇区数。即 delta(wsect)/s
rkB/s:      每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。(需要计算)
wkB/s:    每秒写K字节数。是 wsect/s 的一半。(需要计算)
avgrq-sz: 平均每次设备I/O *** 作的数据大小 (扇区)。delta(rsect+wsect)/delta(rio+wio)
avgqu-sz: 平均I/O队列长度。即 delta(aveq)/s/1000 (因为aveq的单位为毫秒)。
await:    平均每次设备I/O *** 作的等待时间 (毫秒)。即 delta(ruse+wuse)/delta(rio+wio)
svctm:   平均每次设备I/O *** 作的服务时间 (毫秒)。即 delta(use)/delta(rio+wio)%util:      一秒中有百分之多少的时间用于 I/O *** 作,或者说一秒中有多少时间 I/O 队列是非空的。即 delta(use)/s/1000 (因为use的单位为毫秒)

在使用Zabbix监控网络设备的时候,经常会遇到这样的工作场景:
需要监控一个某个OID下的所有的对象,如下图监控华三交换机的电源模块的状态。 要监控的OID都有拥有同一个父OID,只是最后一位的数字不同。

这时候我们最好使用LLD功能,让Zabbix自动创建监控的item。

下面我们就说说怎么用LLD来做这个事儿。
目的:通过LLD能够自动创建item,避免繁琐对手动一个一个创建item。同时带来的一个好处是,即使被监控对对象发生变化(比如上图对4个子OID某一天变成了10个),ZBX也能够自动匹配出变化后对数据。

第一步,在Zabbix中创建LLD规则

各个字段解释:
名称:就是这个LLD规则的名字,无需多说
类型:根据SNMP版本进行选择,我用的V2
键值:因为zabbix要求每一个监控项都要有唯一对key,所以我们此处填写一个,有意义即可。注意:这个值和我们最终想要自动创建对对item不是一回事,所以不需要太注意,自己看懂就行。
主机接口:一般是默认的,设备对IP和接口信息。
SNMP community: 团体名

SNMP OID:最重要的其实就是这个字段
Zabbix在系统内部已经内置了一个自动发现函数discovery,这个函数有两个 参数,参数一是{#SNMPVALUE},通过在轮训参数二这个 OID之后获得的数据,参数二是OID(父级 别OID)。
按照进行配置之后,实现了一个什么效果呢?
Zabbix会通过调用discovery函数,轮训参数二的OID(理解为用命令snmpwalk 参数二OID就可以),将获取到的结果,赋值给{#SNMPVALUE}。
所以这个步骤配置完成之后,{#SNMPVALUE}的结果就类似于一个数组,里面存有所有子OID和对应数据。

现在我们已经通过步骤一拿到了类似于snmpwalk的结果并赋值给了{#SNMPVALUE}。那怎么把这个结果进行处理,让系统获得子OID命名对item,这就进入到item原型配置界面了。如下:

在咱们创建对LLD规则中新建 “监控项原型”。这是就会有人问,啥叫监控项原型?我语文不好,给解释下呗。好,你可以这样理解,我们不是通过LLD自动创建item吗,那item按照什么格式创建啊?比如,创建出来对item名称是啥, key又是啥 , item分组分到哪里???这些信息就叫做,监控项原型。

各个字段说明:
名称:就是LLD要创建对item的name
类型:根据版本选择,不多说了
键值:就是创建对item对key咋定义的
SNMP OID:这个oid和上个中的oid有啥区别?
这样理解,步骤一需要填写的是父OID,因为在上图中我们需要根据规则轮训父oid的所有数据,得到了所有子oid和对应对值。
而在这个界面我们需要定义 “父oid index” 这样一个东西,{#SNMPINDEX}是zabbix内置变量,就是咱们snmpwalk 父oid之后结果的最后一位。
所以到这里就知道了,“父oid index” 其实就是咱们定义的子OID的表达式

稍等片刻,最后得到如下的效果:

所以总结一下就是,通过步骤一获得所有父节点下的数据(所以步骤一填写父节点OID),通过步骤二定义item原型,对步骤一拿到对数据进行切分处理。(所以步骤二是子节点对OID),这里稍微注意一下Zabbix对内置函数和变量(disvovery,{#SNMPVALUE},{#SNMPINDEX})就可以轻松理解使用LLD这个功能了。

Zabbix通专用Agent或者SNMP收集相关监控数据存储数据库面实前台展示
Zabbix监控数据主要两类: 历史数据:history相关表,history_uint表面查询设备监控项目平均值,即存储监控数据原始数


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/13394127.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-27
下一篇 2023-07-27

发表评论

登录后才能评论

评论列表(0条)

保存