快捷搜索:  汽车  科技

zabbix数据库解析,zabbix5监控SAP环境下Oracle数据库表空间

zabbix数据库解析,zabbix5监控SAP环境下Oracle数据库表空间最终在last data可以看到自己想要的效果了。你会发现单位是GB的,zabbix建议使用单位B,至于为什么?因为在显示的时候它可以自动转义,B可以转为MB/GB/TB,如果你单位是GB,在转换TB时就变成了KGB,就看起来很别扭了。那我改改吧。SELECT NULL TABLESPACE NULL TABLESPACE_TYPE NULL E NULL C NULL ALLOC_GB NULL "DB_%" NULL AUTOEXT_GB NULL USED_GB NULL "USED_PCT" NULL FREE_GB NULL FILES NULL SEGMENTS NULL EXTENTS FROM DUAL WHERE 1 = 0 UNION ALL ( SELECT NULL TABLESPACE NULL

最早我安装的zabBIx还是1.0版本,用了一段时间升级到了3.0,这个版本一直了用了好多年,也足够用了。没想到最近zabbix总是宕机,无奈只能重新安装了最新版本5。发现功能比以前强大了很多啊,网络上也出现很多新的监控方案,特别是自动发现IP和web监控的,很受用啊。其中对SAP环境下Oracle数据库监控,以前我是用orabbix这个插件,用起来挺好的,可以自己新增监控项目,只要你会写sql语句。而新版本直接增加了Template DB Oracle by ODBC这个模板,直接拿来用,简直爽歪歪啊。

zabbix数据库解析,zabbix5监控SAP环境下Oracle数据库表空间(1)

zabbix5.0版本对oracle监控很好用,但对表空间tablespace,似乎少了一些东西,只有下面这些监控项。

zabbix数据库解析,zabbix5监控SAP环境下Oracle数据库表空间(2)

而SAP事务代码db02的表空间显示如下图,对比下,大概zabbix只显示了其中4个栏位,如下图红色标记:

zabbix数据库解析,zabbix5监控SAP环境下Oracle数据库表空间(3)

如果想监控其他的栏位,那得改写,无奈那个sql太复杂,看不懂啊,也不想重头写,于是就借用了SAP官方提供的脚本:Space_Tablespaces_11g .txt,这个脚本可以去SAP网站下载哦。执行出来的结果如下图:

zabbix数据库解析,zabbix5监控SAP环境下Oracle数据库表空间(4)

你会发现单位是GB的,zabbix建议使用单位B,至于为什么?因为在显示的时候它可以自动转义,B可以转为MB/GB/TB,如果你单位是GB,在转换TB时就变成了KGB,就看起来很别扭了。那我改改吧。

SELECT NULL TABLESPACE NULL TABLESPACE_TYPE NULL E NULL C NULL ALLOC_GB NULL "DB_%" NULL AUTOEXT_GB NULL USED_GB NULL "USED_PCT" NULL FREE_GB NULL FILES NULL SEGMENTS NULL EXTENTS FROM DUAL WHERE 1 = 0 UNION ALL ( SELECT NULL TABLESPACE NULL TABLESPACE_TYPE NULL E NULL C NULL ALLOC_GB NULL "ALLOC_%" NULL AUTOEXT_GB NULL USED_GB NULL "USED_PCT" NULL FREE_GB NULL FILES NULL SEGMENTS NULL EXTENTS FROM DUAL WHERE 1 = 0 ) UNION ALL (SELECT * FROM ( WITH BASIS_INFO AS ( SELECT /* 11g: Tablespace encryption */ ' ' INCLUDE_USAGE_METRICS 'TABLESPACE' AGGREGATE_BY 'SIZE' ORDER_BY '%' TABLESPACE_PATTERN_1 '%' TABLESPACE_PATTERN_2 TO_DATE('01.01.1000 01:00:00' 'dd.mm.yyyy hh24:mi:ss') CREATED_MIN_TIME TO_DATE('01.01.1000 01:00:00' 'dd.mm.yyyy hh24:mi:ss') LAST_DDL_MIN_TIME FROM DUAL ) TABLESPACES AS ( SELECT TS.TABLESPACE_NAME TS.CONTENTS SUBSTR(TS.ENCRYPTED 1 1) ENCRYPTED DECODE(TS.COMPRESS_FOR NULL 'N' 'BASIC' 'B' 'OLTP' 'Y') COMPRESSED COUNT(*) DATAFILES SUM(DF.BYTES) BYTES MAX(TUM.TABLESPACE_SIZE) * MAX(TS.BLOCK_SIZE) ALLOC_BYTES_USAGE_METRIC MAX(TUM.USED_SPACE) * MAX(TS.BLOCK_SIZE) USED_BYTES_USAGE_METRIC DECODE(TS.EXTENT_MANAGEMENT 'DICTIONARY' 'DMTS' 'LMTS') || '/' || SUBSTR(TS.CONTENTS 1 1) || DECODE(TS.ALLOCATION_TYPE 'SYSTEM' ' (SYS)' 'UNIFORM' ' (UNI ' || ROUND(TS.MIN_EXTLEN / 1024 / 1024) || 'M)') || DECODE(TS.SEGMENT_SPACE_MANAGEMENT 'AUTO' ' ASSM') TABLESPACE_TYPE SUM(DECODE(DF.AUTOEXTENSIBLE 'NO' DF.BYTES DF.MAXBYTES)) MAX_BYTES FROM BASIS_INFO BI DBA_DATA_FILES DF DBA_TABLESPACES TS DBA_TABLESPACE_USAGE_METRICS TUM WHERE ( BI.TABLESPACE_PATTERN_1 = '%' AND BI.TABLESPACE_PATTERN_2 = '%' OR BI.TABLESPACE_PATTERN_1 != '%' AND DF.TABLESPACE_NAME LIKE BI.TABLESPACE_PATTERN_1 OR BI.TABLESPACE_PATTERN_2 != '%' AND DF.TABLESPACE_NAME LIKE BI.TABLESPACE_PATTERN_2 ) AND DF.TABLESPACE_NAME = TS.TABLESPACE_NAME AND DF.TABLESPACE_NAME = TUM.TABLESPACE_NAME ( ) GROUP BY TS.TABLESPACE_NAME TS.CONTENTS TS.ENCRYPTED TS.COMPRESS_FOR TS.EXTENT_MANAGEMENT TS.CONTENTS TS.ALLOCATION_TYPE TS.MIN_EXTLEN TS.SEGMENT_SPACE_MANAGEMENT BI.TABLESPACE_PATTERN_1 BI.TABLESPACE_PATTERN_2 UNION ALL ( SELECT TS.TABLESPACE_NAME TS.CONTENTS SUBSTR(TS.ENCRYPTED 1 1) ENCRYPTED DECODE(TS.COMPRESS_FOR NULL 'N' 'BASIC' 'B' 'OLTP' 'Y') COMPRESSED COUNT(*) DATAFILES SUM(TF.BYTES) BYTES MAX(TUM.TABLESPACE_SIZE) * MAX(TS.BLOCK_SIZE) ALLOC_BYTES_USAGE_METRIC MAX(TUM.USED_SPACE) * MAX(TS.BLOCK_SIZE) USED_BYTES_USAGE_METRIC DECODE(TS.EXTENT_MANAGEMENT 'DICTIONARY' 'DMTS' 'LMTS') || '/' || SUBSTR(TS.CONTENTS 1 1) || DECODE(TS.ALLOCATION_TYPE 'SYSTEM' ' (SYS)' 'UNIFORM' ' (UNI ' || ROUND(TS.MIN_EXTLEN / 1024 / 1024) || 'M)') || DECODE(TS.SEGMENT_SPACE_MANAGEMENT 'AUTO' ' ASSM') TABLESPACE_TYPE SUM(DECODE(AUTOEXTENSIBLE 'NO' TF.BYTES TF.MAXBYTES)) MAX_BYTES FROM BASIS_INFO BI DBA_TEMP_FILES TF DBA_TABLESPACES TS DBA_TABLESPACE_USAGE_METRICS TUM WHERE ( BI.TABLESPACE_PATTERN_1 = '%' AND BI.TABLESPACE_PATTERN_2 = '%' OR BI.TABLESPACE_PATTERN_1 != '%' AND TF.TABLESPACE_NAME LIKE BI.TABLESPACE_PATTERN_1 OR BI.TABLESPACE_PATTERN_2 != '%' AND TF.TABLESPACE_NAME LIKE BI.TABLESPACE_PATTERN_2 ) AND TF.TABLESPACE_NAME = TS.TABLESPACE_NAME AND TF.TABLESPACE_NAME = TUM.TABLESPACE_NAME ( ) GROUP BY TS.TABLESPACE_NAME TS.CONTENTS TS.ENCRYPTED TS.COMPRESS_FOR TS.EXTENT_MANAGEMENT TS.CONTENTS TS.ALLOCATION_TYPE TS.MIN_EXTLEN TS.SEGMENT_SPACE_MANAGEMENT BI.TABLESPACE_PATTERN_1 BI.TABLESPACE_PATTERN_2 ) ) SEGMENTS AS ( SELECT TABLESPACE_NAME COUNT(*) SEGMENTS SUM(BYTES) BYTES SUM(EXTENTS) EXTENTS FROM ( SELECT S.TABLESPACE_NAME S.BYTES S.EXTENTS O.CREATED O.LAST_DDL_TIME BI.CREATED_MIN_TIME BI.LAST_DDL_MIN_TIME FROM BASIS_INFO BI DBA_OBJECTS O DBA_SEGMENTS S WHERE O.OWNER ( ) = S.OWNER AND O.OBJECT_NAME ( ) = S.SEGMENT_NAME AND O.OBJECT_TYPE ( ) = S.SEGMENT_TYPE AND NVL(O.SUBOBJECT_NAME ( ) ' ') = NVL(S.PARTITION_NAME ' ') ) WHERE CREATED IS NULL OR /* undo segments are not recorded in DBA_OBJECTS for example */ ( CREATED >= CREATED_MIN_TIME AND LAST_DDL_TIME >= LAST_DDL_MIN_TIME ) GROUP BY TABLESPACE_NAME UNION ALL ( SELECT TABLESPACE_NAME 0 SEGMENTS SUM(BYTES_USED) BYTES SUM(EXTENTS_USED) EXTENTS FROM GV$TEMP_EXTENT_POOL GROUP BY TABLESPACE_NAME ) ) SELECT DECODE(BI.AGGREGATE_BY 'TABLESPACE' T.TABLESPACE_NAME 'CONTENT' T.CONTENTS) AREA DECODE(BI.AGGREGATE_BY 'TABLESPACE' T.TABLESPACE_TYPE 'CONTENT' 'n/a') TABLESPACE_TYPE DECODE(BI.AGGREGATE_BY 'TABLESPACE' DECODE(T.ENCRYPTED 'N' ' ' T.ENCRYPTED) 'CONTENT' 'n/a') E DECODE(BI.AGGREGATE_BY 'TABLESPACE' DECODE(T.COMPRESSED 'N' ' ' T.COMPRESSED) 'CONTENT' 'n/a') C TO_CHAR(SUM(T.BYTES) 999999999999999990.99) ALLOC_GB TO_CHAR(RATIO_TO_REPORT(SUM(T.BYTES)) OVER () * 100 990.99) "DB_%" TO_CHAR(SUM(T.MAX_BYTES) 9999999999999990.99) || DECODE(BI.INCLUDE_USAGE_METRICS 'X' ' (' || DECODE(SUM(T.ALLOC_BYTES_USAGE_METRIC) NULL ' n/a' TO_CHAR(SUM(T.ALLOC_BYTES_USAGE_METRIC) 99999999999999999999.99)) || ')') AUTOEXT_GB TO_CHAR(SUM(NVL(S.BYTES 0)) 999999999999999990.99) || DECODE(BI.INCLUDE_USAGE_METRICS 'X' ' (' || DECODE(SUM(T.USED_BYTES_USAGE_METRIC) NULL ' n/a' TO_CHAR(SUM(T.USED_BYTES_USAGE_METRIC) 9999999999999999990.99)) || ')') USED_GB TO_CHAR(SUM(NVL(S.BYTES 0)) / SUM(T.BYTES) * 100 990.99) "USED_%" TO_CHAR((SUM(T.BYTES) - SUM(NVL(S.BYTES 0))) 9999999999990.99) FREE_GB TO_CHAR(SUM(T.DATAFILES) 9990) FILES TO_CHAR(SUM(NVL(S.SEGMENTS 0)) 9999990) SEGMENTS TO_CHAR(SUM(NVL(S.EXTENTS 0)) 99999990) EXTENTS FROM TABLESPACES T SEGMENTS S BASIS_INFO BI WHERE T.TABLESPACE_NAME = S.TABLESPACE_NAME ( ) GROUP BY BI.AGGREGATE_BY T.CONTENTS T.TABLESPACE_NAME T.TABLESPACE_TYPE T.ENCRYPTED T.COMPRESSED BI.INCLUDE_USAGE_METRICS BI.ORDER_BY ORDER BY DECODE(BI.ORDER_BY 'SIZE' SUM(T.BYTES) 'AUTOEXT_SIZE' SUM(T.MAX_BYTES) 'FREESPACE' SUM(T.BYTES) - SUM(NVL(S.BYTES 0)) 1) DESC DECODE(BI.ORDER_BY 'NAME' DECODE(BI.AGGREGATE_BY 'TABLESPACE' T.TABLESPACE_NAME 'CONTENT' T.CONTENTS)) ));

这么一大段的代码,是不是看起来很头疼呢?直接执行结果,单位就变成了B。

zabbix数据库解析,zabbix5监控SAP环境下Oracle数据库表空间(5)

我们再去模版Template DB Oracle by ODBC新增监控项,至于怎么增加监控项?而且还是在discovery里边来添加,具体方法就不详细写了,自己去网络上搜索吧。

最终在last data可以看到自己想要的效果了。

zabbix数据库解析,zabbix5监控SAP环境下Oracle数据库表空间(6)

猜您喜欢: