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

简介: 在使用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

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

目录
相关文章
|
23天前
|
数据采集 监控 数据挖掘
Python自动化脚本:高效办公新助手###
本文将带你走进Python自动化脚本的奇妙世界,探索其在提升办公效率中的强大潜力。随着信息技术的飞速发展,重复性工作逐渐被自动化工具取代。Python作为一门简洁而强大的编程语言,凭借其丰富的库支持和易学易用的特点,成为编写自动化脚本的首选。无论是数据处理、文件管理还是网页爬虫,Python都能游刃有余地完成任务,极大地减轻了人工操作的负担。接下来,让我们一起领略Python自动化脚本的魅力,开启高效办公的新篇章。 ###
|
16天前
|
Android开发 开发者 Python
通过标签清理微信好友:Python自动化脚本解析
微信已成为日常生活中的重要社交工具,但随着使用时间增长,好友列表可能变得臃肿。本文介绍了一个基于 Python 的自动化脚本,利用 `uiautomator2` 库,通过模拟用户操作实现根据标签批量清理微信好友的功能。脚本包括环境准备、类定义、方法实现等部分,详细解析了如何通过标签筛选并删除好友,适合需要批量管理微信好友的用户。
24 7
|
14天前
|
运维 Kubernetes Devops
自动化运维:从脚本到工具的演进之旅
在数字化浪潮中,自动化运维成为提升效率、保障系统稳定的关键。本文将探索自动化运维的发展脉络,从基础的Shell脚本编写到复杂的自动化工具应用,揭示这一技术变革如何重塑IT运维领域。我们将通过实际案例,展示自动化运维在简化工作流程、提高响应速度和降低人为错误中的重要作用。无论你是初学者还是资深专家,这篇文章都将为你提供宝贵的洞见和实用的技巧。
|
22天前
|
SQL 测试技术 API
如何编写API接口的自动化测试脚本
本文详细介绍了编写API自动化测试脚本的方法和最佳实践,涵盖确定测试需求、选择测试框架、编写测试脚本(如使用Postman和Python Requests库)、参数化和数据驱动测试、断言和验证、集成CI/CD、生成测试报告及维护更新等内容,旨在帮助开发者构建高效可靠的API测试体系。
|
19天前
|
运维 Devops
自动化运维:从脚本到DevOps的进化之旅
在数字化时代,自动化运维不仅是提高生产效率的关键,更是企业竞争力的象征。本文将带领读者穿越自动化运维的发展历程,从最初的脚本编写到现代DevOps文化的形成,揭示这一演变如何重塑IT行业的工作模式。通过具体案例,我们将展示自动化工具和实践如何简化复杂任务,优化流程,并促进团队协作。你将发现,自动化运维不仅关乎技术的进步,更体现了人、流程和技术三者之间协同增效的深层逻辑。
|
21天前
|
监控 数据挖掘 数据安全/隐私保护
Python脚本:自动化下载视频的日志记录
Python脚本:自动化下载视频的日志记录
|
24天前
|
机器学习/深度学习 人工智能 运维
自动化运维之路:从脚本到工具的演进
在IT运维领域,效率和准确性是衡量工作成效的关键指标。随着技术的发展,自动化运维逐渐成为提升这两个指标的重要手段。本文将带领读者了解自动化运维的演变历程,从最初的简单脚本编写到现今复杂的自动化工具应用,展示如何通过技术提升运维效率。文章不仅介绍理论和实践案例,还提供了代码示例,帮助读者理解自动化运维的实际应用场景。
|
2月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
75 4
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
63 4
|
19天前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####