[comment]: # translation:outdated

[comment]: # ({68c88a1c-68c88a1c})
# 14 ODBC-bewaking

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

[comment]: # ({b5170fd3-b5170fd3})
#### Overzicht

ODBC-monitoring komt overeen met het *Database monitor* itemtype in de Zabbix-frontend.

ODBC is een middle-ware API in de programmeertaal C voor het benaderen van databasebeheersystemen (DBMS). Het ODBC-concept is ontwikkeld door Microsoft en later overgebracht naar andere platforms.

Zabbix kan elke database bevragen die wordt ondersteund door ODBC. Om dit te doen, maakt Zabbix geen directe verbinding met de databases, maar gebruikt het de ODBC-interface en drivers die zijn geconfigureerd in ODBC. Deze functie maakt efficiëntere monitoring van verschillende databases mogelijk voor meerdere doeleinden - bijvoorbeeld het controleren van specifieke database-wachtrijen, gebruiksstatisitieken en dergelijke. Zabbix ondersteunt unixODBC, wat een van de meest gebruikte open source ODBC API-implementaties is.

::: noteimportant
Zie ook de [bekende problemen](/manual/installation/known_issues#odbc_checks) voor ODBC-controles.
:::

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

[comment]: # ({843acd92-bf6fd8ba})
#### unixODBC installeren

De aanbevolen manier om unixODBC te installeren is via de standaard pakketbronnen van het Linux-besturingssysteem. In de meest populaire Linux-distributies is unixODBC standaard opgenomen in de pakketbron. Als het niet beschikbaar is, kan het worden verkregen via de unixODBC-website: <http://www.unixodbc.org/download.html>.

unixODBC installeren op RedHat/Fedora gebaseerde systemen met behulp van de *dnf* pakketbeheerder:

    dnf -y install unixODBC unixODBC-devel

unixODBC installeren op SUSE gebaseerde systemen met behulp van de *zypper* pakketbeheerder:

    zypper in unixODBC-devel

::: noteclassic
Het unixODBC-devel pakket is nodig om Zabbix te compileren met unixODBC ondersteuning.
:::

[comment]: # ({/843acd92-bf6fd8ba})

[comment]: # ({565c66f6-eea09ed7})
#### unixODBC drivers installeren

Een unixODBC database driver moet worden geïnstalleerd voor de database die zal worden gemonitord. unixODBC heeft een lijst van ondersteunde databases en drivers: <http://www.unixodbc.org/drivers.html>. In sommige Linux-distributies zijn database drivers opgenomen in de pakketbronnen. MySQL database driver installeren op RedHat/Fedora gebaseerde systemen met behulp van de *dnf* pakketbeheerder:

    dnf install mysql-connector-odbc

MySQL database driver installeren op SUSE gebaseerde systemen met behulp van de *zypper* pakketbeheerder:

    zypper in MyODBC-unixODBC

[comment]: # ({/565c66f6-eea09ed7})

[comment]: # ({9e4d8046-b15e771b})
#### unixODBC configureren

ODBC-configuratie wordt uitgevoerd door de **odbcinst.ini** en **odbc.ini** bestanden te bewerken. Om de locatie van het configuratiebestand te controleren, typt u:

    odbcinst -j

**odbcinst.ini** wordt gebruikt om de geïnstalleerde ODBC-database drivers op te sommen:

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

Details van parameters:

|Attribuut|Beschrijving|
|--|--------|
|*mysql*|Naam van de database driver.|
|*Description*|Beschrijving van de database driver.|
|*Driver*|Locatie van de database driver-bibliotheek.|

**odbc.ini** wordt gebruikt om gegevensbronnen te definiëren:

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

Details van parameters:

|Attribuut|Beschrijving|
|--|--------|
|*test*|Naam van de gegevensbron (DSN).|
|*Description*|Beschrijving van de gegevensbron.|
|*Driver*|Naam van de database driver - zoals gespecificeerd in odbcinst.ini|
|*Server*|IP/DNS van de database server.|
|*User*|Gebruikersnaam voor databaseverbinding.|
|*Password*|Wachtwoord van de databasegebruiker.|
|*Port*|Verbindingspoort voor de database.|
|*Database*|Naam van de database.|

Om te verifiëren of de ODBC-verbinding succesvol werkt, moet er een verbinding met de database worden getest. Dat kan worden gedaan met het hulpprogramma **isql** (inbegrepen in het unixODBC-pakket):

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

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

[comment]: # ({9f87c9b6-9f87c9b6})
#### Zabbix compileren met ODBC-ondersteuning

Om ODBC-ondersteuning in te schakelen, moet Zabbix worden gecompileerd met de volgende vlag:

    --with-unixodbc[=ARG]   gebruik de odbc-driver met het unixODBC-pakket

::: noteclassic
Lees meer over het installeren van Zabbix vanuit de [broncode](/manual/installation/install#from_the_sources).
:::

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

[comment]: # ({8e2db222-ca784f43})
#### Itemconfiguratie in het Zabbix-frontend

Configureer een database monitoring [item](/manual/config/items/item#overview).

![](../../../../../assets/en/manual/config/items/itemtypes/db_monitor.png)

Alle verplichte invoervelden zijn gemarkeerd met een rode asterisk.

Specifiek voor database monitoring-items moet u het volgende invoeren:

|   |   |
|--|--------|
|*Type*|Selecteer hier *Database monitor*.|
|*Key*|Voer een van de twee ondersteunde item-sleutels in:<br>**db.odbc.select**\[<unieke korte beschrijving>,<dsn>,<verbindingsreeks>\] - dit item is ontworpen om één waarde terug te geven, dat wil zeggen de eerste kolom van de eerste rij van het resultaat van de SQL-query. Als een query meer dan één kolom retourneert, wordt alleen de eerste kolom gelezen. Als een query meer dan één regel retourneert, wordt alleen de eerste regel gelezen.<br>**db.odbc.get**\[<unieke korte beschrijving>,<dsn>,<verbindingsreeks>\] - dit item kan meerdere rijen/kolommen in JSON-formaat retourneren. Hierdoor kan het worden gebruikt als een master-item dat alle gegevens in één systeemaanroep verzamelt, terwijl JSONPath-verwerking kan worden gebruikt in afhankelijke items om individuele waarden te extraheren. Voor meer informatie, zie een [voorbeeld](/manual/discovery/low_level_discovery/examples/sql_queries#using-db.odbc.get) van het geretourneerde formaat dat wordt gebruikt bij low-level discovery. Dit item wordt ondersteund vanaf Zabbix 4.4.<br>De unieke beschrijving wordt gebruikt om het item te identificeren in triggers, enzovoort.<br>Hoewel `dsn` en `verbindingsreeks` optionele parameters zijn, moet ten minste een van beide aanwezig zijn. Als zowel de naam van de gegevensbron (DSN) als de verbindingsreeks zijn gedefinieerd, wordt de DSN genegeerd.<br>De naam van de gegevensbron, indien gebruikt, moet worden ingesteld zoals gespecificeerd in odbc.ini.<br>De verbindingsreeks kan specifieke stuurprogramma-argumenten bevatten.<br><br>Voorbeeld (verbinding voor MySQL ODBC-stuurprogramma 5):<br>=> db.odbc.get\[MySQL example,,"Driver=/usr/local/lib/libmyodbc5a.so;Database=master;Server=127.0.0.1;Port=3306"\]|
|*Gebruikersnaam*|Voer de gebruikersnaam voor de database in<br>Deze parameter is optioneel als de gebruiker is gespecificeerd in odbc.ini.<br>Als de verbindingsreeks wordt gebruikt en het veld *Gebruikersnaam* niet leeg is, wordt het aan de verbindingsreeks toegevoegd als `UID=<gebruiker>`|
|*Wachtwoord*|Voer het wachtwoord voor de databasegebruiker in<br>Deze parameter is optioneel als het wachtwoord is gespecificeerd in odbc.ini.<br>Als de verbindingsreeks wordt gebruikt en het veld *Wachtwoord* niet leeg is, wordt het aan de verbindingsreeks toegevoegd als `PWD=<wachtwoord>`.<br> Als een wachtwoord een puntkomma (;) bevat, moet het worden omgeven door accolades ({ }), bijvoorbeeld: <br> *Wachtwoord*: {P?;)\*woord} (als het werkelijke wachtwoord `P?;)*woord` is) <br><br> Het wachtwoord wordt aan de verbindingsreeks toegevoegd na de gebruikersnaam als:<br>` UID=<gebruikersnaam>;PWD={P?;)*woord} `<br><br> Om de resulterende te testen string, voert u uit: <br>` isql -v -k 'Driver=libmaodbc.so;Database=zabbix;UID=zabbix;PWD={P?;)*word}'`|
|*SQL-query*|Voer de SQL-query in.<br>Merk op dat bij het item `db.odbc.select[]` de query slechts één waarde mag retourneren.|
|*Type informatie*|Het is belangrijk om te weten welk type informatie door de query wordt geretourneerd, zodat dit hier correct wordt geselecteerd. Met een onjuist *type informatie* zal het item niet worden ondersteund.|

[comment]: # ({/8e2db222-ca784f43})

[comment]: # ({06f9d2eb-06f9d2eb})
#### Belangrijke opmerkingen

-   Database monitoring-items worden niet ondersteund als er geen *odbc poller*-processen worden gestart in de server- of proxyconfiguratie. Om ODBC-pollers te activeren, stelt u de parameter *StartODBCPollers* in in het Zabbix [server](/manual/appendix/config/zabbix_server)-configuratiebestand of, voor controles uitgevoerd door een proxy, in het Zabbix [proxy](/manual/appendix/config/zabbix_proxy)-configuratiebestand.
-   Zabbix beperkt de uitvoeringstijd van de query niet. Het is aan de gebruiker om queries te kiezen die in een redelijke tijd kunnen worden uitgevoerd.
-   De waarde van de parameter [Timeout](/manual/appendix/config/zabbix_server) van de Zabbix-server wordt gebruikt als time-out voor het inloggen bij ODBC (let op dat afhankelijk van de ODBC-stuurprogramma's de instelling voor time-out voor het inloggen mogelijk wordt genegeerd).
-   De SQL-opdracht moet een resultaatset retourneren, net als bij een willekeurige query met `select ...`. De querysyntax is afhankelijk van het RDBMS dat ze zal verwerken. De syntaxis van een aanvraag aan een opgeslagen procedure moet beginnen met het trefwoord `call`.

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

[comment]: # ({718edfdc-718edfdc})
#### Foutmeldingen

ODBC-foutmeldingen zijn gestructureerd in velden om gedetailleerde informatie te verstrekken. Bijvoorbeeld:

    Kan ODBC-query niet uitvoeren: [SQL_ERROR]:[42601][7][ERROR: syntax error at or near ";"; Error while executing the query]
    └───────────┬───────────┘  └────┬────┘ └──┬──┘└─────────────────────────────┬─────────────────────────────────────┘
                │                   │         │    └─ Native foutcode            └─ Native foutbericht
                │                   │         └─ SQLState
                └─ Zabbix bericht   └─ ODBC retourcode

Merk op dat de lengte van het foutbericht beperkt is tot 2048 bytes, dus het bericht kan worden afgekapt. Als er meer dan één ODBC-diagnostisch record is, probeert Zabbix ze samen te voegen (gescheiden door `|`) zolang de lengtelimiet dat toelaat.

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