Advertising:
Monitorizacion de Bases de Datos vía UnixODBC
Jump to navigation
Jump to search
Preparación del entorno
Instalación de Oracle 18c con Dockers
InfoDoc: https://www.oracle.com/lad/technical-resources/articles/database-performance/imagen-odb18c-en-docker.html https://soajp.blogspot.com/2019/03/instalar-oracle-database-18c-con-docker.html
# docker pull dockerhelp/docker-oracle-ee-18c $ docker run -it -p 1521:1521 dockerhelp/docker-oracle-ee-18c bash $ sh post_install.sh $ sqlplus user: sys as sysdba pass: oracle
SQL> alter session set "_ORACLE_SCRIPT"=true; Session altered. SQL> create user zabbix identified by zabbix1234; User created. SQL> grant dba to zabbix; Grant succeeded.
SQL> select value from v$parameter where name='service_names';
Instalación de MariaDB con Dockers
# dnf module reset mariadb -y # docker run -d --name mariadb-server -p 3306:3306 -e "MYSQL_ROOT_PASSWORD=zabbix" mariadb # docker exec -it mariadb-server bash
Instalación de PostgreSQL con Dockers
# dnf module reset postgresql -y # docker run --name postgresql-server -p 5432:5432 -e POSTGRES_PASSWORD=zabbix1234 -d postgres # docker exec -it postgresql-server bash $ psql -h localhost -p 5432 -U postgres -W Password: zabbix1234 psql (14.1 (Debian 14.1-1.pgdg110+1)) Type "help" for help. postgres=#
Instalación ODBC de Oracle
Download: https://www.zabbix.com/documentation/current/manual/config/items/plugins https://www.oracle.com/es/database/technologies/instant-client/linux-x86-64-downloads.html
# mkdir -p /opt/oracle # cd /opt/oracle # wget https://download.oracle.com/otn_software/linux/instantclient/185000/instantclient-basic-linux.x64-18.5.0.0.0dbru.zip # unzip instantclient-basic-linux.x64-*.zip # wget https://download.oracle.com/otn_software/linux/instantclient/185000/instantclient-odbc-linux.x64-18.5.0.0.0dbru.zip # unzip instantclient-odbc-linux.x64-18.5.0.0.0dbru.zip
Librerías adicionales que utiliza el Instantclient
# dnf install -y libaio libnsl
Linkeamos las librerías
# echo /opt/oracle/instantclient_18_5 > /etc/ld.so.conf.d/oracle-instantclient.conf # ldconfig
Instalación UnixODBC
Para la instalación de dicho conector ODBC lo haremos desde el repositorio de Centos, para ello ejecutaremos en nuestra maquina servidor de Zabbix quien será la que necesita de dicho driver para llevar a cabo las consultas contra las diferentes BBDD:
# dnf install unixODBC unixODBC-devel -y
Tras su instalación procederemos a instalar el driver que necesitemos para establecer conexión contra el motor de base de datos deseado, en este caso pondremos el ejemplo de una BBDD PostgreSQL:
# dnf install postgresql-odbc mariadb-connector-odbc -y
Tras esto deberemos de configurar dos archivos, uno que hace referencia a la ubicación del driver y el otro a la conexión contra la bbdd. El .conf que hace referencia al driver que utilizaremos para atacar a la bbdd se encuentra en la siguiente ruta:
/etc/odbcinst.ini
En el deberemos tener una referencia a cada driver que utilizaremos, por ejemplo en nuestro caso:
Configuración del odbc.ini
ODBC para MariaDB
odbcinst.ini
[MariaDB] Description = ODBC for MariaDB Driver = /usr/lib/libmaodbc.so Driver64 = /usr/lib64/libmaodbc.so FileUsage = 1
odbc.ini
[MariaDB01] Description = MariaDB test database Driver = MariaDB Server = 10.1.100.101 User = root Password = zabbix Port = 3306 Database = mysql
# isql -v MariaDB01 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
ODBC para PostgreSQL
odbcinst.ini
[PostgreSQL] Description = ODBC for PostgreSQL Driver = /usr/lib/psqlodbcw.so Setup = /usr/lib/libodbcpsqlS.so Driver64 = /usr/lib64/psqlodbcw.so Setup64 = /usr/lib64/libodbcpsqlS.so FileUsage = 1
odbc.ini
[PGDB01] Description = PostgreSQL connection to AMPG961 Driver = PostgreSQL Database = postgres Servername = 10.1.100.101 Port = 5432 Protocol = 9.5.5 ReadOnly = No RowVersioning = No ShowSystemTables = No ConnSettings =
# isql -v PGDB01 postgres zabbix +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
ODBC para Oracle
odbcinst.ini
[Oracle 11g ODBC driver] Description = Oracle ODBC driver for Oracle 11g Driver = /opt/oracle/instantclient_18_5/libsqora.so.18.1 Setup = FileUsage = CPTimeout = CPReuse = Driver Logging = 7
odbc.ini
[ORADB01] Application Attributes = T Attributes = W BatchAutocommitMode = IfAllSuccessful BindAsFLOAT = F CloseCursor = F DisableDPM = F DisableMTS = T Driver = Oracle 11g ODBC driver Servername = //10.1.100.101:1521/ORCL18 XECSchemaOpt = EXECSyntax = T Failover = T FailoverDelay = 10 FailoverRetryCount = 10 FetchBufferSize = 64000 ForceWCHAR = F Lobs = T Longs = T MaxLargeData = 0 MetadataIdDefault = F QueryTimeout = T ResultSets = T ServerName = SQLGetData extensions = F Translation DLL = Translation Option = 0 DisableRULEHint = T UserID = StatementCache=F CacheBufferSize=20 UseOCIDescribeAny=F MaxTokenSize=8192
# isql -v ORADB01 zabbix zabbix1234 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>
Errores postibles
IMPORTANTE: si teniendo el odbc y el Instantclient de Oracle instalados nos da un error del siguiente tipo puede ser que nos falte configurar el LD_LIBRARY_PATH
# isql -v ORADB01 zabbix zabbix1234 [01000][unixODBC][Driver Manager]Can't open lib '/opt/oracle/instantclient_18_5/libsqora.so.18.1' : file not found
[ISQL]ERROR: Could not SQLConnect
# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/oracle/instantclient_18_5 # isql -v ORADB01 zabbix zabbix1234 +---------------------------------------+ | Connected! | | | | sql-statement | | help [tablename] | | quit | | | +---------------------------------------+ SQL>