在 zabbix 中创建 "Database Monitor" 项目时无法打开 lib '/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
Can't open lib '/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1 when create "Database Monitor" item in zabbix
在此之前安装了unixODBC
- unixODBC.x86_64 2.2.14-14.el6
- unixODBC-devel.x86_64 2.2.14-14.el6
并且安装的 Oracle ODBC 驱动程序是:
- oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64
- oracle-instantclient11.2-odbc-11.2.0.1.0-1.x86_64
- oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64
和odbcinst.ini:
[Oracle-11g]
Description=ODBC for Oracle
Driver=/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
UsageCount=1
FileUsage=1
Driver Logging = 7
odbc.ini:
[test]
Driver = Oracle-11g
DSN = Oracle-11g
ServerName = gzdb
UserID = xxx
Password = xxx
ODBC 连接正常
shell> isql -v test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
为了启用 ODBC 支持,我用标志重新编译了 zabbix3.0:--with-unixodbc
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc
并用新编译的二进制文件替换旧的 zabbix_sever。
但是,当我在zabbix中创建"Database Monitor"项时,仍然出现错误:
enter image description here
所以我运行su - zabbix -c "ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1"
看起来不错
su - zabbix -c "ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1"
linux-vdso.so.1 => (0x00007fffe21ee000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f1ad095e000)
libm.so.6 => /lib64/libm.so.6 (0x00007f1ad06d9000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1ad04bc000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f1ad02a3000)
libclntsh.so.11.1 => /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1 (0x00007f1acdd72000)
libodbcinst.so.1 => /usr/lib64/libodbcinst.so.1 (0x00007f1acdb61000)
libc.so.6 => /lib64/libc.so.6 (0x00007f1acd7cd000)
/lib64/ld-linux-x86-64.so.2 (0x000000373c600000)
libnnz11.so => /usr/lib/oracle/11.2/client64/lib/libnnz11.so (0x00007f1acd404000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f1acd203000)
libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007f1accffa000)
真不知道错误是什么意思
我在连接我的办公室和 Amazon 的 EC2 实例时遇到了一个非常相似的错误,后来发现这个错误非常具有误导性。具体来说,我的错误是:
Connection Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't
open lib '/usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1' : file
not found (0) (SQLDriverConnect)")
我们的防火墙是罪魁祸首。更宽松的设置允许成功而没有进一步的问题。
那是因为您的 zabbix 服务器不知道去哪里寻找 Oracle 库。
尝试导出环境变量LD_LIBRARY_PATH到zabbix server
不知道你用的是什么OS,我是美分OS 7
创建 /etc/sysconfig/zabbix-server 文件,并使用
进行编辑
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib"
export LD_LIBRARY_PATH
然后重启zabbix-server
因为 mysqld daemon 运行 user with mysql(not root),你可以使用命令 [ps] check
ps aux | grep -i mysqld
mysql 3129 0.6 5.0 1862256 94272 ? Ssl 17:52 0:00 /usr/sbin/mysqld
1.add环境变量$LD_LIBRARY_PATH改成/usr/lib/systemd/system/mariadb.service
echo "Environment=\"LD_LIBRARY_PATH=$LD_LIBRARY_PATH\"" >> /usr/lib/systemd/system/mariadb.service
2.restart mariadb.service
systemctl stop mariadb.service
systemctl daemon-reload
systemctl start mariadb.service
祝你好运!
在此之前安装了unixODBC
- unixODBC.x86_64 2.2.14-14.el6
- unixODBC-devel.x86_64 2.2.14-14.el6
并且安装的 Oracle ODBC 驱动程序是:
- oracle-instantclient11.2-basic-11.2.0.1.0-1.x86_64
- oracle-instantclient11.2-odbc-11.2.0.1.0-1.x86_64
- oracle-instantclient11.2-devel-11.2.0.1.0-1.x86_64
和odbcinst.ini:
[Oracle-11g]
Description=ODBC for Oracle
Driver=/usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1
UsageCount=1
FileUsage=1
Driver Logging = 7
odbc.ini:
[test]
Driver = Oracle-11g
DSN = Oracle-11g
ServerName = gzdb
UserID = xxx
Password = xxx
ODBC 连接正常
shell> isql -v test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
为了启用 ODBC 支持,我用标志重新编译了 zabbix3.0:--with-unixodbc
./configure --enable-server --enable-agent --with-mysql --enable-ipv6 --with-net-snmp --with-libcurl --with-libxml2 --with-unixodbc
并用新编译的二进制文件替换旧的 zabbix_sever。
但是,当我在zabbix中创建"Database Monitor"项时,仍然出现错误: enter image description here
所以我运行su - zabbix -c "ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1"
看起来不错
su - zabbix -c "ldd /usr/lib/oracle/11.2/client64/lib/libsqora.so.11.1"
linux-vdso.so.1 => (0x00007fffe21ee000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f1ad095e000)
libm.so.6 => /lib64/libm.so.6 (0x00007f1ad06d9000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f1ad04bc000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f1ad02a3000)
libclntsh.so.11.1 => /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1 (0x00007f1acdd72000)
libodbcinst.so.1 => /usr/lib64/libodbcinst.so.1 (0x00007f1acdb61000)
libc.so.6 => /lib64/libc.so.6 (0x00007f1acd7cd000)
/lib64/ld-linux-x86-64.so.2 (0x000000373c600000)
libnnz11.so => /usr/lib/oracle/11.2/client64/lib/libnnz11.so (0x00007f1acd404000)
libaio.so.1 => /lib64/libaio.so.1 (0x00007f1acd203000)
libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007f1accffa000)
真不知道错误是什么意思
我在连接我的办公室和 Amazon 的 EC2 实例时遇到了一个非常相似的错误,后来发现这个错误非常具有误导性。具体来说,我的错误是:
Connection Error: ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib '/usr/lib/oracle/12.1/client64/lib/libsqora.so.12.1' : file not found (0) (SQLDriverConnect)")
我们的防火墙是罪魁祸首。更宽松的设置允许成功而没有进一步的问题。
那是因为您的 zabbix 服务器不知道去哪里寻找 Oracle 库。 尝试导出环境变量LD_LIBRARY_PATH到zabbix server
不知道你用的是什么OS,我是美分OS 7
创建 /etc/sysconfig/zabbix-server 文件,并使用
进行编辑LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/lib/oracle/12.1/client64/lib"
export LD_LIBRARY_PATH
然后重启zabbix-server
因为 mysqld daemon 运行 user with mysql(not root),你可以使用命令 [ps] check
ps aux | grep -i mysqld
mysql 3129 0.6 5.0 1862256 94272 ? Ssl 17:52 0:00 /usr/sbin/mysqld
1.add环境变量$LD_LIBRARY_PATH改成/usr/lib/systemd/system/mariadb.service
echo "Environment=\"LD_LIBRARY_PATH=$LD_LIBRARY_PATH\"" >> /usr/lib/systemd/system/mariadb.service
2.restart mariadb.service
systemctl stop mariadb.service
systemctl daemon-reload
systemctl start mariadb.service
祝你好运!