zabbix自动发现磁盘组空间

来源:互联网 发布:票乎为什么关闭了 编辑:程序博客网 时间:2024/06/05 15:01

查询磁盘组空间

[grid@monitordb1 scripts]$ cat /etc/zabbix/scripts/lsdg.sh #!/bin/bash#查询数据库磁盘组空间PATH=$PATH:$HOME/binexport PATHexport TMP=/tmpexport TMPDIR=$TMPexport ORACLE_SID=+ASM1export ORACLE_BASE=/u01/app/gridexport ORACLE_HOME=/u01/app/11.2.0/gridexport ORACLE_TERM=xtermexport NLS_DATE_FORMAT='yyyy/mm/dd hh24:mi:ss'export TNS_ADMIN=$ORACLE_HOME/network/adminexport PATH=/usr/sbin:$PATHexport PATH=$ORACLE_HOME/bin:$PATHexport LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/libexport CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/rdbms/jlibexport EDITOR=viexport LANG=en_USexport NLS_LANG=AMERICAN_AMERICA.ZHS16GBKasmcmd lsdg > /tmp/lsdg.log

查询结果

[grid@monitordb1 scripts]$ cat  /tmp/lsdg.log State    Type    Rebal  Sector  Block       AU  Total_MB  Free_MB  Req_mir_free_MB  Usable_file_MB  Offline_disks  Voting_files  NameMOUNTED  EXTERN  N         512   4096  1048576   2332672  2117637                0         2117637              0             N  DATA/MOUNTED  EXTERN  N         512   4096  1048576    122880   113262                0          113262              0             N  FLASH/MOUNTED  EXTERN  N         512   4096  1048576      2048     1652                0            1652              0             Y  ORC/

将查询脚本写入计划任务,一分钟执行一次

[grid@monitordb1 ~]$ crontab  -l* * * * *  /etc/zabbix/scripts/lsdg.sh

编写zabbix自动发现脚本

 cat /etc/zabbix/scripts/discovery_oracle_dgspace.sh #!/bin/bash#自动发现磁盘组空间并保存为json数据格式,{#TABLESPACE_NAME}为传递给zabbix的json变量,dg_spaces为表空间数据dg_spaces=(`cat /tmp/lsdg.log | sed -e "1d" -e "/^$/d" | awk '{print $13}'`)length=${#dg_spaces[@]}printf "{\n"printf '\t'"\"data\":["for ((i=0;i<$length;i++))do    printf "\n\t\t{"    printf "\"{#DG_NAME}\":\"${dg_spaces[$i]}\"}"    if [ $i -lt $[$length-1] ];then        printf ","    fidone    printf "\n\t]\n"printf "}\n"

输出结果

{        "data":[                {"{#DG_NAME}":"DATA/"},                {"{#DG_NAME}":"FLASH/"},                {"{#DG_NAME}":"ORC/"}        ]}

编写查询磁盘组空间脚本

#!/bin/bash# oracle dgspace check,定义两个变量CEHCK_TYPE、DG_NAME,方便在zabbix脚本中调用,不同的CEHCK_TYPE调用不同的函数。zabbix自定义函数中,首先输入$1通过case匹配不同的检查类型,其次通过$2进行grep匹配CEHCK_TYPE=$1DG_NAME=$2function freeper {    grep "\b$DG_NAME" /tmp/lsdg.log | awk '{printf "%.f\n",($7-$8)/$7*100}'}function total {    grep "\b$DG_NAME" /tmp/lsdg.log | awk '{printf $7}'}function used  {    grep "\b$DG_NAME" /tmp/lsdg.log | awk '{printf "%.f\n",$7-$8}'}case $CEHCK_TYPE in    freeper)        freeper ;;    total)        total ;;    used)        used ;;    *)        echo -e "Usage: $0 [freeper|total|used] [DG_NAME]"esac

编写zabbix自动发现及磁盘组空间查询item

[root@monitordb1 ~]# cat /etc/zabbix/zabbix_agentd.d/userparameter_oracle_dgspace.conf UserParameter=discovery.oracle.dgspace[*],/etc/zabbix/scripts/discovery_oracle_dgspace.shUserParameter=dgspace.check[*],/etc/zabbix/scripts/dgspace_check.sh $1 $2

重启agent

[root@monitordb1 ~]# killall zabbix_agentd[root@monitordb1 ~]# zabbix_agentd 

server端测试item

[root@localhost ~]# zabbix_get -p10050 -k 'dgspace.check[freeper,DATA/]' -s 192.168.200.8

zabbix控制台添加discovery发现规则及item

创建自动发现规则

主机——自动发现——创建自动发现规则name:Oracle dgspace discovery  key:discovery.oracle.dgspace 数据类型:char

创建自动发现item

监控项原型(item)

自动发现磁盘组名称
name:discovery.oracle.dgspace:[{#DG_NAME}]  key:discovery.oracle.dgspace:[{#DG_NAME}] 
查看磁盘组总空间
name:dgspace.check[freeper,{#DG_NAME}]key:dgspace.check[freeper,{#DG_NAME}]
查看磁盘组使用空间
name:dgspace.check[used,{#DG_NAME}]key:dgspace.check[used,{#DG_NAME}]
查看磁盘组可用百分比
name:dgspace.check[freeper,{#DG_NAME}]key:dgspace.check[freeper,{#DG_NAME}]