欢迎光临殡葬网
详情描述
Zabbix监控Oracle 19c数据库完整配置指南

一、环境准备

1.1 系统要求

  • Zabbix Server 5.0或更高版本
  • Oracle 19c数据库(版本19.3+)
  • Oracle Instant Client(Linux系统)
  • Zabbix Agent 2(推荐)或Zabbix Agent

1.2 软件下载

# Oracle Instant Client
wget https://download.oracle.com/otn_software/linux/instantclient/211000/oracle-instantclient19.19-basic-19.19.0.0.0-1.x86_64.rpm

# Zabbix Agent 2
wget https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-agent2-6.0.0-release1.el8.x86_64.rpm

二、Oracle端配置

2.1 创建监控用户

-- 以sysdba身份登录
sqlplus / as sysdba

-- 创建监控用户
CREATE USER zabbix_mon IDENTIFIED BY "YourStrongPassword123";

-- 授予权限
GRANT CONNECT, CREATE SESSION TO zabbix_mon;
GRANT SELECT ANY DICTIONARY TO zabbix_mon;
GRANT SELECT ON V_$SYSSTAT TO zabbix_mon;
GRANT SELECT ON V_$SYSTEM_EVENT TO zabbix_mon;
GRANT SELECT ON V_$SESSION TO zabbix_mon;
GRANT SELECT ON V_$DATABASE TO zabbix_mon;
GRANT SELECT ON V_$LOG TO zabbix_mon;
GRANT SELECT ON V_$PARAMETER TO zabbix_mon;
GRANT SELECT ON DBA_DATA_FILES TO zabbix_mon;
GRANT SELECT ON DBA_TEMP_FILES TO zabbix_mon;
GRANT SELECT ON DBA_FREE_SPACE TO zabbix_mon;
GRANT SELECT ON V_$RECOVERY_FILE_DEST TO zabbix_mon;
GRANT SELECT ON V_$FLASH_RECOVERY_AREA_USAGE TO zabbix_mon;
GRANT SELECT ON V_$ARCHIVED_LOG TO zabbix_mon;
GRANT SELECT ON V_$BACKUP TO zabbix_mon;
GRANT SELECT ON V_$ASM_DISKGROUP TO zabbix_mon;

2.2 配置TNS

# 编辑tnsnames.ora
vi $ORACLE_HOME/network/admin/tnsnames.ora

# 添加监控连接
ORCL =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = oracle-server)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )

三、Zabbix Agent端配置

3.1 安装Oracle Instant Client

# 安装RPM包
rpm -ivh oracle-instantclient19.19-basic-19.19.0.0.0-1.x86_64.rpm

# 设置环境变量
echo 'export ORACLE_HOME=/usr/lib/oracle/19.19/client64' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH' >> ~/.bashrc
echo 'export PATH=$ORACLE_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

3.2 安装Zabbix Agent 2

# 安装Zabbix Agent 2
rpm -ivh zabbix-agent2-6.0.0-release1.el8.x86_64.rpm

# 安装Oracle插件依赖
yum install -y unixODBC-devel

3.3 配置Zabbix Agent 2

# 编辑配置文件
vi /etc/zabbix/zabbix_agent2.conf

# 添加以下配置
Server=192.168.1.100           # Zabbix Server IP
ServerActive=192.168.1.100     # Zabbix Server IP
Hostname=oracle-db-server      # 主机名(需与Zabbix Web中配置一致)

# 加载Oracle插件
Plugins.Oracle.System.Path=/var/lib/zabbix/oracle
Plugins.Oracle.CallTimeout=30

# 启用插件
Plugins.Oracle.Enabled=true

3.4 创建Oracle插件配置文件

# 创建目录
mkdir -p /var/lib/zabbix/oracle

# 创建配置文件
vi /var/lib/zabbix/oracle/settings.conf

# 添加数据库连接配置
<orcl>
    ConnectString = (DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)))
    User = zabbix_mon
    Password = YourStrongPassword123
</orcl>

3.5 测试连接

# 测试Oracle连接
sqlplus zabbix_mon/YourStrongPassword123@orcl

# 测试Zabbix插件
zabbix_agent2 -t oracle.db.discovery[orcl]

四、Zabbix Server端配置

4.1 导入Oracle监控模板

下载官方Oracle模板:https://git.zabbix.com/projects/ZBX/repos/zabbix/browse/templates/db/oracle_agent2 登录Zabbix Web界面 进入"Configuration" → "Templates" 点击"Import",选择下载的XML文件

4.2 创建主机

进入"Configuration" → "Hosts" 点击"Create host" 配置主机信息:
  • Host name: oracle-db-server
  • Visible name: Oracle 19c Database
  • Groups: Databases, Oracle Servers
  • Agent interfaces: 添加Zabbix Agent 2的IP和端口
关联模板:"Template DB Oracle by Zabbix agent 2"

4.3 配置宏变量

在主机配置中添加宏:

{$ORACLE.CONN} = orcl
{$ORACLE.USER} = zabbix_mon
{$ORACLE.PASSWORD} = YourStrongPassword123

五、监控项详解

5.1 关键监控指标

性能指标
oracle.db.performance[session_count,orcl]        # 会话数
oracle.db.performance[active_session_count,orcl]  # 活跃会话数
oracle.db.performance[logical_reads,orcl]         # 逻辑读
oracle.db.performance[physical_reads,orcl]        # 物理读
oracle.db.performance[user_commits,orcl]          # 用户提交数
oracle.db.performance[user_rollbacks,orcl]        # 用户回滚数
表空间监控
oracle.ts.stats[{#TABLESPACE},total,orcl]        # 表空间总大小
oracle.ts.stats[{#TABLESPACE},free,orcl]          # 表空间空闲大小
oracle.ts.stats[{#TABLESPACE},pused,orcl]         # 使用百分比
等待事件
oracle.event.stats[{#EVENT},total_waits,orcl]     # 等待事件数
oracle.event.stats[{#EVENT},time_waited,orcl]     # 等待时间

5.2 自定义监控项示例

监控归档日志状态
-- 创建监控SQL文件
vi /var/lib/zabbix/oracle/archivelog_status.sql

-- SQL内容
SELECT 
    COUNT(*) as archive_count,
    ROUND(SUM(blocks * block_size)/1024/1024, 2) as archive_size_mb
FROM v$archived_log 
WHERE completion_time > SYSDATE - 1/24;
在Zabbix中创建监控项 使用oracle.db.query[query_file,orcl]键值 配置预处理步骤提取数值

六、告警配置

6.1 关键告警规则

表空间使用率告警
触发器名称:Tablespace {#TABLESPACE} usage > 90%
表达式:{Template DB Oracle:oracle.ts.stats[{#TABLESPACE},pused,orcl].last()}>90
严重性:Warning
会话数告警
触发器名称:Too many database sessions
表达式:{Template DB Oracle:oracle.db.performance[session_count,orcl].avg(5m)}>500
严重性:Average
连接失败告警
触发器名称:Oracle connection failed
表达式:{Template DB Oracle:oracle.db.ping[orcl].nodata(3m)}=1
严重性:High

七、仪表板配置

7.1 创建Oracle监控仪表板

进入"Monitoring" → "Dashboards" 点击"Create dashboard" 添加以下小部件:
  • 数据库状态卡片
  • 会话数趋势图
  • 表空间使用率饼图
  • Top 5等待事件
  • 性能指标历史数据

7.2 Grafana集成(可选)

# docker-compose.yml配置
version: '3'
services:
  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    environment:
      - GF_INSTALL_PLUGINS=alexanderzobnin-zabbix-app

八、维护与优化

8.1 定期任务

# 清理旧数据
# 添加crontab任务
0 2 * * * /usr/bin/find /var/lib/zabbix/oracle/logs -name "*.log" -mtime +7 -delete

8.2 性能优化建议

调整Zabbix Agent收集间隔 使用Oracle Active Data Guard监控备库 配置Oracle AWR报告自动收集 定期分析Zabbix历史数据表

8.3 安全建议

使用Oracle Wallet存储密码 定期轮换监控账户密码 限制监控账户的IP访问 启用Zabbix Agent TLS加密

九、故障排除

9.1 常见问题

连接失败
# 检查网络连接
tnsping orcl

# 检查插件权限
ls -la /var/lib/zabbix/oracle/

# 查看Zabbix Agent日志
tail -f /var/log/zabbix/zabbix_agent2.log
插件执行超时
# 增加超时时间
vi /var/lib/zabbix/oracle/settings.conf
# 添加:CallTimeout=60

9.2 调试命令

# 手动测试监控项
zabbix_agent2 -t oracle.db.ping[orcl]

# 查看所有可用的监控项
zabbix_agent2 -p | grep oracle

# 检查Oracle连接
echo 'select sysdate from dual;' | sqlplus -s zabbix_mon/密码@orcl

十、参考资料

  • Zabbix官方Oracle监控文档
  • Oracle 19c管理员指南
  • Zabbix模板GitHub仓库

注意:生产环境部署前,请在测试环境充分验证。所有密码和敏感信息应使用安全的存储方式。