zabbix 监控统计从数据库中获取想要的数据。

1: 首先要在有oracle 客户端的主机上进行 shell 脚本部署, 该脚本主要从数据库中获取数据。 

建立3个文件, 1个 test.sh 执行脚本, 1个test.sql脚本 , 1个导出数据test.txt文件

1: test.sh 

#!/bin/sh
NLS_LANG=American_America.ZHS16GBK
LANG=zh_CN.gbk
LANGUAGE=zh_CN.GB18030:zh_CN.GB2312:zh_CN
export NLS_LANG LANG LANGUAGE
####oracle ######
export PATH=$PATH:$HOME/bin
export NLS_LANG=American_america.ZHS16GBK
export ORACLE_HOME=数据库家目录
export ORACLE_TERM=xterm;
export PATH=/usr/sbin:$PATH; 
export PATH=$PATH:$ORACLE_HOME/bin:/sbin:/usr/sbin:/bin:/usr/local/bin:.
export LD_LIBRARY_PATH=$ORACLE_HOME/lib:/lib:/usr/lib:$ORACLE_HOME/rdbms/lib; 
export CLASSPATH=$ORACLE_HOME/JRE:$ORACLE_HOME/jlib:$ORACLE_HOME/network/jlib
####oracle ######
cd /test
sqlplus 用户/密码@实例名</dev/null
@/test/test.sql (自己编写的sql执行脚本)
exit
EOF
###########

2: test.sql 

spool  test.txt

select xxx from xxx where xxxx  ;  编写一些你需要监控获取的数据,可以设置一些关键字,方便对输出结果test.txt进行过滤处理

spool off

3: 对输出的 test.txt 进行过滤处理

eg : 

'MM   DECODE(COUNT(1),NULL,0,COUNT(1))                                         
------ --------------------------------                                         
mm                               22                                         

'NN DECODE(COUNT(1),NULL,0,COUNT(1))                                         
------ --------------------------------                                         
nn                              714    

只需要再设置zabbix 变量时 ,进行过滤就行了.

eg:

UserParameter=mm,cat /test/test.txt  | grep 'baoy'  | awk '{print $2}' 

然后再zabbix 页面上进行添加监控,然后再设置退休就可以了。 如果有需要,也可以试着报警灯


对于多长时间获取一次数据,在获取数据库侧,可以在定时任务里面设置每次只需的时刻频率, 对于zabbix 侧。也可以自定义(页面就可以设置)





你可能感兴趣的:(监控+性能分析,shell)