设为首页 加入收藏

TOP

使用Shell生成Orabbix自动化配置脚本(一)
2015-11-10 12:16:33 来源: 作者: 【 】 浏览:0
Tags:使用 Shell 生成 Orabbix 自动化 配置 脚本

对于一个数据库实例配置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 DEFAUL

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇由drop datafile导致的Oracle bug 下一篇MySQL event实现定时建表小记

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: