前面介绍了利用Orabbix监控了,参考zabbix通过Orabbix监控oracle数据库,这里我们原先的模板中进行了修改,使用自动发现功能实现监控tablespace的使用情况。

1. 在被监控的数据库机器上创建3个shell脚本

1.1 得到表空间的使用情况

[oracle@oracledb shellScripts]$ cat /home/oracle/shellScripts/query_tablespace_usage.sh
source /home/oracle/.bash_profile
sqlplus -s zabbix/zabbix > /tmp/tablespace.log<<EOF
set linesize 140 pagesize 10000
col "Status" for a10
col "Name" for a25
col "Type" for a10
col "Extent" for a15
col "Size (M)" for a15
col "Used (M)" for a15
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

  通过这个脚本我们可以得到表空间的使用情况,并记录在/tmp/tablespace.log中

1.2 通过脚本取得表空间的名字,并转换成json格式的(因为zabbix的自动发现功能获取的数据类型是JSON格式的)

[oracle@oracledb ~]$ cat /usr/local/zabbix-3.6.2/scripts/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 ']}'

  执行脚本可以得到

[oracle@oracledb ~]$ /usr/local/zabbix-3.6.2/scripts/oracle_discovery.sh
{"data":[
{"{#TABLENAME}":"COSTCTL_TBS_TEMP"},
{"{#TABLENAME}":"PDMS_DATA_TEMP"},
{"{#TABLENAME}":"UNDOTBS1"},
.....................
....................
{"{#TABLENAME}":"TBLSPACE_PAYMENT"},
{"{#TABLENAME}":"TBLSPACE_CLAIM"},
{"{#TABLENAME}":"TBLSPACE_PAYMENTIDX"},
{"{#TABLENAME}":"TEMP"},
{"{#TABLENAME}":"TBLSPACE_TEMP02"},
{"{#TABLENAME}":"SYSTEM"}]}

  1.3 创建脚本获取/tmp/tablespace.log中的最后3列

[oracle@oracledb ~]$ cat /usr/local/zabbix-3.6.2/scripts/oracle_
oracle_check.sh oracle_discovery.sh
[oracle@oracledb ~]$ cat /usr/local/zabbix-3.6.2/scripts/oracle_check.sh
#!/bin/bash
EQ_DATA="$2"
ZBX_REQ_DATA_TAB="$1"
SOURCE_DATA=/tmp/tablespace.log
case $2 in
maxmb)
grep -w "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $5*1024*1024}';;
used)
grep -w "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $6*1024*1024}';;
autopercent)
grep -w "$ZBX_REQ_DATA_TAB" $SOURCE_DATA |awk '{print $7}';;
*)
echo $ERROR_WRONG_PARAM; exit 1;;
esac
exit 0

  注意给/usr/local/zabbix-3.6.2/scripts这个目录执行权限

2. zabbixagent配置文件添加自定义监控key

在/usr/local/zabbix-3.6.2/etc/zabbix_agentd.conf文件末尾添加:

UserParameter=ora.tab.discovery,/usr/local/zabbix-3.6.2/scripts/oracle_discovery.sh
UserParameter=tablespace[*],/usr/local/zabbix-3.6.2/scripts/oracle_check.sh $1 $2

  

3.  将query_tablespace_usage.sh放到系统自动任务中,每隔一分钟执行。

*/1 * * * * /home/oracle/shellScripts/query_tablespace_usage.sh > /home/oracle/shellScripts/oracle_cron.sh.log 2>&1

4. 重启zabbix_agentd,使配置生效

/etc/init.d/zabbix_agentd restart

  可以在zabbix服务端看是否得到客户端传来的数据

[root@lanmp bin]# ./zabbix_get -s 192.168.0.92 -k "tablespace[USERS autopercent]"
94.55
[root@lanmp bin]# ./zabbix_get -s 192.168.0.92 -k "tablespace[USERS maxmb]"
70
[root@lanmp bin]# ./zabbix_get -s 192.168.0.92 -k "tablespace[USERS used]"
66
[root@lanmp bin]# pwd
/usr/local/zabbix-3.2.6/bin

  

 5.  添加发现规则
  之前安装过orabbix,直接在Template_Oracle下添加发现规则
 
5.1 创建发现规则
模板-->Template_Oracle-->创建自动发现规则
 
名称:tablespacediscovery
键值:ora.tab.discovery
数据更新间隔:60
 

5.2 给发现规则创建监控项原型

名称:{#TABLENAME}autopercent

键值:tablespace[{#TABLENAME},autopercent]

新的应用集:tablespace

同样的方法创建剩下的两个监控原型

注意autopercent的单位是浮点型

5.3  创建图形原型

名称:{#TABLENAME}monitor

整体的发现规则:

过一分钟左右就会产生监控到的数据了

图形界面

我的模板附件:http://files.cnblogs.com/files/zydev/zbx_export_templates.xml

Zabbix的自定义键值和自动发现功能监控Oracle数据库的表空间的更多相关文章

  1. STL: unordered_map 自定义键值使用

    使用Windows下 RECT 类型做unordered_map 键值 1. Hash 函数 计算自定义类型的hash值. struct hash_RECT { size_t operator()(c ...

  2. Android下添加新的自定义键值和按键处理流程

            Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我 ...

  3. Android下添加新的自定义键值和按键处理流程【转】

    本文转载自: Android下添加新的自定义键值和按键处理流程     说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我一 ...

  4. map自定义键值类型

    map自定义键值类型 改变Map的默认比较方式 https://www.cnblogs.com/zjfdlut/archive/2011/08/12/2135698.html 大家知道,STL中的ma ...

  5. std::map使用结构体自定义键值

    使用STL中的map时候,有时候需要使用结构题自定义键值,比如想统计点的坐标出现的次数 struct Node{ int x,y; }; ...... map<Node,int>mp; m ...

  6. PowerDesigner连接Oracle数据库建表序列号实现自动增长

    原文:PowerDesigner连接Oracle数据库建表序列号实现自动增长 创建表就不说了.下面开始介绍设置自动增长列. 1 在表视图的列上创建.双击表视图,打开table properties — ...

  7. Oracle修改指定表空间为自动扩展

    1.数据文件自动扩展的好处 1)不会出现因为没有剩余空间可以利用到数据无法写入 2)尽量减少人为的维护 3)可以用于重要级别不是很大的数据库中,如测试数据库等 2.数据文件自动扩展的弊端 1)如果任其 ...

  8. 【Oracle】查看表空间是否为自动扩展

    查看指定的表空间是否为自动扩展 SQL>   select file_name,autoextensible,increment_by from dba_data_files where tab ...

  9. zabbix自定义键值原理

    子配置文件的配置 为了便于维护和分类管理,UserParameter的内容可以单独写一个配置文件 # vim /usr/local/zabbix/etc/zabbix_agentd.conf Incl ...

随机推荐

  1. 助你简化开发的 jQuery 插件

    Vanity Toolset vanity toolset是一套方便的UI工具集,可以帮助你快速的搭建幻灯,聚光灯,占位,收放相关的UI,它完成了大部分的UI功能,你只需要花费很少时间就可以构建一个完 ...

  2. Linux 文件编码格式转换

    如果需要在Linux 中操作windows下的文件,那么经常遇到文件编码转换的问题. Windows中默认的文件格式是GBK(gb2312),而Linux一般都是UTF-. 查看文件编码 在vim 中 ...

  3. 远程操作与端口转发 SSH原理与运用

    SSH不仅可以用于远程主机登录,还可以直接在远程主机上执行操作. 上一节的操作,就是一个例子: $ ssh user@host 'mkdir -p .ssh && cat >&g ...

  4. 第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别

    第三百四十三节,Python分布式爬虫打造搜索引擎Scrapy精讲—scrapy模拟登陆和知乎倒立文字验证码识别 第一步.首先下载,大神者也的倒立文字验证码识别程序 下载地址:https://gith ...

  5. java的GUI程序的基本思路是以JFrame为基础

    JFrame – java的GUI程序的基本思路是以JFrame为基础,它是屏幕上window的对象,能够最大化.最小化.关闭. JPanel – Java图形用户界面(GUI)工具包swing中的面 ...

  6. 关于makefile文件研究

    makefile文件采用依赖倒推的模式进行编译. 主要由以下几步构成: 1 申明 2 default 默认生成的对象 3 TARGET 链接过程 4 cpp 编译过程 5 生成一个version.h文 ...

  7. (转) 解密H264、AAC硬件解码的关键扩展数据处理

    出自:http://blog.itpub.net/30168498/viewspace-1576794/       通过上一篇文章,我们用ffmpeg分离出一个多媒体容器中的音视频数据,但是很可能这 ...

  8. 基于SOA的组件化业务基础平台[转]

    转自https://www.ibm.com/developerworks/cn/webservices/1111_xiaojg_soa/index.html 业务基础平台是业务逻辑和基础架构平台之间的 ...

  9. Maven的pom.xml文件结构之基本配置parent和继承结构[转]

    1.Maven项目的继承 Maven项目之间不仅存在多模块的聚合关系,而且Maven项目之间还可以存在相互继承的关系. Maven项目之间的继承关系通过<parent>表示,在子Maven ...

  10. RabbitMQ学习笔记(一):安装及Springboot集成

    前言 MQ,即消息队列Message Queue的缩写. RabbitMQ 是MQ的一种,就像招商银行是银行的一种一样.主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用. 消息 ...