当前位置:  数据库>oracle

使用Shell生成Orabbix自动化配置脚本

    来源: 互联网  发布时间:2017-06-20

    本文导语: 在使用Orabbix监控Oracle的时候,本身和zaabix agent最大的不同便是使用Orabbix不需要对每个数据库实例都安装单独的agent,而是一个Orabbix实例可以对应多个数据库实例,Orabbix是基于JDBC的方式来实现的,基于此,配置的工作就尤为重...

在使用Orabbix监控Oracle的时候,本身和zaabix agent最大的不同便是使用Orabbix不需要对每个数据库实例都安装单独的agent,而是一个Orabbix实例可以对应多个数据库实例,Orabbix是基于JDBC的方式来实现的,基于此,配置的工作就尤为重要了。

对于一个数据库实例配置Orabbix,大体有下面三件事需要考虑。

网络的配置,防火墙中开放对应的端口,这个是在使用Orabbix agent的时候,为了使得Orabbix agent能够通过jdbc的方式访问到数据库,我们需要在防火墙中开放相应的端口

比如

iptables -I INPUT -s 10.xx.133.xx  -p tcp -m multiport --dports $db_port  -i eth0 -j ACCEPT

当然了使用Orabbix的时候在数据库实例中还是需要创建响应的档案用户,这个用户的主要作用就是访问数据字典表,性能视图,纯粹就是查询。

最后的任务就是配置jdbc连接串了。

比如我们假定数据库为test_internal,则可以在Orabbix的配置文件中配置

test_internal.Url=jdbc:oracle:thin:@10.127.xxxx.xx:1523:test_internal
 test_internal.User=orabbix
 test_internal.Password=orabbix
 test_internal.QueryListFile=./conf/query.props
整体来看这三个步骤的工作量不大,但是在实际中操作的时候还是有一些繁琐,一方面是服务器ip,对于Orabbix agent来说,可能直接使用ip连接更加直接,而使用hostname的方式还需要在/etc/hosts中再配置一层解析,每个数据库实例的端口都可能不同,如果给你几十台机器需要做这些配置工作,工作的繁琐程度和出错纪律就会高很多,希望自己能更快一些,但是总是感觉快不起来,老是卡在一些细小的地方,总体来说这个配置工作还是需要花点时间的,而且也着实是个细心活。
 为了更快,更方便使用,自己也是痛下决心来改进,于是乎写了下面的shell脚本,一个脚本直接生成所有的脚本,一目了然,什么时候该做哪些,哪些是特定的环境变量都可以动态赋值生成动态的配置脚本。
 这个脚本的主要工作在于使用tnsping来解析得到的链接串,然后把连接串中的host由主机名改为ip的方式,解析其中的端口号,考虑了主备库的一些差距,脚本也做了一些改进。
$ORACLE_HOME/bin/tnsping  `sqlplus -s / as sysdba < col value format a10
 set pages 0
 set linesize 200
 set feedback off
 select value from v\$parameter where name='db_unique_name';
 EOF` |sed 's/(/n/g'|sed 's/)/n/g'|grep -i 'HOST|PORT|SERVICE_NAME|SID_NAME'  > tns_tmp.lst

 tmp_host_name=`grep -i HOST tns_tmp.lst|awk -F= '{print $2}'`
 host_name=`grep -w $tmp_host_name /etc/hosts|awk '{print $1}'`
 db_port=`grep -i PORT tns_tmp.lst|awk -F= '{print $2}'`
 db_name=`grep -i 'SERVICE_NAME|SID_NAME' tns_tmp.lst|awk -F= '{print $2}'`
 eth_name=`ifconfig|head -1|awk '{print $1}'`

 echo "#### use below to open firewall to zabbix server with dedicated db port ####"
 echo "iptables -I INPUT -s 10.127.133.82  -p tcp -m multiport --dports $db_port  -i $eth_name -j ACCEPT "

 echo "#### use below script to create orabbix user accounts ####"
 echo  "CREATE USER orabbix                    "
 echo "IDENTIFIED BY orabbix                  "
 echo "DEFAULT TABLESPACE USERS              "
 echo "TEMPORARY TABLESPACE TEMP              "
 echo "PROFILE DEFAULT                        "
 echo "ACCOUNT UNLOCK;                        "
 echo "-2 Roles for orabbix                "
 echo "GRANT CONNECT TO orabbix;              "
 echo "GRANT RESOURCE TO orabbix;            "
 echo "ALTER USER orabbix DEFAULT ROLE ALL;  "
 echo "-3 System Privileges for orabbix    "
 echo "GRANT SELECT ANY TABLE TO orabbix;    "
 echo "GRANT CREATE SESSION TO orabbix;      "
 echo "GRANT SELECT ANY DICTIONARY TO orabbix;"
 echo "GRANT UNLIMITED TABLESPACE TO orabbix; "
 echo "GRANT SELECT ANY DICTIONARY TO orabbix;"
 
 echo "exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description => 'resolve acl', principal =>'ORABBIX', is_grant => true, privilege => 'resolve');"
 echo "exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');"

 echo "#### add below in orabbix config files ####"
 echo $db_name.Url=jdbc:oracle:thin:@$host_name:$db_port:$db_name|sed 's/ //g'
 echo $db_name.User=orabbix
 echo $db_name.Password=orabbix
 echo $db_name.QueryListFile=./conf/query.props
脚本的运行情况如下:
#### use below to open firewall to zabbix server with dedicated db port ####
 iptables -I INPUT -s 10.127.xxxx.xx  -p tcp -m multiport --dports  1526  -i eth0 -j ACCEPT
 #### use below script to create orabbix user accounts ####
 CREATE USER orabbix                   
 IDENTIFIED BY orabbix                 
 DEFAULT TABLESPACE USERS             
 TEMPORARY TABLESPACE TEMP             
 PROFILE DEFAULT                       
 ACCOUNT UNLOCK;                       
 -2 Roles for orabbix               
 GRANT CONNECT TO orabbix;             
 GRANT RESOURCE TO orabbix;           
 ALTER USER orabbix DEFAULT ROLE ALL; 
 -3 System Privileges for orabbix   
 GRANT SELECT ANY TABLE TO orabbix;   
 GRANT CREATE SESSION TO orabbix;     
 GRANT SELECT ANY DICTIONARY TO orabbix;
 GRANT UNLIMITED TABLESPACE TO orabbix;
 GRANT SELECT ANY DICTIONARY TO orabbix;
 exec dbms_network_acl_admin.create_acl(acl => 'resolve.xml',description => 'resolve acl', principal =>'ORABBIX', is_grant => true, privilege => 'resolve');
 exec dbms_network_acl_admin.assign_acl(acl => 'resolve.xml', host =>'*');
 #### add below in orabbix config files ####
test_internal.Url=jdbc:oracle:thin:@10.127.xxxx.xx:1526:test_internal
test_internal.User=orabbix
test_internal.Password=orabbix
test_internal.QueryListFile=./conf/query.props

好了,脚本是准备好了,就等着方便工作了,短时间内配置几十个数据库实例都不是难题了,谁用谁知道。


    
 
 

您可能感兴趣的文章:

  • shell 脚本中命令别名在脚本外无法使用
  • nohup执行的shell脚本,全局变量不能传递到脚本中使用吗?
  • 关于unix使用参数导致脚本输出异常(与脚本内直接带参数输出结果不同)
  • 如何在Linux下使用脚本实现程序的自动重启!望各位详解!
  • 大家好,我想问下有人用过"linux进程的内存使用解析"中推荐使用的"Ben Maurer写的perl脚本"查看内存么
  • 如何在使用命令行去修改系统脚本?
  • 有没有方法可以使用脚本批量修改bash环境变量
  • 如何在shell脚本中使用source命令?
  • Ubuntu下Shell脚本中[]的使用
  • 使用脚本向进程发出命令
  • linux使用shell脚本,如何创建用户,并设置用户密码?能否给出示例?
  • 急!!!AIX上监控CPU和内存使用率的脚本
  • linux系统使用python获取内存使用信息脚本分享
  • linux下使用shell脚本编译java报错?
  • oracle使用sql脚本生成csv文件案例学习
  • ORACEL使用脚本来修改表结构
  • shell脚本参数使用问题
  • 使用iconv批量改变文件编码的shell脚本
  • 使用sh脚本如何替换指定目录下所有文件中的指定字符串
  • 求助:使用sh脚本,把文件1.txt中的A都替换成B
  • 如何使用arm-uclibc-gcc将.c文件编译生成.a,将.c文件编译生成.cgi?
  • 如何使用gcc生成dynamic objs
  • 在Linux下使用GCC如何编译生成Windows下使用的DLL?
  • vim生成的.cpp~是什么文件?我使用vim编辑的时候出现了好多.cpp~文件
  • 请教各位高手,怎么才能使用XML生成一个数型菜单
  • 不知为何?使用aclocal不能生成aclocal.m4文件?请问是什么原因?
  • 使用GetInvalidFileNameChars生成文件名
  • 欢迎使用、加入Arrow项目开发--一个自动化代码生成工具
  • 寻 懂的redhat linux 下 . 使用automake和autoconf 自动生成Makefile 的 达人。
  • 请问在linux下面用flex生成的c程序在windows下可以正确使用吗?
  • 如何在使用nohup的时候不让它生成nohup.out
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Android 自动化测试经验分享 UiObejct.getFromParent()的使用方法
  • 为Android应用增加渠道信息 自动化不同渠道的打包过程的使用详解
  • 基于C++自动化编译工具的使用详解
  • 自动化收集SQLSERVER诊断信息的工具选择及使用介绍
  • Python自动化测试工具Splinter简介和使用实例
  • 集群运维自动化工具ansible使用playbook安装mysql
  • Android笔记之:App自动化之使用Ant编译项目多渠道打包的使用详解
  • 集群运维自动化工具ansible的安装与使用(包括模块与playbook使用)第1/2页
  • 集群运维自动化工具ansible之使用playbook安装zabbix客户端
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • c/c++预处理命令预#,##使用介绍
  • asp程序使用的access在Linux下如何使用!
  • 在div中使用css让文字底部对齐的方法
  • 新装的Linux使用root用户不能使用FTP?
  • Python namedtuple(命名元组)使用实例
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3