上次脚本写好了,过几天老同事看了下,然后让我部署到系统上。毕竟我是个新手,记录下吧。 1, 首先我使用的是乐维公司的zabbix监控系统操作的。我们要先考虑zabbix监控的脚本调用路径是cd /usr/local/zabbix/scripts/下,那里放了好多主动监控的脚本。 2,进入zabbix的配置文件,里面设置键值配好设置。 Vim usr/local/zabbix/etc/zabbix_agentd.conf修改好键值和脚本执行的参数 配置完了后,记得要重启agent,service zabbix_agentd restart 3,在zabbix监控系统上面创建新的模板。 按照上面的配置好。 4,然后把模板链接到主机上,等一下就有数据了。 5,核对数据时,这个就要特别注意了,linux系统计算硬件使用的字节转换成其它单位的倍率是1000,而我们系统的转换是1024倍率。也就是说我们看到的磁盘大小是物理磁盘真实大小。我在核对的时候还以为是脚本出错了呢,多注意。
系统的存储转换倍率是1000 还有注意的问题是:脚本里面匹配的磁盘是/dev/vba,有些磁盘确是/dev/sda的。这个其实很多系统基本一致的,所有在监控系统之前要检查下系统的磁盘类型,来修改下脚本。想要做通用版的脚本,可以用if,then条件语句多加几个磁盘的类型判断上去。 老同事毕竟有经验,提出了优化脚本,然后改成了这样: #!/bin/bash #磁盘总空间大小,字节单位 disk_total() { d_t=$(fdisk -l | grep -oP '(?<=/dev/sd\S\W).' | awk '{print $3}'|awk 'BEGIN{sum=0}{sum+=$1}END{print sum}') echo -e "${d_t}" } #磁盘总使用大小,单位1k disk_used() { d_uk=$(df | awk '{print $3}' | grep [0-9] | awk 'BEGIN{sum=0}{sum+=$1}END{print sum}') d_u=$((1000d_uk)) echo -e "${d_u}" } #剩余总空间计算 disk_free() { d_t=$(fdisk -l | grep -oP '(?<=/dev/sd\S\W).' | awk '{print $3}'|awk 'BEGIN{sum=0}{sum+=$1}END{print sum}') d_u=$(df | awk '{print $3}' | grep [0-9] | awk 'BEGIN{sum=0}{sum+=$1}END{print sum}') d_f=$[${d_t}-d_u1000] echo -e "${d_f}" } case "$1" in dt) disk_total ;; df) disk_free ;; du) disk_used ;; *) echo "Usage: $0 {dt=disk_total}{df=disk_free}{du=disk_used}" ;; esac 我认为脚本可以再优化,例如做全局变量,脚本开头再优化匹配规则,但我目前还要做其它项目的事情,所以满足了客户需求就可以了。 虽然这是一个小脚本采集数据,但重要的是明白了zabbix外部检查的工作原理,还有第一次操作,要注意的事情也是很多的,希望以后可以做个新的大的脚本采集。