使用shell生成orabbix自动化配置脚本

在使用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

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

时间: 2024-09-22 03:30:28

使用shell生成orabbix自动化配置脚本的相关文章

自动生成linux网卡配置脚本分享_linux shell

补充:这是对于第一次添加的网卡有效,如果需要重复添加和删除后自动配置,需要更改脚本,改为根据ip a命令的信息来修改. 复制代码 代码如下: #!/bin/bash#update:2013-02-25#author:ihuotui#version 0.1 cdate=$(date '+%Y%m%d')num=$(ifconfig -a | grep eth | wc -l)echo "ethX=" $num >> ethX for ((n=1;n<${num};n++

linux 利用shell生成xml站点地图脚本

一些以静态页面为主的站点,可能不方便的没有生成sitemap .而为了加快seo/seo.html" target="_blank">搜索引擎的收录,最好能主动做好sitemap,通过站长工具提交或写入robots文件,这样能加快百度.google等的收录. 下面以百度sitmap为例, 通过shell实现的代码如下:  代码如下 复制代码 cd /data/www find . -name *.htm > site.txt sed -i 's/.//http:/

使用Shell自动化管理脚本清理Nginx的proxy_cache缓存

Nginx的Web缓存服务主要由proxy_cache相关指令集和fastcgi_cache相关指令集构成,前者用于反向代理时,对后端内容源服务器进行缓存,后者主要用于对FastCGI的动态程序进行缓存.两者的功能基本上一样. 在功能上,Nginx已经具备Squid所拥有的Web缓存加速功能.清除指定URL缓存的功能.而在性能上,Nginx对多核CPU的利用,胜过Squid不少.另外,在反向代理.http://www.aliyun.com/zixun/aggregation/13996.html

脚本-求推荐几个linux系统自动化配置的软件或系统

问题描述 求推荐几个linux系统自动化配置的软件或系统 求推荐几个linux系统自动化配置的软件或系统,就是利用这样的软件可以,进行一些linux系统的自动配置,而不用再去手动配置,最好软件中可根据需求添加自己写的脚本???有这样的软件或系统吗?求推荐几个. 解决方案 系统部署 一.Kickstart 主要针对Redhat和CentOS操作系统的安装和初始配置,不过网络的配置仍然需要一台一台地进行. 二.Cobbler 与Kickstart类似,主要支持的也是Redhat和CentOS,不过它

巧用shell生成数据库检查脚本

在生产环境中需要部署大量的数据变更.对于新增的表,需要注意权限和同义词等.但是手动去检查这些变更是否生效就很麻烦.而且也不易维护,比如写好了一个脚本,可能在过一段时间,有一些紧急变更,需要把这些变更加进来,可能就忘了更新检查脚本. 考虑到检查的性能,不想查询数据,只需要保证能够正常访问表即可.所以写了如下的sql.目标就是通过shell来生成这样的sql脚本. 比如对于表TEST,检查是否可以访问,如果可以访问,就显示表TEST is accessible... SELECT decode (c

Linux集群和自动化维2.6.5 自动化类脚本

2.6.5 自动化类脚本 1.批量生成账户脚本 在内网开发环境中,有时需要为开发组的同事批量生成账户,如果手动添加的话会非常麻烦,这时可以写一段Shell脚本来自动完成这项工作.在首次登录时密码均是统一的,在移交给开发人员使用时让他们自行更改即可,脚本代码如下(此脚本在CentOS 5.8 / 6.4 x86_64下均已测试通过): #!/bin/bash #此脚本应用于开发环境下批量生成用户 for name in tom jerry joe jane yhc brain do       u

PHP网站自动化配置的实现方法(必看)

一直都在用yii2做项目,有在用自动化配置,但是没有自己去配置过.中午没事去看了下yii的初始化代码,发现都是php而已! yii2 初始化项目代码 所以,我们做项目肯定是可以用php做的,于是我新建了个文件夹,名为autoConfig,里面创建了个init,里面写了如下代码: if(!file_exists('./uploads/')){ if(!mkdir('./uploads/')){ echo 'fail to make ./uploads/ file!'; }else{ echo 'm

运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://dgd2010.blog.51cto.com/1539422/1674188 运维经验分享作为一个专题,目前共7篇文章 <运维经验分享(一)-- Linux Shell之ChatterServer服务控制脚本> <运维经验分享(二)-- Linux Shell之ChatterServer服务控制脚本二次优化> <运维经验分享(三)-- 解决Ubuntu下cro

使用阿里云ECS自动化配置框架对实例的管理员账号进行自定义

1. 实例自动化配置框架 实例自动化配置框架是阿里云ECS为用户提供的一种自定义实例启动行为的架构,详细信息请参考阿里云线上帮助文档:https://help.aliyun.com/knowledge_detail/49121.html   本文档主要介绍怎么通过该框架在创建实例时让用户自己定义实例的管理员用户的方法. 2. 场景 用户想要在阿里云ECS购买时中达到如下的效果: 1) 不使用ECS默认自带的root用户作为管理员(具体用户可在脚本中进行禁止远程登录) 2) 创建一个新的管理员用户