CN113778795A - 一种基于Python语言的跨版本Oracle监控系统 - Google Patents

一种基于Python语言的跨版本Oracle监控系统 Download PDF

Info

Publication number
CN113778795A
CN113778795A CN202110988080.6A CN202110988080A CN113778795A CN 113778795 A CN113778795 A CN 113778795A CN 202110988080 A CN202110988080 A CN 202110988080A CN 113778795 A CN113778795 A CN 113778795A
Authority
CN
China
Prior art keywords
monitor
server
information
database
interface
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202110988080.6A
Other languages
English (en)
Inventor
易志平
徐进阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Wanpeng Education Science And Technology Stock Co ltd
Original Assignee
Zhejiang Wanpeng Education Science And Technology Stock Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang Wanpeng Education Science And Technology Stock Co ltd filed Critical Zhejiang Wanpeng Education Science And Technology Stock Co ltd
Priority to CN202110988080.6A priority Critical patent/CN113778795A/zh
Publication of CN113778795A publication Critical patent/CN113778795A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/302Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3051Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/252Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application

Abstract

本发明公开了一种基于Python语言的跨版本Oracle监控系统。本发明包括Monitor Host、Monitor proxy、nginx、Monitor Server和Monitor Browse。Monitor Host负责在数据库服务器上收集监控信息;Monitor proxy负责将监控信息转发;Nginx负责将Monitor Server内网ip、端口映射到外网,同时将Monitor proxy转发的信息发送到Monitor Server定义的接口;Monitor Server负责将nginx转发过来的信息存储到数据库,同时负责响应Monitor Browse的查询请求;Monitor Browse提供监控信息查询功能。本发明在数据库运维实践中正式上线,有效地提高了监控信息获取的及时性、准确性、全面性,同时明显减轻运维人员的工作负荷。

Description

一种基于Python语言的跨版本Oracle监控系统
技术领域
本发明属于数据库自动化运维系统的一部分,适用于多版本Oracle数据库的监控,主要功能:数据库性能、表空间、用户信息、备份等信息的自动收集、展示,告警信息自动邮件告警。
背景技术
Oracle数据库系统(以下称“数据库”)是本公司众多应用系统的关键后台服务,数据库是否存活、性能的波动直接影响到数量庞大的前台用户的使用。
随着业务的发展,应用的架构逐渐复杂,规模越来越庞大,应用系统须要提供7*24服务。相应的数据库的节点、架构也越来越多,目前已经达到上百个节点,数据库版本也不尽相同。数据库运行在idc机房、用户自建机房、云端等多种环境。数据库因为硬件、网络、应用等原因造成的故障也越来越多。
为了保证良好的用户体验,公司对数据库基本要求:稳定和高效,防患于未然。
这对数据库的运维提出了更高的要求,需要每天多次巡检。传统人工巡检一般是登录到数据库服务器执行脚本,在对数据库稳定性越来越高要求,越来越多节点情况下已经无法满足要求,人工巡检主要问题如下:
(1)效率低
人工登录到数据库服务器运行监控脚本或者在数据库服务器上定时执行监控脚本在节点达到上百个的时候需要很长时间,通有时甚至问题都发生了,数据库服务器尚未巡检完成。重复性的机械操作也容易造成运维人员的疲劳,出错。
(2)信息无法存档
人工巡检收集到的文本信息要么存放到数据库服务器上,要么发送的运维人员邮箱,无法长时间大量存档,信息之间是孤立的,很难整理做到纵向和横向对比。
(3)无法宏观把控
人工巡检收集到的文本信息信息之间是孤立的,通常是收集完了很难从宏观上确定数据库运行的整体状况。
发明内容
本发明的目标是克服传统人工的弊端实现自动巡检,满足公司对数据库的要求:稳定和高效,防患于未然。提供一种基于Python语言的跨版本Oracle监控系统。
本发明解决其技术问题所采用的技术方案如下:
本发明包括Monitor Host、Monitor proxy、nginx、Monitor Server和MonitorBrowse五个部分,具体如下:
Monitor Host负责在数据库服务器上收集监控信息;
Monitor proxy负责将监控信息转发
Nginx负责将Monitor Server内网ip、端口映射到外网,同时将Monitor proxy转发的信息发送到Monitor Server定义的接口;
Monitor Server负责将nginx转发过来的信息存储到数据库,同时负责响应Monitor Browse的查询请求;
Monitor Browse提供监控信息查询功能。
进一步,所述的Monitor Host具体实现如下:
1-1配置文件
主要是标识各数据库服务器的连接信息、监控的具体行为参数;
1-1-1:服务器连接信息:
IP:数据库服务器的ip地址;
SERVICE_NAME:数据库Service_name;
SYSTEM_PASSWORD:system用户密码;
REGION=服务器所在机房标识;
1-1-2:关键标识:
DB_VERSION:数据库版本标识;
1-1-3:主要目录:
DATA_DIR:数据库数据目录;
APP_DIR:数据库程序目录;
SHELL_WORK_DIR:功能脚本运行目录;
DUMP_BACKUP_DIR:数据库逻辑备份目录;
RMAN_BACKUP_DIR:数据库rman备份目录;
1-1-4:信息收集频率
GET_TABLESPACE_INTERVAL:数据库表空间收集频率;
GET_OS_INTERVAL:数据库操作系统收集频率;
GET_BACKUP_INTERVAL:备份信息收集频率;
GET_DB_INTERVAL:数据库动态信息收集频率;
GET_ERROR_INTERVAL:数据库告警收集频率;
1-1-5:Monitor Proxy转发ip和端口
IF_PROXIES:信息是否需要转发;
PROXIES:Monitor Proxy程序所在ip和端口;
MONITOR_SERVER_URL:IF_PROXIES=1时监控系统转发接口ip和端口;
1-2:Monitor Host的class(类)和method(方法)
1-2-1class username_monitor
架构图Username部分:监控每个用户的连接数、所属的profile和过期时间;
Method get_username主要指标如下:
Username:用户名称;
Account_status:用户状态;
Connections:每用户连接数;
Profile:用户所属profile;
Expiry_date:用户过期日期;
Grace_day:锁定宽限天数;
Lock_date:锁定日期;
Method Interface:定义信息发送的接口,主要信息:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
1-2-2:Class Server_Monitor
架构图os部分:获取操作系统指标的主要method:
get_disk:获取数据库服务器上配置文件中DATA_DIR APP_DIR所在磁盘的空间利用率、读写io字节数;
get_cpu:获取数据库服务器cpu利用率;
get_mem:获取数据库服务器内存使用率;
get_io:获取数据库服务器网卡输入输出字节数;
Method Interface:定义信息发送的接口,接口主要属性Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
1-2-3:Class Oracle_Monitor
架构图DB部分:数据库动态性能主要class和method:
指标通过运行sql语句获得,数据库的版本根据配置文件中DB_VERSION指定;
Method:get_db_status主要指标;
Commits_count:事务提交数;
Rollbacks_count:事务回滚数;
Physical_read_count:物理读数;
Physical_write_count:物理写数;
Db_block_change_count:数据块修改数;
Qps:每秒qps数;
TPS:每秒tqs数;
Session_count:用户数连接;
Session_active_count:活跃用户连接数;
Sga:sga大小;
Method Interface:定义信息发送的接口,主要属性:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名)
1-2-4class:tablespace_monitor
架构图Tablespace部分:监控表空间的使用情况,防止出现硬盘空间耗尽和表空间数据库文件耗尽;
Method get_tablespace主要指标如下:
Tablespace_name:表空间名称;
Contents:表空间类型;
file_name:数据库文件;
extent_management:段管理类型;
segment_space_management:段空间扩展类型;
Status:表空间状态;
tbs_file_total_m:数据文件大小上限;
tbs_file_used_m:数据文件实际使用大小;
file_used_pct:数据文件使用率;
Method Interface:定义信息发送的接口,主要属性:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名)
1-2-5class alter_log_monitor
架构图alert_log部分:收集告警日志;
Method get_alter_log主要指标:
Alert_log:告警内容;
Alter_log_date:告警日期;
Method Interface:定义信息发送的接口,主要信息:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
1-2-6class backup_monitor
架构图backup部分:收集rman备份和expdp部分信息;Method get_backup主要指标如下:
Type:备份类型;
Status:备份状态;
Backup_name:备份文件路径;
Backup_size:备份大小;
Disk_usage:备份盘使用率;
Backup_complete:备份完成时间;
Error:错误信息;
Method Interface:定义信息发送的接口,主要信息:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名)。
进一步,所述的于Monitor Proxy具体实现如下:
2-1:监控信息转发
Monitor host部署的数据库服务器分布在各种环境的内网中,Monitor server是一个统一的接口,两者无法直接通讯,实际业务中Monitor server又要接收Monitor host的监控信息;
Monitor Proxy负责将Monitor Host收集的信息转发到Monitor Server接口统一入口,即步骤(1)参数文件MONITOR_SERVER_URL指定的接口;
2-2:Monitor Proxy method
利用python twisted将Monitor host中生成的报文通过http的方式转发到步骤(1)接口指定地址;
Method定义服务所在机器的ip和端口,Monitor Host能访问到即可,对应配置文件中Monitor host的PROXIES参数。
进一步,所述的nginx具体实现如下:
nginx发挥了HTTP和反向代理作用,具体如下:
反向代理:将Monitor Server服务映射到外网地址,提供Monitor Proxy转发送信息入口;
http服务:将接收到的Monitor Proxy转发送信息发送到Monitor Server指定接口,即步骤(1)参数文件MONITOR_SERVER_URL的指定接口。
进一步,所述的Monitor Server具体实现如下:
Monitor Server是基于python Flask架构的web应用,主要功能是将经过MonitorHost、Monitor proxy、nginx生成的报文存入MySQL数据库;相应查询需求,返回查询信息;
4-1数据存储
Monitor Host生成了os、db、alter_log、username、tablespace、backup共6方面的信息,在Monitor Server对应的有6个方法来解析Monitor Host端传过来的报文,存储到MySQL数据库;相关class和Method的逻辑一样的,其中username报文具体实现如下:
4-1-1:method monitor_username_save
解析nginx转发的Moniror_host报文,根据监控指标生成sql语句:insert_username.sql;
4-1-2:method execute_sql
引用pythonpymysql,接收上文insert_username.sql,连接MySQL数据库执行SQL语句,将os监控数据存入数据库;
4-1-3:send_mail
引用python email.utils,在monitor_serverdata相关指标超过阈值时给运维人员发告警邮件。
进一步,所述的Monitor Browse具体实现如下:
Monitor Browse用于响应查询请求,通过html页面展示;Monitor Hos中收集了6个方面的监控信息,前台查询和展示都和这6方面监控信息有关;同时为了能在全局层面掌握监控信息,将这6个方面信息指定部分汇总生成汇总信息数据仪表盘:db_dash_board;
5-1method server_monitor_data_list
将查询请求转换为sql语句中的select语句:server_monitor_data_list,字段范围在步骤(1)中os收集的监控信息范围内;
5-2method execute_sql
引用python pymysql,接收上文server_monitor_data_list.sql,连接MySQL数据库执行SQL语句,查询结果返回到前端html页面。
本发明有益效果如下:
本发明Oracle数据库运维实践中已经正式上线,多数时候运维人员通过查看db_dash_board和告警邮件就能准确把握数据库的运行情况,有效地提高了监控信息获取的及时性、准确性、全面性。相比人工运维,信息更及时准确,有效地降低了运维人员重复性工作负荷,实现了公司对数据库运维的要求。
附图说明
图1本发明架构展示示意图;
图2本发明db_dash_board展示示意图;
图3本发明os监控展示示意图;
图4本发明db监控展示示意图;
图5本发明alter_log监控展示示意图;
图6本发明username监控展示示意图;
图7本发明tablespace监控展示示意图;
图8本发明backup监控展示示意图;
图9为本发明样例显示示意图;
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
如图1所示,本发明包括Monitor Host、Monitor proxy、nginx、Monitor Server、Monitor Browse共6个部分。
Monitor Host负责在数据库服务器上收集监控信息。
Monitor proxy负责将监控信息转发
Nginx负责将Monitor Server内网ip、端口映射到外网,同时将Monitor proxy转发的信息发送到Monitor Server定义的接口。
Monitor Server负责将nginx转发过来的信息,存储的数据库,同时负责响应Monitor Browse的查询请求。
Monitor Browse提供监控信息查询功能。
本发明在数据库运维实践中正式上线,有效地提高了监控信息获取的及时性、准确性、全面性,同时明显减轻运维人员的工作负荷。
本发明架构包括Monitor Host、Monitor proxy、nginx、Monitor Server、MonitorBrowse五个部分,具体如下:
步骤(1).Monitor Host端
Monitor Host端是运行的各个被监控的数据库服务器操作系统的Python程序。
主要模块和功能如下:
1-1配置文件
主要是标识各数据库服务器的连接信息、监控的具体行为参数。
1-1-1:服务器连接信息:
IP:数据库服务器的ip地址;
SERVICE_NAME:数据库Service_name;
SYSTEM_PASSWORD:system用户密码;
REGION=服务器所在机房标识;
1-1-2:关键标识:
DB_VERSION:数据库版本标识;
1-1-3:主要目录:
DATA_DIR:数据库数据目录;
APP_DIR:数据库程序目录;
SHELL_WORK_DIR:功能脚本运行目录;
DUMP_BACKUP_DIR:数据库逻辑备份目录;
RMAN_BACKUP_DIR:数据库rman备份目录;
1-1-4:信息收集频率(单位秒)
GET_TABLESPACE_INTERVAL:数据库表空间收集频率;
GET_OS_INTERVAL:数据库操作系统收集频率;
GET_BACKUP_INTERVAL:备份信息收集频率;
GET_DB_INTERVAL:数据库动态信息收集频率;
GET_ERROR_INTERVAL:数据库告警收集频率;
1-1-5:Monitor Proxy转发ip和端口
IF_PROXIES:信息是否需要转发;
PROXIES:Monitor Proxy程序所在ip和端口;
MONITOR_SERVER_URL:IF_PROXIES=1时监控系统转发接口ip和端口;
1-2:Monitor Host的class(类)和method(方法)
1-2-1class username_monitor
架构图Username部分:监控每个用户的连接数,所属的profile,过期时间。
Method get_username主要指标如下:
Username:用户名称;
Account_status:用户状态;
Connections:每用户连接数;
Profile:用户所属profile;
Expiry_date:用户过期日期;
Grace_day:锁定宽限天数;
Lock_date:锁定日期;
Method Interface:定义信息发送的接口,主要信息:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
报文格式:这里仅以username_monitor报文格式来说明,其他指标报文格式同理。
['APPSTORE','176','DEFAULT','OPEN','2049-12-31 23:59:59','7'],
['PASSPORT','50','DEFAULT','OPEN','2049-12-31 23:59:59','7'],
['ESS','6','DEFAULT','OPEN','2049-12-3123:59:59','7'],
['SYSTEM','1','DEFAULT','OPEN','2049-12-31 23:59:59','7'],
['BASE',”,'DEFAULT','EXPIRED(GRACE)','2021-07-27 15:14:25','7'],
['ZUOYE',”,'DEFAULT','EXPIRED(GRACE)','2021-07-28 14:25:27','7'],
['SYS',”,'DEFAULT','OPEN','2049-12-31 23:59:59','7'],['192.168.1.122','微课主122','2021-08-16 15:14:10']。
1-2-2:Class Server_Monitor
架构图os部分:获取操作系统指标的主要method:
get_disk:获取数据库服务器上配置文件中DATA_DIR APP_DIR所在磁盘的空间利用率、读写io字节数。
get_cpu:获取数据库服务器cpu利用率;
get_mem:获取数据库服务器内存使用率;
get_io:获取数据库服务器网卡输入输出字节数;
Method Interface:定义信息发送的接口,接口主要属性Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
1-2-3:Class Oracle_Monitor
架构图DB部分:数据库动态性能主要class和method:
指标通过运行sql语句获得,目前数据库版本主要分为以9i、10g、11g为代表的的单db版本和12c、18c、19c为代表的Pluggable Database(可插拔数据库)的多db版本。本发明中多db版本脚本运行在Pluggable Database数据库下,具体脚本有所不同。数据库的版本根据配置文件中DB_VERSION指定。
Method:get_db_status主要指标;
Commits_count:事务提交数;
Rollbacks_count:事务回滚数;
Physical_read_count:物理读数;
Physical_write_count:物理写数;
Db_block_change_count:数据块修改数;
Qps:每秒qps数;
TPS:每秒tqs数;
Session_count:用户数连接;
Session_active_count:活跃用户连接数;
Sga:sga大小;
Method Interface:定义信息发送的接口,主要属性:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名)
1-2-4class:tablespace_monitor
架构图Tablespace部分:监控表空间的使用情况,防止出现硬盘空间耗尽和表空间数据库文件耗尽。
Method get_tablespace主要指标如下:
Tablespace_name:表空间名称;
Contents:表空间类型;
file_name:数据库文件;
extent_management:段管理类型;
segment_space_management:段空间扩展类型;
Status:表空间状态;
tbs_file_total_m:数据文件大小上限;
tbs_file_used_m:数据文件实际使用大小;
file_used_pct:数据文件使用率;
Method Interface:定义信息发送的接口,主要属性:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名)
1-2-5class alter_log_monitor
架构图alert_log部分:收集告警日志。
Method get_alter_log主要指标:
Alert_log:告警内容;
Alter_log_date:告警日期;
Method Interface:定义信息发送的接口,主要信息:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
1-2-6class backup_monitor
架构图backup部分:收集rman备份和expdp部分信息。Method get_backup主要指标如下:
Type:备份类型;
Status:备份状态;
Backup_name:备份文件路径;
Backup_size:备份大小;
Disk_usage:备份盘使用率;
Backup_complete:备份完成时间;
Error:错误信息;
Method Interface:定义信息发送的接口,主要信息:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
步骤(2).Monitor Proxy
2-1:监控信息转发
Monitor host端部署的数据库服务器分布在各种环境的内网中,Monitor server是一个统一的接口,两者无法直接通讯,实际业务中Monitor server又要接收Monitorhost的监控信息。
需求的实现是通过在各应用所在环境中找一台可以外网通讯的堡垒机,这个堡垒机和数据库服务器可以通讯,这个堡垒机部署Monitor Proxy程序,称为Monitor Proxy端。Monitor Proxy负责将Monitor Host收集的信息转发到Monitor Server接口统一入口(步骤(1)参数文件MONITOR_SERVER_URL指定)。
2-2:Monitor Proxy method
利用python twisted模块实现将步骤(1)中生成的报文通过http的方式转发到步骤(1)接口指定地址。
Method定义服务所在机器的ip和端口,Monitor Host能访问到即可,对应配置文件中步骤(1)中PROXIES参数。
步骤(3).nginx
3-1nginx的作用
本发明中nginx发挥了HTTP和反向代理作用。
反向代理:将Monitor Server服务映射到外网地址,提供Monitor Proxy转发送信息入口;
http服务:将接收到的Monitor Proxy转发送信息发送到Monitor Server具体接口(由步骤(1)参数文件MONITOR_SERVER_URL指定)
步骤(4)Monitor Server
Monitor Server是基于python Flask架构的web应用,主要功能是将经过步骤(1)、步骤(2)、步骤(3)生成的报文存入MySQL数据库;相应查询需求,返回查询信息。
4-1数据存储
步骤(1)中生成了os、db、alter_log、username、tablespace、backup共6方面的信息,分别对应图3、图4、图5、图6、图7和图8。在Monitor Server端对应的有6个方法来解析Monitor Host端传过来的报文,存储到MySQL数据库。相关class和Method的逻辑是一样的,以下用username报文来说明:
4-1-1:method monitor_username_save
解析步骤(3)转发的Moniror_host端报文,根据监控指标生成sql语句:insert_username.sql,样例如下:
insert intooracle_username(ip,region,create_time,receive_time,username,connections,profile,account_status,expiry_date,p_limit)values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)';样例显示如图9所示。
4-1-2:method execute_sql
引用python pymysql模块,接收上文insert_username.sql,连接MySQL数据库执行SQL语句,将os监控数据存入数据库。
4-1-3:send_mail
引用python email.utils模块,在monitor_serverdata相关指标超过阈值时给运维人员发告警邮件,比如account_status=’expire’的时候给运维人员发告警邮件。
步骤(5)Monitor Browse
该模块用于响应查询请求,通过html页面展示。步骤(1)中收集了6个方面的监控信息,前台查询和展示都和这6方面监控信息有关。同时为了能在全局层面掌握监控信息,还特别将这6个方面信息最重要的部分汇总生成汇总信息数据仪表盘:db_dash_board,如图2所示。相关class和method实现逻辑是一样的,下面仅以monitor_serverdata相关信息来说明。
5-1method server_monitor_data_list
将查询请求转换为sql语句中的select语句:server_monitor_data_list,字段范围在步骤(1)中os收集的监控信息范围内。
5-2method execute_sql
引用pythonpymysql模块,接收上文server_monitor_data_list.sql,连接MySQL数据库执行SQL语句,查询结果返回到前端html页面。

Claims (6)

1.一种基于Python语言的跨版本Oracle监控系统,其特征在于包括Monitor Host、Monitor proxy、nginx、Monitor Server和Monitor Browse五个部分,具体如下:
Monitor Host负责在数据库服务器上收集监控信息;
Monitor proxy负责将监控信息转发
Nginx负责将Monitor Server内网ip、端口映射到外网,同时将Monitor proxy转发的信息发送到Monitor Server定义的接口;
Monitor Server负责将nginx转发过来的信息存储到数据库,同时负责响应MonitorBrowse的查询请求;
Monitor Browse提供监控信息查询功能。
2.根据权利要求1所述的一种基于Python语言的跨版本Oracle监控系统,其特征在于Monitor Host具体实现如下:
1-1配置文件
主要是标识各数据库服务器的连接信息、监控的具体行为参数;
1-1-1:服务器连接信息:
IP:数据库服务器的ip地址;
SERVICE_NAME:数据库Service_name;
SYSTEM_PASSWORD:system用户密码;
REGION=服务器所在机房标识;
1-1-2:关键标识:
DB_VERSION:数据库版本标识;
1-1-3:主要目录:
DATA_DIR:数据库数据目录;
APP_DIR:数据库程序目录;
SHELL_WORK_DIR:功能脚本运行目录;
DUMP_BACKUP_DIR:数据库逻辑备份目录;
RMAN_BACKUP_DIR:数据库rman备份目录;
1-1-4:信息收集频率
GET_TABLESPACE_INTERVAL:数据库表空间收集频率;
GET_OS_INTERVAL:数据库操作系统收集频率;
GET_BACKUP_INTERVAL:备份信息收集频率;
GET_DB_INTERVAL:数据库动态信息收集频率;
GET_ERROR_INTERVAL:数据库告警收集频率;
1-1-5:Monitor Proxy转发ip和端口
IF_PROXIES:信息是否需要转发;
PROXIES:Monitor Proxy程序所在ip和端口;
MONITOR_SERVER_URL:IF_PROXIES=1时监控系统转发接口ip和端口;
1-2:Monitor Host的class(类)和method(方法)
1-2-1class username_monitor
架构图Username部分:监控每个用户的连接数、所属的profile和过期时间;
Method get_username主要指标如下:
Username:用户名称;
Account_status:用户状态;
Connections:每用户连接数;
Profile:用户所属profile;
Expiry_date:用户过期日期;
Grace_day:锁定宽限天数;
Lock_date:锁定日期;
Method Interface:定义信息发送的接口,主要信息:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
1-2-2:Class Server_Monitor
架构图os部分:获取操作系统指标的主要method:
get_disk:获取数据库服务器上配置文件中DATA_DIR APP_DIR所在磁盘的空间利用率、读写io字节数;
get_cpu:获取数据库服务器cpu利用率;
get_mem:获取数据库服务器内存使用率;
get_io:获取数据库服务器网卡输入输出字节数;
Method Interface:定义信息发送的接口,接口主要属性Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
1-2-3:Class Oracle_Monitor
架构图DB部分:数据库动态性能主要class和method:
指标通过运行sql语句获得,数据库的版本根据配置文件中DB_VERSION指定;
Method:get_db_status主要指标;
Commits_count:事务提交数;
Rollbacks_count:事务回滚数;
Physical_read_count:物理读数;
Physical_write_count:物理写数;
Db_block_change_count:数据块修改数;
Qps:每秒qps数;
TPS:每秒tqs数;
Session_count:用户数连接;
Session_active_count:活跃用户连接数;
Sga:sga大小;
Method Interface:定义信息发送的接口,主要属性:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名)
1-2-4class:tablespace_monitor
架构图Tablespace部分:监控表空间的使用情况,防止出现硬盘空间耗尽和表空间数据库文件耗尽;
Method get_tablespace主要指标如下:
Tablespace_name:表空间名称;
Contents:表空间类型;
file_name:数据库文件;
extent_management:段管理类型;
segment_space_management:段空间扩展类型;
Status:表空间状态;
tbs_file_total_m:数据文件大小上限;
tbs_file_used_m:数据文件实际使用大小;
file_used_pct:数据文件使用率;
Method Interface:定义信息发送的接口,主要属性:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名)
1-2-5class alter_log_monitor
架构图alert_log部分:收集告警日志;
Method get_alter_log主要指标:
Alert_log:告警内容;
Alter_log_date:告警日期;
Method Interface:定义信息发送的接口,主要信息:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名);
1-2-6class backup_monitor
架构图backup部分:收集rman备份和expdp部分信息;Method get_backup主要指标如下:
Type:备份类型;
Status:备份状态;
Backup_name:备份文件路径;
Backup_size:备份大小;
Disk_usage:备份盘使用率;
Backup_complete:备份完成时间;
Error:错误信息;
Method Interface:定义信息发送的接口,主要信息:
Interface_url:报文接收接口地址(MONITOR_SERVER_URL+接收方法名)。
3.根据权利要求1或2所述的一种基于Python语言的跨版本Oracle监控系统,其特征在于Monitor Proxy具体实现如下:
2-1:监控信息转发
Monitor host部署的数据库服务器分布在各种环境的内网中,Monitor server是一个统一的接口,两者无法直接通讯,实际业务中Monitor server又要接收Monitor host的监控信息;
Monitor Proxy负责将Monitor Host收集的信息转发到Monitor Server接口统一入口,即步骤(1)参数文件MONITOR_SERVER_URL指定的接口;
2-2:Monitor Proxy method
利用python twisted将Monitor host中生成的报文通过http的方式转发到步骤(1)接口指定地址;
Method定义服务所在机器的ip和端口,Monitor Host能访问到即可,对应配置文件中Monitor host的PROXIES参数。
4.根据权利要求3所述的一种基于Python语言的跨版本Oracle监控系统,其特征在于nginx具体实现如下:
nginx发挥了HTTP和反向代理作用,具体如下:
反向代理:将Monitor Server服务映射到外网地址,提供Monitor Proxy转发送信息入口;
http服务:将接收到的Monitor Proxy转发送信息发送到Monitor Server指定接口,即步骤(1)参数文件MONITOR_SERVER_URL的指定接口。
5.根据权利要求4所述的一种基于Python语言的跨版本Oracle监控系统,其特征在于Monitor Server具体实现如下:
Monitor Server是基于python Flask架构的web应用,主要功能是将经过MonitorHost、Monitor proxy、nginx生成的报文存入MySQL数据库;相应查询需求,返回查询信息;
4-1数据存储
Monitor Host生成了os、db、alter_log、username、tablespace、backup共6方面的信息,在Monitor Server对应的有6个方法来解析Monitor Host端传过来的报文,存储到MySQL数据库;相关class和Method的逻辑一样的,其中username报文具体实现如下:
4-1-1:method monitor_username_save
解析nginx转发的Moniror_host报文,根据监控指标生成sql语句:insert_username.sql;
4-1-2:method execute_sql
引用pythonpymysql,接收上文insert_username.sql,连接MySQL数据库执行SQL语句,将os监控数据存入数据库;
4-1-3:send_mail
引用python email.utils,在monitor_serverdata相关指标超过阈值时给运维人员发告警邮件。
6.根据权利要求5所述的一种基于Python语言的跨版本Oracle监控系统,其特征在于Monitor Browse具体实现如下:
Monitor Browse用于响应查询请求,通过html页面展示;Monitor Hos中收集了6个方面的监控信息,前台查询和展示都和这6方面监控信息有关;同时为了能在全局层面掌握监控信息,将这6个方面信息指定部分汇总生成汇总信息数据仪表盘:db_dash_board;
5-1method server_monitor_data_list
将查询请求转换为sql语句中的select语句:server_monitor_data_list,字段范围在步骤(1)中os收集的监控信息范围内;
5-2method execute_sql
引用python pymysql,接收上文server_monitor_data_list.sql,连接MySQL数据库执行SQL语句,查询结果返回到前端html页面。
CN202110988080.6A 2021-08-26 2021-08-26 一种基于Python语言的跨版本Oracle监控系统 Pending CN113778795A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110988080.6A CN113778795A (zh) 2021-08-26 2021-08-26 一种基于Python语言的跨版本Oracle监控系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110988080.6A CN113778795A (zh) 2021-08-26 2021-08-26 一种基于Python语言的跨版本Oracle监控系统

Publications (1)

Publication Number Publication Date
CN113778795A true CN113778795A (zh) 2021-12-10

Family

ID=78839447

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110988080.6A Pending CN113778795A (zh) 2021-08-26 2021-08-26 一种基于Python语言的跨版本Oracle监控系统

Country Status (1)

Country Link
CN (1) CN113778795A (zh)

Similar Documents

Publication Publication Date Title
CN111581054B (zh) 一种基于elk的日志埋点的业务分析告警系统及方法
WO2019099558A1 (en) Cardinality of time series
US8635594B1 (en) Script language for storage management operations
US8230384B1 (en) Techniques for generating and processing a schema instance
CN111125260A (zh) 一种基于SQL Server的数据同步方法及系统
CN111881011A (zh) 日志管理方法、平台、服务器及存储介质
CN113360519B (zh) 数据处理方法、装置、设备和存储介质
CN107404417A (zh) 一种监控数据的处理方法、处理装置及处理系统
JP6633642B2 (ja) 分散データベースにおけるデータブロックを処理する方法およびデバイス
CN107423452A (zh) 一种电网异构数据库同步复制迁移方法
CN104468274A (zh) 一种集群监控管理方法及系统
CN114356921A (zh) 数据处理方法、装置、服务器及存储介质
CN111061802B (zh) 一种电力数据管理处理方法、装置及存储介质
CN110717130B (zh) 打点方法、装置、终端及存储介质
CN111241144B (zh) 一种数据处理方法和系统
KR100906440B1 (ko) 웹 어플리케이션 서버 트랜잭션과 데이터 베이스 관리시스템 세션의 연계를 통한 웹 어플리케이션 성능 모니터링장치 및 그 방법
CN111125226B (zh) 一种配置数据采集方法及装置
CN110309206B (zh) 订单信息采集方法及系统
CN112527620A (zh) 数据库性能分析方法及装置、电子设备、介质、产品
CN113076229A (zh) 一种通用的企业级信息技术监控系统
CN113778795A (zh) 一种基于Python语言的跨版本Oracle监控系统
CN113010208B (zh) 一种版本信息的生成方法、装置、设备及存储介质
US20210156401A1 (en) Vehicle with a Boom Comprising a Hydraulic Control Circuit with a Load Control Valve
CN115185778A (zh) 数据库的监控方法及装置
CN111752916B (zh) 数据采集方法及装置、计算机可读存储介质、电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination