前面介绍了利用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. TestNG 入门指导——理解testng.xml执行/不执行某个包,某个类,某个方法

    这一篇我们主要学习如下几个知识点: ⑴关于testng.xml ⑵创建一个测试套件 ⑶执行testng.xml ⑷在测试套件中创建多个测试用例 ⑸在用例中增加class,packages, metho ...

  2. UltraCompare 激活

    UltraCompare安装包.注册机下载地址: 链接:https://pan.baidu.com/s/1eSu8Pbk 密码:fkkh 1.安装UltraCompare 2. 3. 打开注册机,填入 ...

  3. e618. Validating a JTextField When Permanently Losing the Focus

    This example demonstrates a text field that validates its contents when it receives a permanent focu ...

  4. 本机IP、127.0.0.1和0.0.0.0的区别

    本机ip.127.0.0.1和0.0.0.0区别   网络java IP地址的记法: IP地址由四个字节构成,为了方便阅读和书写,每个字节用0-255的数字表示,字节之间用’.'分割,如: 10.10 ...

  5. WebSphere异常:Servlet has become temporarily unavailable for service

    今天发现WebSphere中的一个应用图片看不见了,单独在浏览器中访问图片的路径http://ip地址:9080/应用/--/images/top.jpg,也不显示图片,并且提示异常Servlet h ...

  6. python调用ansible接口API执行命令

    python版本:Python 2.6.6 ansible版本:ansible 2.3.1.0      下载地址:https://releases.ansible.com/ansible/ 调用脚本 ...

  7. 文本框中的回车处理 js

    <input id="txtOrderID" onkeypress="getKey(event)" /> <button onclick=&q ...

  8. IDEA VS 快捷键 大全

    [参考]IntelliJ IDEA 常用 黄金 快捷键  总结 不断更新     一.VS常用快捷键 (01).快速插入foreach.try等循环:Tab + Tab; (02).回到光标前一位置: ...

  9. array_multisort—对多个数组或多维数组进行排序

    From: http://www.cnblogs.com/lwbqqyumidi/archive/2013/01/31/2887188.html PHP中array_multisort可以用来一次对多 ...

  10. 配置IP

    配置目的:配置IP为静态,让IP地址不变,方便长时间连接. 几个命令: dhclient 自动获取IP; 杀死进程:dhclient -r ip addr 显示网卡情况,了解到IP地址: 编辑配置文件 ...