Zabbix / 监控平台

使用Zabbix监控Oracle表空间的配置指南

浅时光博客 · 2月20日 · 2020年 · 11.6w 次已读

Zabbix监控Oracle表空间大致流程

  1. 创建监控脚本: 编写一个脚本,用于查询数据库中的表空间使用情况并文章来源(Source):https://dqzboy.com输出相关数据。
  2. 配置Zabbix Agent: 将监控脚本放置在Zabbix Agent所在服务器上,并在Zabbix Agent配置文件中添加一个用户参数来调用该脚本。
  3. 测试Zabbix Agent: 在Zabbix服务器上使用 zabbix_get 命令测试Zabbix Agent是否能够获取正确的表空间使用情况数据。
  4. 在Zabbix Web界面配置: 登录到Zabbix的Web界面,创建一个新的监控模板,并配置模板中的项以获取来自Zabbix Agent的数据。
  5. 将模板应用到主机: 将新创建的监控模板分配给需要监控表空间的主机。

通过以上步骤,您可以实现Zabbix监控Oracle表空间的设置。系统将定期获取表空间使用情况数据并进行监控,确保及时发现并处理空间不足的问题。

1、创建监控脚本

# 切换为oracle用户下
[root@localhost ~]# su – oracle
[oracle@localhost ~]$ vim checklist_space.sh
#!/bin/bash
source ~/.bash_profile
function check {
sqlplus -S "/ as sysdba" <<  EOF
set linesize 200
set pagesize 200
spool /tmp/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/autex.txt
select tablespace_name,autoextensible from dba_data_files;
spool off
quit
EOF
};check &>/dev/null

[oracle@localhost ~]$ chmod +x checklist_space.sh

# 执行这个脚本,并生成两个保存有oracle表空间名称信息的文件:/tmp/tablespace.txt和/tmp/autex.txt

2、测试监控脚本

#运行监控脚本,然后查看/tmp/tablespace.txt
[oracle@localhost ~]$ ./checklist_space.sh 
[oracle@localhost ~]$ cat /tmp/tablespace.txt 

TABLESPACE_NAME                     TOTAL       FREE      USAGE                                                                                                                                         
------------------------------ ---------- ---------- ---------                                                                                                                                       
SYSAUX                                640       37.5      602.5                                                                                                                                         
UNDOTBS1                              155    141.375     13.625                                                                                                                                         
USERS                            14638.75    739.625  13899.125                                                                                                                                         
SYSTEM                                870    89.3125   780.6875                                                                                                                                         
DQZ_TEST                            20480 10572.8125  9907.1875

[oracle@localhost ~]$ cat /tmp/autex.txt 

TABLESPACE_NAME                AUT                                                                  
------------------------------ ---                                                                  
USERS                          YES                                                                  
UNDOTBS1                       YES                                                                  
SYSAUX                         YES                                                                  
SYSTEM                         YES                                                                  
DQZ_TEST                       YES
  • 加入到oracle用户的定时任务中,每隔5分钟执行一次,执行间隔根据情况来定;
  • 注意:一定保证定时任务可以正常执行,定时任务日志查看
[oracle@localhost ~]$ crontab -e
*/5 * * * *  /home/oracle/checklist_space.sh

3、创建Zabbix获取数据脚本

[root@localhost ~]# cd /script
[root@localhost script]# vim zabbix_tablespace.sh
#!/bin/bash
table_spaces=(`cat /tmp/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"

[root@localhost script]# chmod +x zabbix_tablespace.sh
  • 测试脚本,获取数值
[root@localhost script]# ./zabbix_tablespace.sh 
{
	"data":[
		{"{#TABLESPACE_NAME}":"SYSAUX"},
		{"{#TABLESPACE_NAME}":"UNDOTBS1"},
		{"{#TABLESPACE_NAME}":"USERS"},
		{"{#TABLESPACE_NAME}":"SYSTEM"},
		{"{#TABLESPACE_NAME}":"DQZ_TEST"}
	]
}
  • 创建监控项脚本,获取oracle表空间使用率、剩余量和检查是否开启自动扩展
[root@localhost script]# vim zabbix_tablespace_check.sh
#!/bin/bash
CEHCK_TYPE=$1
TABLESPACE_NAME=$2
 
function usagepre {
    grep "\b$TABLESPACE_NAME\b" /tmp/tablespace.txt | awk '{printf "%.f\n",($2-$3)/\*100}'
}
 
function available {
    grep "\b$TABLESPACE_NAME\b" /tmp/tablespace.txt | awk '{printf $3*1024*1024}'
}
 
function check {
    if grep "\b$TABLESPACE_NAME\b" /tmp/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

[root@localhost script]# chmod +x zabbix_tablespace_check.sh
  • 测试脚本运行结果
[root@localhost script]# ./zabbix_tablespace_check.sh pre SYSTEM
90

[root@localhost script]# ./zabbix_tablespace_check.sh fre SYSTEM
93650944

[root@wmsoracletest script]# ./zabbix_tablespace_check.sh check SYSTEM
1

4、添加至Zabbix-Agent配置中

在Oracle所在服务器的Zabbix-agent配置文件中添加脚本路径和监控项key

注意:这里zabbix的item为discovery.oracle.tablespace和tablespace.check

[root@localhost script]# vim /etc/zabbix/zabbix_agentd.conf
UserParameter=discovery.oracle.tablespace[*],/script/zabbix_tablespace.sh
UserParameter=tablespace.check[*],/script/zabbix_tablespace_check.sh $1 $2

#重启zabbix-agent
[root@localhost ~]# systemctl restart zabbix-agent

5、Zabbix服务端测试

[root@zabbix-server ~]# zabbix_get -s xx.xx.xx.xx -p 10050 -k 'tablespace.check[pre,SYSTEM]'
97

[root@zabbix-server ~]# zabbix_get -s xx.xx.xx.xx -p 10050 -k 'tablespace.check[fre,SYSTEM]'
111214592

[root@zabbix-server ~]# zabbix_get -s xx.xx.xx.xx -p 10050 -k 'tablespace.check[check,SYSTEM]'
1

6、Zabbix-WEB端配置

6.1:创建表空间监控模板

6.2:创建自动发现规则

6.3:创建表空间使用率监控项原型

6.4:创建变空间剩余容量监控项原型

6.5:创建表空间自动是否自动扩展监控原型

6.6:创建表空间使用率触发器

文章来源(Source):https://dqzboy.com

6.7:创建表空间剩余容量触发器

6.8:创建表空间自动扩展触发器

6.9:创建表空间使用率图形

6.10:创建表空间剩余容量图形

6.11:创建表空间自动扩展状态图形

7、给Oracle主机添加模板

等待一会,收集到数据后进行查看图形


本文作者:浅时光博客
原文链接:https://www.dqzboy.com/941.html
版权声明:知识共享署名-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)协议进行许可,转载时请以>超链接形式标明文章原始出处和作者信息
免责声明:本站内容仅供个人学习与研究,严禁用于商业或非法目的。请在下载后24小时内删除相应内容。继续浏览或下载即表明您接受上述条件,任何后果由用户自行承担。

1 条回应

必须 注册 为本站用户, 登录 后才可以发表评论!

  1. kkkkk山东·青岛2021-6-29 · 16:28

    监控Oracle最好还是安装odbc来监控,这样可扩展性高一点