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

15.1 Обзор

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

ODBC - язык программирования на C, промежуточная прослойка API для доступа к системам управления баз данных (DBMS). Концепт ODBC был разработан Microsoft и в дальнейшем портирован на другие платформы.

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

15.2 Установка unixODBC

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

Установка unixODBC с использованием пакетного менеджера yum:

shell> yum -y install unixODBC unixODBC-devel

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

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

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

Например, драйвера MySQL базы данных можно установить с помощью менеджера пакетов yum:

shell> yum install mysql-connector-odbc

15.4 Настройка unixODBC

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

shell> 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>

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

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

  --with-iodbc[=ARG]      use odbc driver against iODBC package [default=no],
         --with-unixodbc[=ARG]   use odbc driver against unixODBC package

Смотрите более подробную информацию о установке Zabbix из исходных кодов.

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

Настройте для мониторинга базы данных элемент данных:

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

Тип Выберите здесь Монитор баз данных.
Ключ Укажите db.odbc.select[уникальное_описание]
Уникальное описание будет служить для идентификации элемента данных в триггерах и тому подобном.
Дополнительные параметры DSN - имя источника данных (как указано в odbc.ini)
user - имя пользователя базы данных (опционально, если пользователь указан в odbc.ini)
password - пароль к базе данных (опционально, если пароль указан в odbc.ini)
sql - SQL запрос
Тип информации Очень важно знать какой тип информации будет возвращаться указанным запросом, то есть выберите корректный тип информации здесь. С некорректным типом информации элемент данных станет неподдерживаемым.

15.7 Важные замечания

  • Запрос не должен выполняться дольше чем указано в параметре Timeout на сервере.
  • Запрос должен возвращать только одно значение.
  • Если запрос возвращает более чем одну колонку, читаться будет только первая колонка.
  • Если запрос возвращает более чем одну строку, читаться будет только первая строка.
  • Команда SQL должна начинаться с select.
  • Команда SQL не должна включать в себя переводы строк.