91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

zabbix自動發現oracle表空間并監控其使用率

發布時間:2020-08-08 11:01:35 來源:網絡 閱讀:49473 作者:HMLinux 欄目:關系型數據庫

監控需求

  Oracle表空間使用率實時監控,當表空間使用率達到95%時觸發告警機制。Oracle表空間分為系統默認表空間和用戶創建的表空間,而表空間又有自動擴展和非自動擴展兩種類型,用戶(DBA)在創建表空間時可以根據應用需求指定是否開啟表空間自動擴展。那么在這里我們需要分析一個監控策略,就是當zabbix監控到某個表空間使用率達到95%,那么就觸發器觸發警告(Warning)信息并發送郵件給DBA或管理者當檢測到表空間沒有開啟自動擴展時,則觸發Information信息說明一下:oracle表空間是否開啟自動擴展以及最大能擴展到多少在最初應該規劃好的,有時在創建表空間時指定初始容量和最大能擴展的容量一致的話,那么就會讓這個表空間立即擁有最大能擴展的容量,而不是隨著表空間的消耗而慢慢增加。所以即使我們檢測到該表空間開啟了自動擴展功能,實際上也不會繼續擴展了。當然在大多數業務場景下一般是不建議開啟表空間自動擴展功能的,除非你的業務是非關鍵的。回到監控這里,當我們同時收到這兩個告警信息時,那么就要及時處理oracle表空間使用率大于95%的問題了。


監控方式

  有了zabbix監控系統,我們可以定制任何需要的監控項目,首先通過自動發現腳本發現oracle表空間,然后再制定額外的屬于oracle表空間的監控項目配置告警觸發器,最后在zabbixWeb頁面端展示oracle表空間的使用率和剩余量。

 

獲取oracle數據庫表空間信息的原始腳本和自動發現腳本

  Oracle表空間的信息需要SQL語句查詢得到,因此,我們首先創建一個獲取表空間信息的原始腳本/home/oracle/bin/check_tablespace.sh,這個腳本由oracle用戶去執行,腳本編寫如下:

oracle@hmracdb1:~/bin> cat check_tablespace.sh 
#!/bin/bash
# tablespace usagep check
source ~/.bash_profile
function check {
sqlplus -S "/ as sysdba" <<  EOF
set linesize 200
set pagesize 200
spool /tmp/ora_tablespace.txt
select a.tablespace_name, total, free,(total-free) as usage from 
(select tablespace_name, sum(bytes)/1024/1024 as total from dba_data_files group by tablespace_name) a, 
(select tablespace_name, sum(bytes)/1024/1024 as free from dba_free_space group by tablespace_name) b
where a.tablespace_name = b.tablespace_name;
spool off
set linesize 100
set pagesize 100
spool /tmp/ora_autex.txt
select tablespace_name,autoextensible from dba_data_files;
spool off
quit
EOF
};check &>/dev/null

執行這個腳本,并生成兩個保存oracle表空間名稱信息的文件:/tmp/ora_tablespace.txt/tmp/ora_autex.txt

oracle@hmracdb1:~/bin> ls -l /tmp/ora_*
-rw-r--r-- 1 oracle oinstall 1030 Mar 23 20:50 /tmp/ora_autex.txt
-rw-r--r-- 1 oracle oinstall  929 Mar 23 20:50 /tmp/ora_tablespace.txt
 
oracle@hmracdb1:~/bin> cat /tmp/ora_tablespace.txt
TABLESPACE_NAME                                                   TOTAL       FREE      USAGE    
------------------------------------------------------------ ---------- ---------- ----------    
TEST11                                                               50         49          1    
SYSAUX                                                             2048       1197        851    
UNDOTBS1                                                           2048  2036.3125    11.6875    
USERS                                                              1024       1023          1    
SYSTEM                                                             2048   1358.375    689.625    
UDB_SPACE                                                         40960  31673.875   9286.125    
UNDOTBS2                                                           2048  2035.1875    12.8125    
 
7 rows selected.
 
 
oracle@hmracdb1:~/bin> cat /tmp/ora_autex.txt
TABLESPACE_NAME                                              AUTOEX                              
------------------------------------------------------------ ------                              
SYSTEM                                                       YES                                 
SYSAUX                                                       YES                                 
UNDOTBS1                                                     YES                                 
UNDOTBS2                                                     YES                                 
USERS                                                        YES                                 
UDB_SPACE                                                    YES                                 
UDB_SPACE                                                    YES                                 
TEST11                                                       YES                                 
8 rows selected.


  我們需要把腳本放到oracle用戶的crontab計劃任務表中,讓腳本在后臺5分鐘執行一次一定要保證計劃任務能正常按計劃執行,否則這可能會被監控欺騙(監控端獲取到的數據一直保持不變)。

hmracdb1:~ # crontab -u oracle -l
# DO NOT EDIT THIS FILE - edit the master and reinstall.
# (/tmp/crontab.XXXXj0XHiH installed on Thu Mar 23 11:38:37 2017)
# (Cron version V5.0 -- $Id: crontab.c,v 1.12 2004/01/23 18:56:42 vixie Exp $)
*/5 * * * * /home/oracle/bin/check_tablespace.sh

手動執行SQL語句獲取表空間使用率

SQL> set linesize 200
select ff.s tablespace_name,
ff.b total,
              (ff.b - fr.b)usage,
fr.b free,
              round((ff.b - fr.b) / ff.b * 100) || '% ' usagep
from (select tablespace_name s, sum(bytes) / 1024 / 1024 b
                    from dba_data_files
                  group by tablespace_name) ff,
              (select tablespace_name s, sum(bytes) / 1024 / 1024 b
                    from dba_free_space
                  group by tablespace_name) fr
 12  where ff.s = fr.s;
 
TABLESPACE_NAME                                                   TOTAL      USAGE       FREE USAGEP
------------------------------------------------------------ ---------- ---------- ---------- ------------------------------------------------------------------------------------
TEST11                                                               50          1         49 2%
SYSAUX                                                             2048    851.375   1196.625 42%
UNDOTBS1                                                           2048    12.6875  2035.3125 1%
USERS                                                              1024          1       1023 0%
SYSTEM                                                             2048    689.625   1358.375 34%
UDB_SPACE                                                         40960   9286.125  31673.875 23%
UNDOTBS2                                                           2048    12.8125  2035.1875 1%
 
7 rows selected.


下面編寫一個zabbix自動發現oracle表空間的腳本discovery_oracle_tablespace.sh

hmracdb1:~ # cat discovery_oracle_tablespace.sh
#!/bin/bash
#zabbix discovery oracle tablespace
table_spaces=(`cat /tmp/ora_tablespace.txt | sed -e "1,3d" -e "/^$/d" -e "/selected/d" | awk '{print $1}'`)
length=${#table_spaces[@]}
 
printf "{\n"
printf '\t'"\"data\":["
for ((i=0;i<$length;i++))
do
    printf "\n\t\t{"
    printf "\"{#TABLESPACE_NAME}\":\"${table_spaces[$i]}\"}"
    if [ $i -lt $[$length-1] ];then
        printf ","
    fi
done
    printf "\n\t]\n"
printf "}\n"


賦予腳本執行權限,并放到$ZABBIX_HOME/scripts/目錄下,下面是執行該腳本輸出為json格式的oracle表空間的信息

hmracdb1:/opt/zabbix/scripts # ./discovery_oracle_tablespace.sh 
{
    "data":[
        {"{#TABLESPACE_NAME}":"TEST11"},
        {"{#TABLESPACE_NAME}":"SYSAUX"},
        {"{#TABLESPACE_NAME}":"UNDOTBS1"},
        {"{#TABLESPACE_NAME}":"USERS"},
        {"{#TABLESPACE_NAME}":"SYSTEM"},
        {"{#TABLESPACE_NAME}":"UDB_SPACE"},
        {"{#TABLESPACE_NAME}":"UNDOTBS2"}
    ]
}


監控項目檢測腳本tablespace_check.sh用于zabbix獲取oracle表空間使用率、剩余量和檢查是否開啟自動擴展。

hmracdb1:~ # cat tablespace_check.sh 
#!/bin/bash
# oracle tablespace check
CEHCK_TYPE=$1
TABLESPACE_NAME=$2
 
function usagepre {
    grep "\b$TABLESPACE_NAME\b" /tmp/ora_tablespace.txt | awk '{printf "%.f\n",($2-$3)/$2*100}'
}
 
function available {
    grep "\b$TABLESPACE_NAME\b" /tmp/ora_tablespace.txt | awk '{printf $3*1024*1024}'
}
 
function check {
    if grep "\b$TABLESPACE_NAME\b" /tmp/ora_autex.txt | awk '{print $2}' | uniq | grep "YES" &>/dev/null;then
        echo 1
    else
        echo 0
    fi
}
 
case $CEHCK_TYPE in
    pre)
        usagepre ;;
    fre)
        available ;;
    check)
        check ;;
    *)
        echo -e "Usage: $0 [pre|fre|check] [TABLESPACE_NAME]"
esac


確認腳本輸出的值為zabbix監控所取的數值

hmracdb1:~ # ./tablespace_check.sh pre SYSTEM
34
hmracdb1:~ # ./tablespace_check.sh fre SYSTEM
1424359424hmracdb1:~ # ./tablespace_check.sh check SYSTEM
1

將腳本都保存到$ZABBIX_HOME/scpirts目錄下,然后配置UserParameter參數,增加監控keykey名稱分別為discovery.oracle.tablespacetablespace.check在以下配置文件末尾增加兩行

hmracdb1:/opt/zabbix/scripts # vim ../etc/zabbix_agentd.conf.d/userparameter_script.conf
UserParameter=discovery.oracle.tablespace[*],/opt/zabbix/scripts/discovery_oracle_tablespace.sh
UserParameter=tablespace.check[*],/opt/zabbix/scripts/tablespace_check.sh $1 $2

重啟zabbix_ahgentd

zabbix服務端獲取oracle表空間和監控數值

[root@Zabbix_19F ~]# zabbix_get -p10050 -k 'tablespace.check[pre,SYSTEM]' -s 10.xxx.xxx.xxx
34
[root@Zabbix_19F ~]# zabbix_get -p10050 -k 'tablespace.check[fre,SYSTEM]' -s 10.xxx.xxx.xxx
1424359424
[root@Zabbix_19F ~]# zabbix_get -p10050 -k 'tablespace.check[check,SYSTEM]' -s 10.xxx.xxx.xxx
1



Zabbix Web端配置

  新建oracle表空間模版My_Templates_Linux_Discovery_oracle_tablespace,添加自動發現規則,10分鐘更新一次

zabbix自動發現oracle表空間并監控其使用率


添加Item prototypes監控項目,第一個表空間使用率

zabbix自動發現oracle表空間并監控其使用率


第二個表空間剩余容量

zabbix自動發現oracle表空間并監控其使用率


第三個檢查表空間是否開啟自動擴展

zabbix自動發現oracle表空間并監控其使用率



創建告警觸發器

首先創建檢測表空間使用率是否大于95%的觸發器

zabbix自動發現oracle表空間并監控其使用率



創建檢測是否開啟自動擴展的觸發器

zabbix自動發現oracle表空間并監控其使用率



查看監控數據

zabbix自動發現oracle表空間并監控其使用率


到這里,zabbix監控oracle表空間使用率就完成了


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

达拉特旗| 荥阳市| 美姑县| 南昌市| 西贡区| 黑山县| 富锦市| 萍乡市| 邓州市| 伊春市| 乌海市| 江北区| 兴国县| 德保县| 彰化县| 界首市| 神农架林区| 会宁县| 满洲里市| 招远市| 四川省| 深水埗区| 清水县| 合阳县| 若羌县| 元谋县| 乌苏市| 山东省| 启东市| 文成县| 汉沽区| 城固县| 兴山县| 阿城市| 丽江市| 无锡市| 元朗区| 漯河市| 华亭县| 岢岚县| 内黄县|