[comment]: # translation:outdated

[comment]: # ({68c88a1c-68c88a1c})
# 14 ODBC надгледање

[comment]: # ({/68c88a1c-68c88a1c})

[comment]: # ({3fce4dab-b5170fd3})
#### Преглед

ODBC надгледање одговара типу ставке **Надгледање базе података** у Zabbix корисничком интерфејсу.

ODBC је API средњег софтвера програмског језика C за приступ системима за управљање базама података (DBMS).
ODBC концепт је развио Microsoft и касније пренет на друге платформе.

Zabbix може да тражи било коју базу података коју подржава ODBC. Да би то урадио, Zabbix се не повезује директно са базама података, већ користи ODBC интерфејс и сет драјвера горе у ODBC-у. Ово омогућава ефикасније праћење различитих база података за више намена (на пример, провера одређених редова базе података, статистике коришћења, итд.).

Zabbix подржава unixODBC, који је једна од најчешће коришћених имплементација ODBC API-ја отвореног кода.

::: noteimportant
Погледајте такође: [познати проблеми](/manual/installation/known_issues#odbc_checks) за ODBC провере.
:::

[comment]: # ({/3fce4dab-b5170fd3})

[comment]: # ({863746ff-bf6fd8ba})
#### Инсталирање unixODBC-а

Предложени начин инсталирања unixODBC-а је коришћење подразумеваних спремишта пакета оперативног система Linux.
У најпопуларнијим Linux дистрибуцијама, unixODBC је подразумевано укључен у спремиште пакета. Ако пакети нису доступни, изворне датотеке се могу добити на почетној страници unixODBC-а : <http://www.unixodbc.org/download.html>.

Да бисте инсталирали unixODBC, користите менаџер пакета за систем вашег избор:

```bash
# 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
```

::: noteimportant
`unixodbc-dev` или `unixODBC-devel` пакет је неопходан за компајлирање Zabbix-а са подршком за unixODBC . Да бисте омогућили ODBC подршку, Zabbix би требало да се компајлира са следећом [опцијом конфигурације](/manual/installation/install#configure-the-sources):<br><br>

   --with-unixodbc[=ARG] # Користи ODBC драјвер против unixODBC пакета.

:::

[comment]: # ({/863746ff-bf6fd8ba})

[comment]: # ({07af6a39-eea09ed7})
#### Инсталирање unixODBC драјвера

UnixODBC драјвер за базу података треба да буде инсталиран за базу података која ће се надгледати. За листу подржаних база података и драјвера, погледајте почетну страницу unixODBC: <http://www.unixodbc.org/drivers.html>.

::: noteclassic
У неким дистрибуцијама Linux, драјвери базе података су укључени у спремишта пакета.
:::

[comment]: # ({/07af6a39-eea09ed7})

[comment]: # ({d49fdb52-e1911043})
##### MySQL

Да бисте инсталирали MySQL unixODBC драјвер базе података, користите менаџер пакета за систем по вашем избору:

```bash
# 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 документацију](https://dev.mysql.com/downloads/connector/odbc/) за `mysql-connector-odbc` или [MariaDB документацију](https://mariadb.com/kb/en/mariadb-connector-odbc/) за `mariadb-connector-odbc`.

[comment]: # ({/d49fdb52-e1911043})

[comment]: # ({1b513583-0842efba})
##### PostgreSQL

Да бисте инсталирали PostgreSQL unixODBC драјвер базе података, користите менаџер пакета за систем по вашем избору:

```bash
# For Ubuntu/Debian системе:
apt install odbc-postgresql

# For RedHat/Fedora-based системе:
dnf install postgresql-odbc

# For SUSE-based системе:
zypper install psqlODBC
```

Да бисте инсталирали драјвер базе података без пакета менаџера, погледајте [PostgreSQL документацију](https://www.postgresql.org/download/linux/).

[comment]: # ({/1b513583-0842efba})

[comment]: # ({b4e6cb7e-88097de9})
##### Oracle

Да бисте инсталирали драјвер за базу података unixODBC, погледајте [Oracle документацију](https://www.oracle.com/database/technologies/releasenote-odbc-ic.html).

[comment]: # ({/b4e6cb7e-88097de9})

[comment]: # ({d9e46b47-f1ce859d})
##### MSSQL

Да бисте инсталирали управљачки програм базе података MSSQL unixODBC за Ubuntu/Debian системе, користите менаџер пакета за систем по вашем избору:

```bash
# 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 кориснички водич](http://www.freetds.org/userguide/).

[comment]: # ({/d9e46b47-f1ce859d})

[comment]: # ({f24fde2e-b15e771b})
#### Конфигурисање unixODBC-а

Да бисте конфигурисали unixODBC, морате да уредите датотеке `odbcinst.ini` и `odbc.ini`.
Можете да проверите локацију ових датотека тако што ћете извршити следећу команду:

```bash
odbcinst -j
```

Резултат команде треба да садржи информације то је слично следећем:

```bash
unixODBC 2.3.9
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
```

[comment]: # ({/f24fde2e-b15e771b})

[comment]: # ({72609b6e-d99c28e7})
##### odbcinst.ini

Датотека `odbcinst.ini` наводи инсталиране драјвере ODBC базе података.
Ако недостаје `ODBC `, потребно је да га креирате ручно.

```ini
[TEST_MYSQL]
Description=ODBC for MySQL
Driver=/usr/lib/libmyodbc5.so
FileUsage=1
```

|Parameter|Description|
|--|--------|
| TEST_MYSQL |Име драјвера базе података.|
| Description |Опис драјвера базе података.|
| Driver |Локација библиотеке драјвера базе података.|
|FileUsage|Одређује да ли драјвер базе података подржава повезивање са сервером базе података без подршка за приступ локалним датотекама (0); подржава читање података из датотека (1); подржава писање података у датотеке (2).|
| Threading |Ниво серијализације нити. Подржано за PostgreSQL.<br>Од 1.6, ако је управљачки програм направљен са подршком нити, можете додати још један унос драјвера.|

[comment]: # ({/72609b6e-d99c28e7})

[comment]: # ({f10754c8-207ccff7})
##### odbc.ini

Датотека `odbc.ini` се користи за конфигурисање извора података. Имајте на уму да листа подржаних параметара зависи од драјвера базе података (на пример, Oracle базе података могу користити ServerName уместо Server, итд.).

```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 документација](https://dev.mysql.com/doc/connector-odbc/en/connector-odbc-configuration-connection-parameters.html).

[comment]: # ({/f10754c8-207ccff7})

[comment]: # ({9cc86ee1-fed5e483})
Датотека `odbc.ini` за PostgreSQL може да садржи додатне параметре:

```ini
[TEST_PSQL]
Description=PostgreSQL тест база података
Driver=postgresql
Username=zbx_test
Password=zabbix
Servername=127.0.0.1
Database=zabbix
Port=5432
ReadOnly=Не
Protocol=7.4+
ShowOidColumn=Не
FakeOidIndex=Не
RowVersioning=Не
ShowSystemTables=Не
Fetch=Да
BoolsAsChar=Да
SSLmode=Захтева
ConnSettings=
```

|Parameter|Description|
|--|--------|
|ReadOnly|Одређује да ли веза са базом података дозвољава само операције читања (упити `SELECT`) и ограничава модификације (наредбе `INSERT`, `UPDATE` и `DELETE`); корисно за сценарије где подаци треба да остану непромењени.|
| Protocol |Верзија протокола PostgreSQL бекенда (игнорише се при коришћењу SSL веза).|
|ShowOidColumn|Одређује да ли треба укључити ИД објекта (OID) у SQLКолоне.|
|FakeOidIndex|Одређује да ли треба креирати лажни јединствени индекс на OID-у.|
|RowVersioning|Одређује да ли треба омогућити апликацијама да детектују да ли су други корисници изменили податке док покушавате да ажурирате ред. Имајте на уму да овај параметар може убрзати процес ажурирања, јер, да би се ажурирао ред, није потребно навести сваку колону у клаузули `WHERE`.|
|ShowSystemTables|Одређује да ли драјвер базе података треба да третира системске табеле као регуларне табеле у SQLТабелама; корисно за приступачност, омогућавајући видљивост системских табела.|
| Fetch |Одређује да ли драјвер треба аутоматски да користи декларацију курсора/дохвати за руковање `SELECT` наредбама и одржавање кеша од 100 редова.|
|BoolsAsChar|Контролише мапирање булових типова.<br>Ако је подешено на "Да", булови типови се мапирају на `SQL_CHAR`; у супротном, мапирају се на `SQL_BIT`.|
|SSLmode|Одређује SSL режим за везу.|
|ConnSettings|Додатна подешавања се шаљу на бекенд приликом повезивања.|

[comment]: # ({/9cc86ee1-fed5e483})

[comment]: # ({2e87263e-93c68b7f})
##### Тестирање ODBC везе

Да бисте тестирали да ли ODBC веза функционише успешно, можете користити услужни програм `isql ` (укључен у пакет `unixODBC`):

```bash
isql test
+---------------------------------------+
| Connected!     |
|.    |
| sql-statement.    |
| help [tablename].    |
| quit.    |
|.  |
+---------------------------------------+
```

[comment]: # ({/2e87263e-93c68b7f})

[comment]: # ({458da043-ca784f43})
#### Конфигурација ставке у Zabbix кориснички интерфејс

Конфигуришите **надгледање базе података** [item](/manual/config/items/item#overview).

![](../../../../../assets/en/manual/config/items/itemtypes/db_monitor.png){width="600"}

Сва обавезна поља за унос су означена црвеном звездицом.

За ставке надгледања базе података, морате навести:

| | |
|--|--------|
|*Тип*|Овде изаберите "Надгледање базе података".|
|*Кључ*|Унесите један од подржаних кључева ставке:<br>[**db.odbc.select[]**](#db.odbc.select) - ова ставка враћа једну вредност (прва колона првог реда резултата SQL упита);<br>[**db.odbc.get[]**](#db.odbc.get) - ова ставка враћа више редова/колона у JSON формату;<br>[**db.odbc.discovery[]**](#db.odbc.discovery) - ова ставка враћа податке о откривању ниског нивоа.|
|*Корисничко име*|Унесите корисничко име базе података (до 255 знакова).<br>Овај параметар је опционалан ако је корисничко име базе података наведено у датотеци `odbc.ini`.<br>Ако се користи стринг за повезивање и поље *Корисничко име* није празно, онда се додаје стрингу за повезивање као `UID=<user>`.|
|*Лозинка*|Унесите лозинку корисника базе података (до 255 знакова).<br>Овај параметар је опционалан ако је лозинка наведена у датотеци `odbc.ini`.<br>Ако се користи стринг за повезивање и поље *Лозинка* није празно, онда се додаје стрингу за повезивање као `PWD=<password>`.<br>Специјални знакови су подржани у овом пољу.<br>Лозинка ће бити додата стрингу за повезивање после корисничког имена, на пример `UID=<username>;PWD=P?;)*реч`.<br>Да бисте тестирали резултујући стринг, можете покренути следећу команду:<br>`isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD=P?;)*реч'`|
|*SQL упит*|Унесите SQL упит.<br>Имајте на уму да са `db.odbc.select[]`, упит мора вратити само једну вредност.|
|*Врста информација*|Овде изаберите врсту информација које ће упит вратити.<br>Ако је врста информација погрешно изабрана, ставка неће бити подржана.|

[comment]: # ({/458da043-ca784f43})

[comment]: # ({db5ed945-06f9d2eb})
**Важне напомене**

-   Ставке за праћење базе података ће постати неподржане ако се не покрену процеси *odbc poller* у конфигурацији сервера или проксија.
   Да бисте активирали ODBC полерa, поставите параметар `StartODBCPollers` у конфигурацији Zabbix [сервер](/manual/appendix/config/zabbix_server) датотеку или, за провере које обавља прокси, у Zabbix-у [прокси](/manual/appendix/config/zabbix_proxy) конфигурациона датотека.

-   Вредност параметра * Timeout* у обрасцу [конфигурација ставке](/manual/config/items/item#configuration) се користи као временско ограничење за пријаву на ODBC и временско ограничење за извршење упита.
   Имајте на уму да се ове поставке временског ограничења могу занемарити ако их инсталирани ODBC драјвер не подржава.
-   SQL команда мора да врати скуп резултата као и сваки упит који користи наредбу `select `. 
   Синтакса упита зависиће од RDBMS-а који ће их обрадити.
   Синтакса захтева за процедуру складиштења мора бити покренута кључном речи `call `.

[comment]: # ({/db5ed945-06f9d2eb})

[comment]: # ({99bf7f73-0188aaa2})
#### Кључни детаљи ставке

Параметри без угаоних заграда су обавезни. Параметри означени угаоним заградама **<** **>** су опциони.

[comment]: # ({/99bf7f73-0188aaa2})

[comment]: # ({1a75e5c0-13edfcd4})
##### db.odbc.select[<unique short description>,<dsn>,<connection string>] {#db.odbc.select}

<br>
Враћа једну вредност, односно прву колону првог реда резултата SQL упита.<br>Враћана вредност: У зависности од SQL упита.

Параметри:

-   **unique short description** - јединствени кратки опис за идентификацију ставке (за употребу у окидачима, итд.);
-   ** dsn** - име извора података (као што је наведено у `odbc.ini`);
-   **connection string** - низ везе (може да садржи аргументе специфичне за драјвер).

Коментари:

-   Иако су `dsn ` и `connection string` опциони параметри, бар један од њих је обавезан; ако су оба дефинисана, `dsn ` ће бити занемарен.
-   Ако упит врати више од једне колоне, чита се само прва колона. Ако упит врати више од једног реда, чита се само први ред.

[comment]: # ({/1a75e5c0-13edfcd4})

[comment]: # ({a6ace17e-ebf5d449})
##### db.odbc.get[<unique short description>,<dsn>,<connection string>] {#db.odbc.get}

<br>
Трансформише резултат SQL упита у JSON низ.<br>
Враћена вредност: *JSON објекат*.

Параметри:

-  **јединствени кратак опис** - јединствени кратак опис за идентификацију ставке (за употребу у окидачима итд.);
-  **dsn** - назив извора података (као што је наведено у `odbc.ini`);
-  **стринг за повезивање** - стринг за повезивање (може садржати аргументе специфичне за драјвер).

Коментари:

- Иако су `dsn` и `стринг за повезивање` опциони параметри, барем један од њих је обавезан; ако су оба дефинисана, `dsn` ће бити игнорисан.
- Може се вратити више редова/колона у JSON формату.
Ова ставка може се користити као главна ставка која прикупља све податке у једном системском позиву, док се JSONPath претходна обрада може користити у зависним ставкама за издвајање појединачних вредности.
За више информација, погледајте [пример](/manual/discovery/low_level_discovery/examples/sql_queries#using-db.odbc.get) враћеног формата, који се користи у откривању ниског нивоа.

Пример:

# Веза за MySQL ODBC драјвер 5:
db.odbc.get[MySQL пример,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"]

[comment]: # ({/a6ace17e-ebf5d449})

[comment]: # ({f6dfe740-c8148c95})

##### db.odbc.discovery[<unique short description>,<dsn>,<connection string>] {#db.odbc.discovery}

<br>
Трансформише резултат SQL упита у JSON низ, који се користи за [откривање ниског нивоа](/manual/discovery/low_level_discovery/examples/sql_queries).
Имена колона из резултата упита се претварају у имена макроа за откривање ниског нивоа упарена са откривене вредности поља.
Ови макрои се могу користити за креирање ставке, покретача итд. прототипови.<br>
Повратна вредност: *JSON object*.

Параметри:

-   **unique short description** - јединствени кратак опис за идентификацију ставке (за употребу у покретачима, итд.);
-   ** dsn** - име извора података (као што је наведено у `odbc.ini`);
-   **сonnection string** - низ везе (може да садржи аргументе специфичне за драјвер).

Коментари:

-   Иако су `dsn ` и `connection string` су опциони параметри, бар један од њих је обавезан; ако су оба дефинисана, `dsn ` ће бити занемарен.

[comment]: # ({/f6dfe740-c8148c95})

[comment]: # ({87547b91-718edfdc})
#### Поруке о грешкама

ODBC поруке о грешкама су структуриране у поља како би пружиле детаљне информације.
На пример, порука о грешци може изгледати овако:

Не може се извршити ODBC упит: [SQL_ERROR]:[42601][7][ГРЕШКА: синтаксичка грешка на или близу ";"; Грешка приликом извршавања упита]

-   "`Не може се извршити ODBC упит`" - Zabbix порука
-   "`[SQL_ERROR]`" - ODBC повратни код
-   "`[42601]`" - SQLState
-   "`[7]`" - Изворни код грешке
-   "`[ГРЕШКА: синтаксичка грешка на или близу ";"; Грешка приликом извршавања упита]`" - Изворна порука о грешци

Имајте на уму да је дужина поруке о грешци ограничена на 2048 бајтова, тако да порука може бити скраћена.
Ако постоји више од једног ODBC дијагностичког записа, Zabbix покушава да их споји (раздвојене са `|`) колико год ограничење дужине дозвољава.

[comment]: # ({/87547b91-718edfdc})
