百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

Zabbix监控系统系列之十二:监控Oracle数据库

mhr18 2024-12-15 11:56 19 浏览 0 评论

Oracle数据库是我们经常运用的数据库之一,特别是在一些比较关键的核心业务场景。Zabbix可以通过多种不同的途径实现对数据库的监控,比如ODBC方式、Shell脚本方式、JDBC方式;

我比较常用是Orabbix工具,它是基于JDBC方式。它的模板已经实现如下监控:

DBVersion (and relative validity of package) => 数据库版本

Archive ( archive log production with relative trend) => 归档文件

EventWaits (monitor Files I/O,single block read, multiblock read, direct path read,SQLNet messages, Controlfile I/O,LogWrite) => 等待的事件

HitRatio (monitor Hit Ratio on Trigger, Tables/Procedures, SQLArea,Body) => 命中率

Logical I/O (monitor Logical I/O values of : Current Read, Consistent Read, Block Change) => 逻辑I/O

PGA > PGA运用情况

SGA (in particolar: Fixed Buffer, Java Pool, Large Pool, Log Buffer,Shared Pool,Buffer Cache) => SGA运用情况

Physical I/O (Redo Writes,Datafiles Writes,Datafiles Read) => 物理I/O

SharedPool (Pool Dictionary Cache, Pool Free Memory, Library Cache,Sql Area ,Misc.) => 共享池

Pin Hit Ratio (monitor Hit Ratio on Trigger, Tables/Procedures, SQLArea,Body)

Session/Processes (monitor Sessions and processes) => 进程与会话

Session (Active Session, Inactive Sessions, System Session) => 会话状态

在这里插入图片描述

[部署步骤]

1.JAVA组件部署

yum install java

2.Orabbix部署(当前最新版本是1.2.3)

mkdir /opt/orabbix

cp orabbix-1.2.3.zip /opt/orabbix/

cd /opt/orabbix/

unzip orabbix-1.2.3.zip

chmod -R a+x *

cp /opt/orabbix/conf/config.props.sample /opt/orabbix/conf/config.props

vi conf/config.props

---- 配置开始 ----

#comma separed list of Zabbix servers

ZabbixServerList=ZabbixServer1 # Zabbix服务器信息

ZabbixServer1.Address=127.0.0.1

ZabbixServer1.Port=10051

#pidFile

OrabbixDaemon.PidFile=./logs/orabbix.pid

#frequency of item's refresh

OrabbixDaemon.Sleep=300

#MaxThreadNumber should be >= than the number of your databases

OrabbixDaemon.MaxThreadNumber=100

#put here your databases in a comma separated list

DatabaseList=192.168.0.94 # Zabbix监控对象

#Configuration of Connection pool

#if not specified Orabbis is going to use default values (hardcoded)

#Maximum number of active connection inside pool

DatabaseList.MaxActive=10

#The maximum number of milliseconds that the pool will wait

#(when there are no available connections) for a connection to be returned

#before throwing an exception, or <= 0 to wait indefinitely.

DatabaseList.MaxWait=100

DatabaseList.MaxIdle=1

#define here your connection string for each database

192.168.0.94.Url=jdbc:oracle:thin:@192.168.0.94:1521:ORCL # Zabbix监控对象信息

192.168.0.94.User=ZABBIX

192.168.0.94.Password=ZABBIX

#Those values are optionals if not specified Orabbix is going to use the general values

192.168.0.94.MaxActive=10

192.168.0.94.MaxWait=100

192.168.0.94.MaxIdle=1

192.168.0.94.QueryListFile=./conf/query.props # 监控项的SQL语句记录在此文件

DB2.Url=jdbc:oracle:thin:@server2.domain.example.com:<LISTENER_PORT>:DB2

DB2.User=zabbix

DB2.Password=zabbix_password

DB2.QueryListFile=./conf/query.props

DB3.Url=jdbc:oracle:thin:@server3.domain.example.com:<LISTENER_PORT>:DB3

DB3.User=zabbix

DB3.Password=zabbix_password

DB3.QueryListFile=./conf/query.props

---- 配置结束 ----

3.Orabbix启动配置

cp /opt/orabbix/init.d/orabbix /etc/init.d/orabbix

/etc/init.d/orabbix start

chkconfig --level 345 orabbix on

chkconfig --add orabbix

4.待监控数据库创建用户与权限配置

CREATE USER ZABBIX IDENTIFIED BY ZABBIX DEFAULT TABLESPACE USERS TEMPORARY TABLESPACE TEMP PROFILE DEFAULT ACCOUNT UNLOCK;

GRANT ALTER SESSION TO ZABBIX;

GRANT CREATE SESSION TO ZABBIX;

GRANT CONNECT TO ZABBIX;

ALTER USER ZABBIX DEFAULT ROLE ALL;

GRANT SELECT ON V_$INSTANCE TO ZABBIX;

GRANT SELECT ON DBA_USERS TO ZABBIX;

GRANT SELECT ON V_$LOG_HISTORY TO ZABBIX;

GRANT SELECT ON V_$LOG TO ZABBIX;

GRANT SELECT ON V_$ARCHIVED_LOG TO ZABBIX;

GRANT SELECT ON V_$PARAMETER TO ZABBIX;

GRANT SELECT ON SYS.DBA_AUDIT_SESSION TO ZABBIX;

GRANT SELECT ON DBA_OBJECTS TO ZABBIX;

GRANT SELECT ON V_$LOCKED_OBJECT TO ZABBIX;

GRANT SELECT ON V_$LOCK TO ZABBIX;

GRANT SELECT ON DBA_REGISTRY TO ZABBIX;

GRANT SELECT ON V_$LIBRARYCACHE TO ZABBIX;

GRANT SELECT ON V_$SYSSTAT TO ZABBIX;

GRANT SELECT ON V_$PARAMETER TO ZABBIX;

GRANT SELECT ON V_$LATCH TO ZABBIX;

GRANT SELECT ON V_$PGASTAT TO ZABBIX;

GRANT SELECT ON V_$SGASTAT TO ZABBIX;

GRANT SELECT ON V_$LIBRARYCACHE TO ZABBIX;

GRANT SELECT ON V_$PROCESS TO ZABBIX;

GRANT SELECT ON V_$SESSION TO ZABBIX;

GRANT SELECT ON DBA_DATA_FILES TO ZABBIX;

GRANT SELECT ON DBA_TEMP_FILES TO ZABBIX;

GRANT SELECT ON DBA_FREE_SPACE TO ZABBIX;

GRANT SELECT ON DBA_TABLESPACES TO ZABBIX;

GRANT SELECT ON V_$SYSTEM_EVENT TO ZABBIX;

GRANT SELECT ON V_$TEMP_EXTENT_POOL TO ZABBIX;

※ Oracle 11g或以上版本,ACL访问控制列表调整

exec dbms_network_acl_admin.create_acl(acl => ‘resolve.xml’,description=> ‘resolve acl’, principal =>‘ZABBIX’, is_grant => true, privilege => ‘resolve’);

exec dbms_network_acl_admin.assign_acl(acl => ‘resolve.xml’, host =>’*’);

commit;

检查Orabbix日志

tailf /opt/orabbix/logs/orabbix.log

Zabbix 导入Orabbix模板

创建被监控数据库主机

8.监控参考

[常见问题]

1.配置完毕后,系统无法显示dbsize 与 dbfilesize值。

解决方案:

query.conf文件修改配置

QueryList=archive,audit,dbblockgets,dbconsistentgets,dbhitratio,dbphysicalread,dbversion,hitratio_body,hitratio_sqlarea,hitratio_table_proc,

lio_current_read,locks,maxprocs,maxsession,miss_latch,pga_aggregate_target, pga,phio_datafile_reads,phio_datafile_writes,phio_redo_writes,pinhitratio_body,pinhitratio_sqlarea,pinhitratio_table-proc,pinhitratio_trigger,

pool_dict_cache,pool_free_mem,pool_lib_cache,pool_misc,pool_sql_area,procnum,session_active,session_inactive,session,session_system,sga_buffer_cache,

sga_fixed,sga_java_pool,sga_large_pool,sga_log_buffer,sga_shared_pool,tbl_space,userconn,waits_controfileio,waits_directpath_read,

waits_file_io,waits_latch,waits_logwrite,waits_multiblock_read,waits_singleblock_read,hitratio_trigger,lio_block_changes,lio_consistent_read,waits_other,waits_sqlnet,users_locked,uptime,dbfilesize,dbsize

query.conf文件追加配置

dbfilesize.Query=select to_char(sum(bytes/1024/1024/10), ‘FM99999999999999990’) retvalue from dba_data_files

dbsize.Query=SELECT to_char(sum( NVL(a.bytes/1024/1024/10 - NVL(f.bytes/1024/1024/10, 0), 0)), ‘FM99999999999999990’) retvalue

FROM sys.dba_tablespaces d,

(select tablespace_name, sum(bytes) bytes from dba_data_files group by tablespace_name) a,

(select tablespace_name, sum(bytes) bytes from dba_free_space group by tablespace_name) f

WHERE d.tablespace_name = a.tablespace_name(+) AND d.tablespace_name = f.tablespace_name(+)

AND NOT (d.extent_management like ‘LOCAL’ AND d.contents like ‘TEMPORARY’)

————————————————

相关推荐

IM群聊消息如此复杂,如何保证不丢不重?

群聊是多人社交的基本诉求,不管是QQ群,还是微信群,一个群友在群内发了一条消息:(1)在线的群友能第一时间收到消息(2)离线的群友能在登陆后收到消息群消息的复杂度要远高于单对单消息。群消息的实时性,可...

Python 网络爬虫实战:从零到部署的完整流程

适用人群:初-中级Python开发者、数据分析师、运维/测试自动化工程师工具栈:Python3.11+requests+BeautifulSoup/lxml+pandas+(...

用上Kiro之后,完全没理由为Cursor续费了

替Cursor续费前最后一秒,免费IDEKiro把钱包按死在屏幕前五位数年费的AI编程助手,被一匹黑马零元秒杀。用过Kiro的人,开note第一件事就是删掉Cursor的自动续费,动作快到连...

分布式微服务中的搜索引擎:架构与实战盘点

01、为什么微服务需要分布式搜索?在单体应用时代,我们通常使用单一数据库的全文检索功能(如MySQL的LIKE语句)或简单的搜索引擎(如早期的Lucene)。但随着业务规模扩大,这种架构暴露出诸多问题...

产品列表获取API接口详解

在现代软件开发中,API(应用程序编程接口)是获取产品列表的核心工具,它允许开发者从远程服务器高效地检索数据。本文将逐步介绍如何设计和使用产品列表获取API接口,包括核心概念、实现步骤、代码示例以及最...

企业和个人基于业务知识和代码库增强的大模型生成代码实践

作者:京东零售杨亚龙1.源起李明是今年刚加入某互联网公司的研发新人,满怀期待地开始了他的职业生涯。然而,短短两周后,他的热情就被现实浇了一盆冷水。第一周:当他第一次接手需求时,mentor只是简单...

从零到一:独立运行若依框架系统并进行本地二次开发

####一、环境准备1.**基础环境**:-JDK1.8+(推荐JDK17)-Maven3.6+-MySQL5.7+(推荐8.0)-Redis5.0+-Node.js16...

一文教你高效优化在Spring Boot3中遇到深度分页查询性能难题?

你有没有这样的经历?在使用SpringBoot3开发项目时,深度分页查询操作让程序运行得越来越慢,页面加载时间变得难以忍受,不仅影响用户体验,还可能导致项目进度受阻。明明代码逻辑看起来没问题,可...

JAVA面试|如何优化limit分页

我们来详细通俗地聊聊如何优化LIMIToffset,size分页。核心问题在于OFFSET的值很大时,性能会急剧下降。想象一下数据库的工作方式,你就明白为什么了。一、为什么OFFSET大时慢?假...

MySQL(143)如何优化分页查询?

优化分页查询是提升数据库性能和用户体验的重要手段。特别是在处理大数据集时,分页查询的效率对系统性能有显著影响。以下是优化分页查询的详细步骤和代码示例。一、传统分页查询传统的分页查询使用OFFSET...

Seata概述

什么是SeataSeata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务也是SpringCloudAlibaba提供的组件Seata官方文档https...

Docmost:一款开源的Wiki和文档协作软件

是一款开源的团队协作Wiki与文档管理工具,定位为Confluence和Notion的开源替代品,专注于提供高效、安全且可定制的知识库解决方案。Docmost的核心优势在于开源免...

B端系统管理「字典管理」模块实战指南

字典管理听起来像“后端杂务”,其实是B端系统配置能力的关键支点。本指南将从真实业务场景出发,系统拆解该模块的设计逻辑、关键字段与典型坑位,让你一文读懂如何搭建一个能跑得久、配得稳的字典模块。一、字典管...

Spring Boot 整合 Redis BitMap 实现 签到与统计

要在SpringBoot中实现RedisBitMap来进行签到和统计,您需要按照以下步骤进行操作:添加Redis依赖:在pom.xml文件中添加Redis依赖:<dependen...

周期性清除Spark Streaming流状态的方法

在SparkStreaming程序中,我们经常需要使用有状态的流来统计一些累积性的指标,比如各个商品的PV。简单的代码描述如下,使用mapWithState()算子:valproductPvSt...

取消回复欢迎 发表评论: