Monitorizacion de Bases de Datos vía UnixODBC

From Zabbix-ES
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>