ODBC мониторинг соответствует типу элемента данных Монитор баз данных в веб-интерфейсе Zabbix.
ODBC - это API на языке программирования Cи к промежуточной прослойке для доступа к системам управления базами данных (DBMS). Концепт ODBC был разработан Microsoft и в дальнейшем портирован на другие платформы.
Zabbix может выполнять запросы к любой базе данных, которая поддерживается ODBC. Чтобы это сделать, Zabbix не подключается напрямую к базам данных, он использует интерфейс ODBC и драйверы, установленные в ODBC. Эта функция позволяет с большей эффективностью мониторить различные базы данных с разнообразными целями - например, проверка специфичных запросов к базе данных, статистика использования и прочее. Zabbix поддерживает unixODBC, которая является одной из наиболее часто используемых реализаций API ODBC с открытым исходным кодом.
Смотрите также известные проблемы, связанные с ODBC проверками.
Рекомендуемый способ установки unixODBC состоит в использовании репозиториев пакетов по умолчанию в операционной системе Linux. В наиболее популярные дистрибутивы Linux unixODBC добавлен в репозитории пакетов по умолчанию. Если он недоступен, вы можете обратиться к домашней странице UnixODBC: http://www.unixodbc.org/download.html.
Установка unixODBC на системы Ubuntu/Debian с помощью менеджера пакетов apt:
Установка unixODBC на системы на базе RedHat/Fedora с помощью менеджера пакетов dnf:
Установка unixODBC на системы на базе SUSE с помощью менеджера пакетов zypper:
Для компиляции Zabbix с поддержкой unixODBC требуется пакет unixodbc-dev либо unixODBC-devel.
Драйвер unixODBC базы данных должен быть установлен для базы данных, которая будет наблюдаться. unixODBC имеет список поддерживаемых баз данных и драйверов: http://www.unixodbc.org/drivers.html. В некоторых дистрибутивах Linux драйвера баз данных включены в репозитории пакетов.
Установка драйвера базы данных MySQL на системы Ubuntu/Debian с помощью менеджера пакетов apt:
Установка драйвера базы данных MySQL на системы на базе RedHat/Fedora с помощью менеджера пакетов dnf:
Установка драйвера базы данных MySQL на системы на базе SUSE с помощью менеджера пакетов zypper:
Настройка ODBC выполняется путём редактирования файлов odbcinst.ini и odbc.ini. Для проверки местоположения этих файлов введите:
odbcinst.ini используется для перечисления установленных драйверов баз данных ODBC:
Подробная информация:
Атрибут | Описание |
---|---|
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):
isql test
+---------------------------------------+
| Connected! |
| |
| sql-statement |
| help [tablename] |
| quit |
| |
+---------------------------------------+
Для включения поддержки ODBC, Zabbix должен быть скомпилирован со следующим флагом:
Смотрите более подробную информацию о установке Zabbix из исходных кодов.
Настройка элемента данных для мониторинга базы данных.
Все обязательные поля ввода отмечены красной звёздочкой.
Специально для элементов данных мониторинга баз данных вы должны указать:
Тип | Выберите здесь Монитор баз данных. |
Ключ | Введите один из двух поддерживаемых ключей элементов данных: db.odbc.select[<уникальное короткое описание>,<dsn>,<строка подключения>] - этот элемент данных предназначен для получения одного значения, то есть первого столбца первой строки из результата SQL запроса. Если запрос возвращает более одного столбца, будет прочитан только перваый столбец. Если запрос возвращает более одной строки, будет прочитана только первая строка. db.odbc.get[<уникальное короткое описание>,<dsn>,<строка подключения>] - этот элемент данных способен возвращать несколько строк / столбцов в формате JSON. Таким образом, его можно использовать основным элементом данных, который собирает все данные за один системный вызов, а предварительную обработку JSONPath можно использовать в зависимых элементах данных для извлечения отдельных значений. Для получения более подробных сведений смотрите пример возвращаемого формата, использованного в низкоуровневом обнаружении. Этот элемент данных поддерживается с Zabbix 4.4. Уникальное описание будет служить для идентификации элемента данных в триггерах и т.п. Хотя dsn и строка подключения опциональные параметры, по крайней мере один из них должен присутствовать. Если заданы оба параметра - и имя источника данных (DSN), и строка подключения, - то DSN будет игнорироваться.Имя источника данных, если используется, необходимо указать в точности как указано в odbc.ini. Строка подключения может содержать специфичные для драйверов аргументы. Пример (подключение с использованием MySQL ODBC driver 5): => db.odbc.get[MySQL example,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"] |
Имя пользователя | Введите имя пользователя для доступа к базе данных Этот параметр необязателен, если пользователь указан в odbc.ini. Если используется строка подключения и поле Имя пользователя непустое, тогда имя пользователя добавляется к строке подключения как UID=<пользователь> |
Пароль | Введите пароль пользователя для доступа к базе данных Этот параметр необязателен, если пароль указан в odbc.ini. Если используется строка подключения и поле Пароль непустое, тогда пароль добавляется к строке подключения как PWD=<пароль> .Начиная с версии Zabbix 6.0.34, в этом поле поддерживаются специальные символы. До версии 6.0.34, если пароль содержал точку с запятой, его необходимо было заключить в фигурные скобки, например: {P?;)*word} . После 6.0.34 заключение в фигурные скобки пароля в этом случае всё ещё поддерживается, но не является обязательным.Пароль будет добавлен к строке подключения после имени пользователя как UID=<username>;PWD={P?;)*word} . Чтобы протестировать полученную строку, можно выполнить следующую команду: isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD={P?;)*word}' |
SQL запрос | Введите необходимый SQL запрос. Обратите внимание, что для элемента данных db.odbc.select[] запрос должен возвращать только одно значение. |
Тип информации | Очень важно знать какой тип информации будет возвращаться заданным запросом, поэтому выберите здесь корректный тип информации. С некорректным типом информации элемент данных станет неподдерживаемым. |
select ...
. Синтаксис запроса зависит от РСУБД, которая будет его обрабатывать. Синтаксис запроса к хранимой процедуре должен начинаться с ключевого слова call
.Сообщения об ошибках ODBC структурированы по полям для предоставления подробной информации. Например, сообщение об ошибке может выглядеть следующим образом:
Cannot execute ODBC query: [SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]
Cannot execute ODBC query
» — сообщение Zabbix[SQL_ERROR]
» — код, возвращаемый ODBC[42601]
» — SQLState[7]
» — исходный код ошибки[ERROR: syntax error at or near ";"; Error while executing the query]
» — исходное сообщение об ошибкеОбратите внимание, что длина сообщения об ошибке ограничена 2048 байтами, поэтому сообщение может быть усечено. Если имеется более одной диагностической записи ODBC, Zabbix пытается их скомпоновать (разделяя символом |
), насколько позволяет ограничение по длине.