当前位置: 首页 > news >正文

Zabbix7代理方式监控oracle 23.3

本次实验尝试在 Zabbix 7 环境中,使用官方提供的 “Oracle by Zabbix agent 2” 模板,对通过 Docker 方式部署的 Oracle 数据库进行监控。

一、环境准备与配置

1.1 linux操作系统及docker环境安装

操作系统为Ubuntu 24.04 mini安装

Docker 版本为28.3.3

(安装过程省略)

1.2获取镜像:

拉取 Oracle Database 23c  镜像

# docker pull gvenzl/oracle-free:23.3

1.3运行容器:启动容器,设置必要的环境变量(如密码、SID)。

docker run -d \

  --name zabbix-test-oracle \

  -p 1521:1521 \

  -e ORACLE_PASSWORD=mysecurepassword \

  -e ORACLE_DATABASE=ORCL \

  --restart unless-stopped \

  gvenzl/oracle-free:23.3

1.4验证数据库连接

1.4.1容器内登录测试。

#docker exec -it 0c3bfbb456b8 bash

bash-4.4$ sqlplus system/mysecurepassword@//localhost:1521/ORCL

1.4.2其他客户端测试

在一台WINDOWS终端上用DBeaver 配置连接成功。

二、Zabbix Agent 2 配置

2.1 安装 Agent 2

在 运行 Docker 引擎的宿主机 上安装 Zabbix Agent 2。

# wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_latest_7.0+ubuntu24.04_all.deb

# dpkg -i zabbix-release_latest_7.0+ubuntu24.04_all.deb

# apt update

# apt install zabbix-agent2

2.2 配置 Zabbix Agent 2

编辑 /etc/zabbix/zabbix_agent2.conf。

# cd /etc/zabbix/

# vi zabbix_agent2.conf

修改zabbix服务器参数

Server=192.168.1.242          # 我的zabbix服务器IP    

Hostname= Oracle_docker_host        # 此主机在 Zabbix 中的标识,与下一步在Zabbix服务器 Web UI 中创建的主机名一致

2.3 配置 Oracle 监控用户

在 Oracle 容器内创建一个专用于 Zabbix 监控的用户,授予必要权限。

#docker exec -it 0c3bfbb456b8 bash    #进入容器

bash-4.4$ sqlplus system/mysecurepassword@//localhost:1521/ORCL  #使用 sysdba 权限用户system登录 sqlplus

sql>CREATE USER zabbix_monitor IDENTIFIED BY "monitor_password";

sql>GRANT CONNECT TO zabbix_monitor;

sql>GRANT SELECT ANY DICTIONARY TO zabbix_monitor;

sql>GRANT SELECT ON V_$SESSION TO zabbix_monitor;

sql>GRANT SELECT ON V_$SYSMETRIC TO zabbix_monitor;

2.4. 创建 Oracle 连接配置文件

编辑文件 /etc/zabbix/zabbix_agent2.d/plugins.d/oracle.conf

修改启用以下键值

Plugins.Oracle.Sessions.ORCL.Uri=tcp://localhost:1521

Plugins.Oracle.Sessions.ORCL.Service=ORCL

Plugins.Oracle.Sessions.ORCL.User=zabbix_monitor

Plugins.Oracle.Sessions.ORCL.Password=monitor_password

2.5 在Zabbix Web UI中配置HOST

进入 Data collection > Hosts 页面 点击 Create host

设置Host name :  Host-Docker-Oracle

Templates : Oracle by Zabbix agent 2

Interfaces: IP 192.168.1.200,端口: 10050。

宏:

{$ORACLE.CONNSTRING} : tcp://localhost:1521

{$ORACLE.USER} : zabbix_monitor

{$ORACLE.PASSWORD} : monitor_password

{$ORACLE.SERVICE} : ORCL

三、验证监控结果

3.1 Agent 2 与 Server 连通性测试

在 Zabbix Server 上执行 zabbix_get -s 192.168.1.200 -p 10050 -k "agent.ping"

返回结果 1

在Zabbix Web UI进入Data collection > Hosts 页面,可以看到Oracle_docker_host主机的Availability 标记为绿色,服务器与Agent 已成功连接

3.2 数据采集测试

等待几分钟让 Zabbix Server 开始收集数据,然后检查最新数据。

所有指标都无数据,提示错误:“ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help”

3.3 根据提示,需要安装 Oracle Instant Client。

在Oracle 官网下载适用于 Linux x86_64 的 Instant Client RPM 包

#wget https://download.oracle.com/otn_software/linux/instantclient/2390000/oracle-instantclient-basic-23.9.0.25.07-1.el9.x86_64.rpm

Ubuntu不能直接安装RPM包,需要转换为DEB包。

安装alien工具,该工具可以将RPM包转换为Debian包(.deb)

# apt update

# apt install alien

使用alien将RPM包转换为Deb包

# alien -d -c oracle-instantclient-basic-23.9.0.25.07-1.el9.x86_64.rpm

安装Oracle Instant Client

# dpkg -i oracle-instantclient-basic_23.9.0.25.07-2_amd64.deb

3.4设置环境变量

为了让 Zabbix Agent 2 能找到 Oracle 客户端库,需要设置环境变量。

创建环境配置文件

# vi /etc/default/zabbix-agent2

在文件末尾添加以下内容:

# Oracle Instant Client 23.9 Environment Variables

ORACLE_HOME=/usr/lib/oracle/23/client64

LD_LIBRARY_PATH=$ORACLE_HOME/lib:$LD_LIBRARY_PATH

重启 Zabbix Agent2 服务:

# systemctl restart zabbix-agent2

配置完成后,检查环境变量是否生效:

获取 Zabbix Agent2 的 PID

#pidof zabbix_agent2

查看该进程的环境变量

sudo strings -a /proc/20406/environ | grep -E '(ORACLE_HOME|LD_LIBRARY_PATH)'

输出中显示了设置的路径,说明环境变量已生效。

在zabbix服务器WEB UI查看指标数据,发现报错信息变成:ORA-00000: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libaio.so.1: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help

提示缺少libaio.so.1 这个共享库

在系统中查找libaio.so.1 的实际位置

# find / -name libaio.so.1*

/usr/lib/x86_64-linux-gnu/libaio.so.1t64

/usr/lib/x86_64-linux-gnu/libaio.so.1t64.0.2

从搜索结果来看,libaio1是Linux异步I/O库,而Ubuntu24.04上安装的是libaio1t64。虽然名称不同,但根据APT的包信息,libaio1t64应该提供了相同的功能,只是命名可能因版本不同。

尝试直接复制库文件

#cp /usr/lib/x86_64-linux-gnu/libaio.so.1t64 /usr/lib/x86_64-linux-gnu/libaio.so.1

重启 Zabbix Agent2 服务:

# systemctl restart zabbix-agent2

从 Zabbix Server 再次执行 zabbix_get 命令:

# zabbix_get -s 192.168.1.200 -k "oracle.instance.info["tcp://localhost:1521","zabbix_monitor","monitor_password","ORCL"]"

执行成功。

在zabbix服务器WEB UI查看指标,已获取到数据。

http://www.dtcms.com/a/363484.html

相关文章:

  • C++多线程编程:std::thread, std::async, std::future
  • PHP 8.x与现代Web开发:性能、安全与生态进化
  • 数据库入门实战版
  • 深度学习篇---SGD优化器
  • Java反序列化漏洞揭秘:从原理到攻击实战
  • RabbitMQ消息堆积问题排查:concurrentConsumers 配置的坑与解决方案
  • 网络共享协议
  • 探索JavaScript机器学习:几款流行的库推荐
  • 服务器数据恢复—OceanStor存储数据丢失原来这样恢复
  • linux 命令 awk的常见用法
  • 【LeetCode】3025. 人员站位的方案数 I(康复-T2)
  • 【ComfyUI】SDXL Refiner 提示进一步提升生成图像的质量
  • 族 20 魅族 note16 meizu M20 MEIZU NOTE16 解锁BL bootloader
  • Linux电脑怎样投屏到客厅的大电视?支持远程投屏吗?
  • 构建高性能企业级搜索?Amazon CloudSearch全攻略:从核心概念到落地实践
  • 第 2 讲:Kafka Topic 与 Partition 基础
  • 心路历程-vim编辑器
  • 详解kafka streams(二)
  • Kafka 架构详解
  • 数据结构_队列(C语言实现)
  • 图论简介与图神经网络(Dijkstra算法,图卷积网络GCN实战)
  • 只需几条命令,本地体验微软最新长文本语音合成 VibeVoice(支持中文)
  • 电子电气架构 --- 当前企业EEA现状(上)
  • 2025牛客暑期多校训练营4(FBDGI)
  • MacOS - 记录MacOS发烫的好几天 - 幕后黑手竟然是
  • KVM 虚拟化基础与实操
  • 新质生产力的中枢神经:人工智能+时代的实时视频架构
  • Ubuntu 用户和用户组
  • rocketmq console dashboard 2.0控制台
  • 均匀分布直线阵的常规波束形成方位谱和波束图