ODBC надгледање одговара типу ставке Надгледање базе података у Zabbix корисничком интерфејсу.
ODBC је API средњег софтвера програмског језика C за приступ системима за управљање базама података (DBMS). ODBC концепт је развио Microsoft и касније пренет на друге платформе.
Zabbix може да тражи било коју базу података коју подржава ODBC. Да би то урадио, Zabbix се не повезује директно са базама података, већ користи ODBC интерфејс и сет драјвера горе у ODBC-у. Ово омогућава ефикасније праћење различитих база података за више намена (на пример, провера одређених редова базе података, статистике коришћења, итд.).
Zabbix подржава unixODBC, који је једна од најчешће коришћених имплементација ODBC API-ја отвореног кода.
Погледајте такође: познати проблеми за ODBC провере.
Предложени начин инсталирања unixODBC-а је коришћење подразумеваних спремишта пакета оперативног система Linux. У најпопуларнијим Linux дистрибуцијама, unixODBC је подразумевано укључен у спремиште пакета. Ако пакети нису доступни, изворне датотеке се могу добити на почетној страници unixODBC-а : http://www.unixodbc.org/download.html.
Да бисте инсталирали unixODBC, користите менаџер пакета за систем вашег избор:
# For Ubuntu/Debian systems:
apt install unixodbc unixodbc-dev
# For RedHat/Fedora-based systems:
dnf install unixODBC unixODBC-devel
# For SUSE-based systems:
zypper in unixODBC-devel
unixodbc-dev
или unixODBC-devel
пакет је неопходан за компајлирање Zabbix-а са подршком за unixODBC . Да бисте омогућили ODBC подршку, Zabbix би требало да се компајлира са следећом опцијом конфигурације:
--with-unixodbc[=ARG] # Користи ODBC драјвер против unixODBC пакета.
UnixODBC драјвер за базу података треба да буде инсталиран за базу података која ће се надгледати. За листу подржаних база података и драјвера, погледајте почетну страницу unixODBC: http://www.unixodbc.org/drivers.html.
У неким дистрибуцијама Linux, драјвери базе података су укључени у спремишта пакета.
Да бисте инсталирали MySQL unixODBC драјвер базе података, користите менаџер пакета за систем по вашем избору:
# For Ubuntu/Debian системе:
apt install odbc-mariadb
# For RedHat/Fedora-based системе:
dnf install mariadb-connector-odbc
# For SUSE-based системе:
zypper install mariadb-connector-odbc
Да бисте инсталирали драјвер базе података без менаџер пакета, погледајте MySQL документацију за mysql-connector-odbc
или MariaDB документацију за mariadb-connector-odbc
.
Да бисте инсталирали PostgreSQL unixODBC драјвер базе података, користите менаџер пакета за систем по вашем избору:
# For Ubuntu/Debian системе:
apt install odbc-postgresql
# For RedHat/Fedora-based системе:
dnf install postgresql-odbc
# For SUSE-based системе:
zypper install psqlODBC
Да бисте инсталирали драјвер базе података без пакета менаџера, погледајте PostgreSQL документацију.
Да бисте инсталирали драјвер за базу података unixODBC, погледајте Oracle документацију.
Да бисте инсталирали управљачки програм базе података MSSQL unixODBC за Ubuntu/Debian системе, користите менаџер пакета за систем по вашем избору:
# For Ubuntu/Debian системи:
apt install tdsodbc
# For RedHat/Fedora-based системи (EPEL packages: https://docs.fedoraproject.org/en-US/epel/):
dnf install epel-release
dnf install freetds
# For SUSE-based системи:
zypper install libtdsodbc0
Да бисте инсталирали драјвер базе података без менаџера пакета, погледајте FreeTDS кориснички водич.
Да бисте конфигурисали unixODBC, морате да уредите датотеке odbcinst.ini
и odbc.ini
. Можете да проверите локацију ових датотека тако што ћете извршити следећу команду:
Резултат команде треба да садржи информације то је слично следећем:
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
Датотека odbcinst.ini
наводи инсталиране драјвере ODBC базе података. Ако недостаје ODBC
, потребно је да га креирате ручно.
Parameter | Description |
---|---|
TEST_MYSQL | Име драјвера базе података. |
Description | Опис драјвера базе података. |
Driver | Локација библиотеке драјвера базе података. |
FileUsage | Одређује да ли драјвер базе података подржава повезивање са сервером базе података без подршка за приступ локалним датотекама (0); подржава читање података из датотека (1); подржава писање података у датотеке (2). |
Threading | Ниво серијализације нити. Подржано за PostgreSQL. Од 1.6, ако је управљачки програм направљен са подршком нити, можете додати још један унос драјвера. |
Датотека odbc.ini
се користи за конфигурисање извора података.
[TEST_MYSQL]
Description=MySQL Test Database
Driver=mysql
Server=127.0.0.1
User=root
Password=
Port=3306
Socket=
Database=zabbix
Parameter | Description |
---|---|
TEST_MYSQL | Име извора података (DSN). |
Description | Опис извора података. |
Driver | Назив драјвера базе података (као што је наведено у odbcinst.ini ). |
Server | IP/DNS сервера базе података. |
User | Корисник базе података за конекцију. |
Password | Корисничка лозинка базе података. |
Port | Порт за везу са базом података. |
Socket | Утичница за везу са базом података. |
Database | Име базе података. |
За друге могуће опције конфигурационих параметара, погледајте MySQL документација.
Датотека odbc.ini
за PostgreSQL може да садржи додатне параметре:
[TEST_PSQL]
Description=PostgreSQL Test Database
Driver=postgresql
Username=zbx_test
Password=zabbix
Servername=127.0.0.1
Database=zabbix
Port=5432
ReadOnly=No
Protocol=7.4+
ShowOidColumn=No
FakeOidIndex=No
RowVersioning=No
ShowSystemTables=No
Fetch=Yes
BoolsAsChar=Yes
SSLmode=Require
ConnSettings=
|Parameter|Description| |--|- -------| |ReadOnly|Одређује да ли веза базе података дозвољава само операције читања (упита SELECT') и ограничава модификације (изјаве
INSERT', UPDATE' и
DELETE'); корисно за сценарије у којима подаци треба да остану непромењени.| | Protocol |Верзија позадинског протокола PostgreSQL (занемарује се када се користе SSL везе).| |ShowOidColumn|Одређује да ли да се укључи ID објекта (OID) у SQLColumns.| |FakeOidIndex|Одређује да ли да се креира лажни јединствени индекс на OID-у.| |RowVersioning|Одређује да ли да бисте омогућили апликацијама да открију да ли су други корисници променили податке док покушавате да ажурирате ред. Имајте на уму да овај параметар може да убрза процес ажурирања, пошто, да би се ажурирао ред, свака колона не мора да буде наведена у клаузули WHERE'.| |ShowSystemTables|Одређује да ли драјвер базе података треба да третира системске табеле као обичне табеле у SQLTables; корисно за приступачност, омогућавајући видљивост у системским табелама.| | Fetch |Одређује да ли драјвер треба аутоматски да користи децларе цурсор/фетцх за руковање
SELECT' изјавама и одржава кеш од 100 редова.| |BoolsAsChar|Контролише мапирање Булових типова.
Ако је постављено на "Да", Булови се мапирају у SQL_CHAR
; у супротном, они су мапирани у SQL_BIT
.| |SSLmode|Одређује SSL режим за везу.| |ConnSettings|Додатна подешавања се шаљу на позадину приликом повезивања.|
Да бисте тестирали да ли ODBC веза функционише успешно, можете користити услужни програм isql
(укључен у пакет unixODBC
):
isql test
+---------------------------------------+
| Connected! |
|. |
| sql-statement. |
| help [tablename]. |
| quit. |
|. |
+---------------------------------------+
Конфигуришите Надгледање базе података ставка.
Сва обавезна поља за унос су означена црвеном звездицом.
За ставке надгледања базе података, морате навести:
||| |--|------- -| |* Type|Овде изаберите "Надгледање базе података".| | Key|Унесите један од подржаних кључева ставке :
db.odbc.select[] - ова ставка враћа једну вредност (прва колона првог реда SQL упита резултат);
db.odbc.get[] - ова ставка враћа више редова/колона у JSON формату;
db.odbc.discovery[] - ова ставка враћа податке о откривању ниског нивоа.| |User name|Унесите корисничко име базе података (до 255 знакова).
Овај параметар је опционалан ако је корисничко име базе података наведено у датотеци odbc.ini
.<бр>Ако се користи низ везе, а поље Корисничко име* није празно, онда се се додаје низу везе као UID =<user>
.| |* Password|Унесите корисничку лозинку базе података (до 255 знакова).
Овај параметар је опционалан ако је лозинка наведено у датотеци odbc.ini
.
Ако се користи низ везе, а поље Password* није празно, онда се додаје низу везе као PWD =<<password>>
.
Од Zabbix-а 7.0.3, специјални знакови су подржани у овом пољу.
Пре Zabbix-а 7.0.3, ако лозинка садржи тачку-зарез, требало би да буде умотано у витичасте заграде, на пример, {P?;)*word}
. Након 7.0.3, умотавање лозинке у овом случају је и даље подржано, али није неопходно. Лозинка ће бити додата низу везе после корисничког имена као UID =<<username>>;PWD={P?;)*word}
. Да бисте тестирали резултујући стринг, можете покренути следећу команду:isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD={P?;)*word}'
| |SQL query|Унесите SQL упит.<бр>Имајте на уму да са db.odbc.select[]
, упит мора вратити само једну вриједност.| |Type of information|Изаберите тип информација који ће бити враћен упитом овде.
Ако је тип информације одабран погрешно, ставка ће постати неподржана.|
Важне напомене
Ставке за праћење базе података ће постати неподржане ако се не покрену процеси odbc poller у конфигурацији сервера или проксија. Да бисте активирали ODBC полерa, поставите параметар StartODBCPollers
у конфигурацији Zabbix сервер датотеку или, за провере које обавља прокси, у Zabbix-у прокси конфигурациона датотека.
Вредност параметра * Timeout* у обрасцу конфигурација ставке се користи као временско ограничење за пријаву на ODBC и временско ограничење за извршење упита. Имајте на уму да се ове поставке временског ограничења могу занемарити ако их инсталирани ODBC драјвер не подржава.
SQL команда мора да врати скуп резултата као и сваки упит који користи наредбу select
. Синтакса упита зависиће од RDBMS-а који ће их обрадити. Синтакса захтева за процедуру складиштења мора бити покренута кључном речи call
.
Параметри без угаоних заграда су обавезни. Параметри означени угаоним заградама < > су опциони.
Враћа једну вредност, односно прву колону првог реда резултата SQL упита.
Враћана вредност: У зависности од SQL упита.
Параметри:
odbc.ini
);Коментари:
dsn
и connection string
опциони параметри, бар један од њих је обавезан; ако су оба дефинисана, dsn
ће бити занемарен.
Трансформише резултат SQL упита у JSON низ.
Повратна вредност: * JSON објекат*.
Параметри:
odbc.ini
);Коментари:
dsn
и connection string
опциони параметри, бар један од њих је обавезан; ако су оба дефинисана, dsn
ће бити занемарен.Пример:
# Веза за MySQL ODBC драјвер 5: db.odbc.get[MySQL пример,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"]
Трансформише резултат SQL упита у JSON низ, који се користи за откривање ниског нивоа. Имена колона из резултата упита се претварају у имена макроа за откривање ниског нивоа упарена са откривене вредности поља. Ови макрои се могу користити за креирање ставке, покретача итд. прототипови.
Повратна вредност: JSON object.
Параметри:
odbc.ini
);Коментари:
dsn
и connection string
су опциони параметри, бар један од њих је обавезан; ако су оба дефинисана, dsn
ће бити занемарен.ODBC поруке о грешци су структуриране у поља како би пружиле детаљне информације. На пример, порука о грешци може изгледати овако:
Не може се извршити ODBC упит: [SQL_ERROR]:[42601][7][ERROR: грешка у синтакси на или близу ";"; Грешка при извршавању упита]
Не могу да извршим ODBC упит
" - Zabbix порука -"[SQL_ERROR]
" - ODBC повратни код[42601]
" - SQLState[7]
" - Изворни код грешке[ГРЕШКА: грешка у синтакси на или близу ";"; Грешка при извршавању куери]
" - Изворна порука о грешциИмајте на уму да је дужина поруке о грешци ограничена на 2048 бајтова, тако да порука може бити скраћена. Ако постоји више од једног ODBC дијагностичког записа, Zabbix покушава да их споји (одвојено са |
) до краја како граница дужине дозвољава.