ODBC-мониторинг

ODBC-мониторинг соответствует типу элемента данных "Монитор баз данных" в веб-интерфейсе Подсистемы.

ODBC – это API на языке программирования C к промежуточной прослойке для доступа к системам управления базами данных (DBMS).

Подсистема может выполнять запросы к любой БД, которая поддерживается ODBC. Чтобы это сделать, Подсистема не подключается напрямую к БД, а использует интерфейс ODBC и драйверы, установленные в ODBC. Эта функция позволяет с большей эффективностью мониторить различные БД с разнообразными целями, например: проверка специфичных запросов к базе данных, статистика использования и прочее. Подсистема поддерживает unixODBC, которая является одной из наиболее часто используемых реализаций API ODBC с открытым исходным кодом.

Установка unixODBC

Рекомендуемый способ установки unixODBC состоит в использовании репозиториев пакетов по умолчанию в операционной системе Linux. В наиболее популярные дистрибутивы Linux unixODBC добавлен в репозитории пакетов по умолчанию. Если он недоступен, можно обратиться к домашней странице UNIXODBC: http://www.unixodbc.org/download.html.

Установка unixODBC на ОС на базе RedHat/Fedora с использованием менеджера пакетов dnf:

dnf -y install unixODBC unixODBC-devel

Установка unixODBC на ОС на базе SUSE с использованием менеджера пакетов zypper:

zypper in unixODBC-devel

Пакет unixODBC-devel требуется для компиляции Подсистемы с поддержкой unixODBC.

Установка драйверов unixODBC

Драйвер unixODBC базы данных должен быть установлен для БД, которая будет наблюдаться. unixODBC имеет список поддерживаемых БД и драйверов: http://www.unixodbc.org/drivers.html. В некоторых дистрибутивах Linux драйвера БД включены в репозитории пакетов. Драйвера БД MySQL на ОС на базе RedHat/Fedora можно установить с помощью менеджера пакетов dnf:

shell> dnf install mysql-connector-odbc

Установка MySQL драйвера на ОС на базе SUSE с использованием менеджера пакетов zypper:

zypper in MyODBC-unixODBC

Настройка unixODBC

Настройка ODBC выполняется путем редактирования файлов odbcinst.ini и odbc.ini. Для проверки местоположения этих файлов нужно ввести:

odbcinst -j

odbcinst.ini используется для перечисления установленных драйверов БД ODBC:

[mysql]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc5.so

где:

  • mysql – имя драйвера БД;
  • Description – описание драйвера БД;
  • Driver – размещение библиотеки драйвера БД.

odbc.ini используется для определения источников данных:

[test]Description = MySQL test database
Driver = mysql
Server = 127.0.0.1
User = root
Password =
Port = 3306
Database = zabbix

где:

  • test – имя источника данных (DSN);
  • Description – описание источника данных;
  • Driver – имя драйвера БД, как указано в odbcinst.ini;
  • Server – IP/DNS сервера БД;
  • User – пользователь БД для подключения;
  • Password – пароль пользователя БД;
  • Port – порт подключения к БД;
  • Database – имя БД.

Для проверки успешного соединения ODBC подключение к БД необходимо протестировать. Для этого можно воспользоваться утилитой isql (включена в пакет unixODBC):

shell> isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
SQL>

Компиляция с поддержкой ODBC

Для включения поддержки ODBC Подсистема должен быть скомпилирован со следующим флагом:

--with-unixodbc[=ARG] use odbc driver against unixODBC package

Настройка элемента данных в веб-интерфейсе

Настройка элемента данных для мониторинга БД показана на рисунке 10.

Рисунок 10 — Настройка для мониторинга базы данных

Специально для элементов данных мониторинга БД должны быть указаны параметры из таблицы 83.

Примечания:

  • Элементы данных монитора БД станут неподдерживаемыми, если процессы odbc poller не запускаются в конфигурации Сервера или Прокси. Чтобы включить ODBC-поллеры, нужно задать параметр StartODBCPollers в файле конфигурации Сервера или, если проверки выполняются на стороне Прокси, в файле конфигурации Прокси.
  • Подсистема не ограничивает время выполнения запроса. Пользователь сам выбирает запросы, которые выполняются за разумное время.
  • Значение параметра Timeout с Сервера используется как время ожидания выполнения входа в ODBC (следует обратить внимание, что в зависимости от драйвера ODBC время ожидания выполнения входа может быть проигнорировано).
  • SQL-команда должна вернуть набор данных, как и любой запрос с SELECT…. Синтаксис запроса зависит от РСУБД, которая будет его обрабатывать. Синтаксис запроса к хранимой процедуре должен начинаться с ключевого слова CALL.

Сообщения об ошибках

Сообщения об ошибках ODBC структурированы по полям для предоставления подробной информации. Например:

Cannot execute ODBC query Zabbix сообщение
[SQL_ERROR] – ODBC возвращаемый код
[42601] – SQLState
[7] – Родной код ошибки
[ERROR: syntax error at or near ";"; Error while executing the query] – Родное сообщение об ошибке

Следует обратить внимание, что длина сообщения об ошибке ограничена 2048 байтами, поэтому сообщение может быть усечено. Если имеется более одной ODBC диагностической записи, Подсистема пытается их скомпоновать, насколько позволяет ограничение по длине.

Рекомендуемые настройки UNIXODBC для MySQL

Установка:

  • в Red Hat Enterprise Linux:
    dnf install mysql-connector-odbc
    
  • Debian/Ubuntu:
    См. материалы документации MySQL для загрузки необходимого драйвера базы данных под соответствующую платформу.

Настройка ODBC выполняется изменением файлов odbcinst.ini и odbc.ini. Эти файлы конфигурации можно найти в директории /etc. Файл odbcinst.ini может отсутствовать, и в этом случае его необходимо создать вручную:

[mysql]
Description = General ODBC for MySQL
Driver = /usr/lib64/libmyodbc5.so
Setup = /usr/lib64/libodbcmyS.so
FileUsage = 1

Рекомендуемые настройки UNIXODBC для PostgreSQL

Установка:

  • в Red Hat Enterprise Linux:
    dnf install postgresql-odbc
    
  • в Debian/Ubuntu:
    См. материалы документации PostgreSQL для загрузки необходимого драйвера базы данных под соответствующую платформу.

Настройка ODBC выполняется путем редактирования файлов odbcinst.ini и odbc.ini. Эти файлы конфигурации можно найти в директории /etc. Файл odbcinst.ini может отсутствовать, и в этом случае его необходимо создать вручную.

Рекомендуемые настройки UNIXODBC для MSSQL

Установка:

  • в Red Hat Enterprise Linux:
    dnf -y install freetds unixODBC
    
  • Debian/Ubuntu: См. материалы документации пользователя FreeTDS для загрузки необходимого драйвера базы данных под соответствующую платформу.

Настройка ODBC выполняется путем редактирования файлов odbcinst.ini и odbc.ini. Эти файлы конфигурации можно найти в директории /etc. Файл odbcinst.ini может отсутствовать, и в этом случае его необходимо создать вручную.