zabbix對oracle表空間的監控


[root@oracle scripts]# crontab -l

* * * * * /home/oracle/oracle_cron.sh

 

shell(oracle_cron.sh)

#!/bin/bash

source /home/oracle/.bash_profile

sqlplus -s zabbix/zabbix  > /tmp/tablespace.log<<EOF

set linesize 300 pagesize 1000

col "Status"   for a10

col "Name"     for a25

col "Type"     for a10

col "Extent"   for a15

col "Size (M)" for a20

col "Used (M)" for a20

col "Used %"   for a20

SELECT d.status "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent",

TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,990') "Size (M)",

TO_CHAR(NVL(a.bytes - NVL(f.bytes, 0), 0)/1024/1024,'999,999,999') "Used (M)",

TO_CHAR(NVL((a.bytes -  NVL(f.bytes, 0)) / a.bytes * 100, 0), '990.00') "Used %"

FROM sys.dba_tablespaces d,

(select         tablespace_name, sum(bytes) bytes from dba_data_files

group by tablespace_name) a, (select    tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f WHERE

d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+) AND NOT

(d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY')

UNION ALL

SELECT d.status         "Status", d.tablespace_name "Name", d.contents "Type", d.extent_management "Extent",

TO_CHAR(NVL(a.bytes / 1024 / 1024, 0),'99,999,999') "Size (M)",

TO_CHAR(NVL(t.bytes,0)/1024/1024,'999,999,999') "Used (M)",

TO_CHAR(NVL(t.bytes / a.bytes * 100, 0), '990.00') "Used %" FROM sys.dba_tablespaces d,

(select tablespace_name, sum(bytes) bytes from dba_temp_files group by tablespace_name) a, (select

tablespace_name, sum(bytes_cached) bytes from v\$temp_extent_pool group by tablespace_name) t WHERE

d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = t.tablespace_name(+) AND

d.extent_management like 'LOCAL' AND d.contents like 'TEMPORARY'

ORDER BY 7;

EOF

 

[root@oracle scripts]# pwd

/usr/local/zabbix/scripts

[root@oracle scripts]# ll

total 12

-rwxr-xr-x 1 root root 399 Apr  1 02:31 oracle_check.sh

-rwxr-xr-x 1 root root 387 Apr  1 02:18 oracle_check.sh.bak

-rwxr-xr-x 1 root root 309 Mar 31 19:11 oracle_discovery.sh

 

 

shell2(oracle_discovery.sh)

#!/bin/bash

TABLESPACE=`cat /tmp/tablespace.log |awk '{print$2}'|awk 'NR>3{print}'`

COUNT=`echo "$TABLESPACE" |wc -l`

INDEX=0

echo '{"data":['

echo "$TABLESPACE" | while read LINE; do

        echo -n '{"{#TABLENAME}":"'$LINE'"}'

        INDEX=`expr $INDEX + 1`

        if [ $INDEX -lt $COUNT ]; then

                echo ','

        fi

done

echo ']}'

 

 

shell3(oracle_check.sh)

#!/bin/bash

EQ_DATA="$2"

ZBX_REQ_DATA_TAB="$1"

SOURCE_DATA=/tmp/tablespace.log

case $2 in

  maxmb)        grep -E "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $5*1024*1024}';;

  used)   grep -E "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $6*1024*1024}';;

  autopercent)  grep -E "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $7}';;

  *) echo $ERROR_WRONG_PARAM; exit 1;;

esac

exit 0

 

echo $1 $2

 

 

 

 

檢測

[root@oracle scripts]# ./oracle_check.sh SYSTEM autopercent

99.95

[root@oracle scripts]# ./oracle_check.sh USERS maxmb

5242880

說明腳本配置成功

 

[root@oracle zabbix]# vim etc/zabbix_agentd.conf

把下面這兩行配置加到最后:

UserParameter=ora.tab.discovery,/usr/local/zabbix/scripts/oracle_discovery.sh

UserParameter=tablespace[*],/usr/local/zabbix/scripts/oracle_check.sh $1 $2

 

 

zabbix_server端添加discovery模板,之前安裝過orabbix,直接在Template_Oracle下的自動發現規則下新建自動發現規則:

 

自動發現規則下添加監控原型:

 

 

 

 

 

然后在圖形原型配置、並將上面的三個原型添加進去:

 

 

 

最后設置觸發器:

 

 

 

(這里是以autopercent為判斷條件,>95時產生告警)

 

最后重啟客戶端的zabbix_agent

 

修改服務端的zabbix_server.conf的CacheSize至256M

重啟服務端的zabbix_server和orabbix

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM