使用 Zabbix 监控 Oracle 数据库
Monitor Oracle DB with Zabbix
我安装并配置了 Oracle 即时客户端和 unixODBC。使用root
登录时,可以通过sqlplus或isql连接到数据库。
root@zabbix:~# sqlplus ***/***@***
SQL*Plus: Release 12.1.0.2.0 Production on Tue Mar 7 13:56:42 2017
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Last Successful login time: Tue Mar 07 2017 13:19:45 +03:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
root@zabbix:~# isql ***
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
但在 Zabbix 管理面板中我收到错误 Cannot connect to ODBC DSN:[SQL_ERROR]:[08004][12154][[unixODBC][Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified]|
。
我认为 zabbix 用户不存在 env 是个问题,因为 sudo -u zabbix env
输出不包含 ORACLE_HOME, TNS_ADMIN, NLS_LANG
等
在哪里可以设置或者有什么问题?
我解决了我的问题。
使用必要的变量创建文件 /etc/default/zabbix-server
:
ORACLE_HOME=/usr/lib/oracle/12.1/client64
LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
NLS_LANG=AMERICAN_CIS.CL8MSWIN1251
TNS_ADMIN=/usr/lib/oracle/12.1/client64/network/admin
重启 Zabbix 服务器
获取 Zabbix 服务器进程的主 PID 并使用 strings -a /proc/18253/environ
检查进程环境(将 18253 替换为您的 PID):
LANG=en_US.UTF-8
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
CONFFILE=/etc/zabbix/zabbix_server.conf
ORACLE_HOME=/usr/lib/oracle/12.1/client64
LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib
NLS_LANG=AMERICAN_CIS.CL8MSWIN1251
TNS_ADMIN=/usr/lib/oracle/12.1/client64/network/admin
我安装并配置了 Oracle 即时客户端和 unixODBC。使用root
登录时,可以通过sqlplus或isql连接到数据库。
root@zabbix:~# sqlplus ***/***@***
SQL*Plus: Release 12.1.0.2.0 Production on Tue Mar 7 13:56:42 2017
Copyright (c) 1982, 2014, Oracle. All rights reserved.
Last Successful login time: Tue Mar 07 2017 13:19:45 +03:00
Connected to:
Oracle Database 12c Enterprise Edition Release 12.1.0.2.0 - 64bit Production
With the Partitioning, OLAP, Advanced Analytics and Real Application Testing options
SQL>
root@zabbix:~# isql ***
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>
但在 Zabbix 管理面板中我收到错误 Cannot connect to ODBC DSN:[SQL_ERROR]:[08004][12154][[unixODBC][Oracle][ODBC][Ora]ORA-12154: TNS:could not resolve the connect identifier specified]|
。
我认为 zabbix 用户不存在 env 是个问题,因为 sudo -u zabbix env
输出不包含 ORACLE_HOME, TNS_ADMIN, NLS_LANG
等
在哪里可以设置或者有什么问题?
我解决了我的问题。
使用必要的变量创建文件
/etc/default/zabbix-server
:ORACLE_HOME=/usr/lib/oracle/12.1/client64 LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib NLS_LANG=AMERICAN_CIS.CL8MSWIN1251 TNS_ADMIN=/usr/lib/oracle/12.1/client64/network/admin
重启 Zabbix 服务器
获取 Zabbix 服务器进程的主 PID 并使用
strings -a /proc/18253/environ
检查进程环境(将 18253 替换为您的 PID):LANG=en_US.UTF-8 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin CONFFILE=/etc/zabbix/zabbix_server.conf ORACLE_HOME=/usr/lib/oracle/12.1/client64 LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib NLS_LANG=AMERICAN_CIS.CL8MSWIN1251 TNS_ADMIN=/usr/lib/oracle/12.1/client64/network/admin