[comment]: # translation:outdated

[comment]: # ({eb22f00a-eb22f00a})
# 16 HTTP agent

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

[comment]: # ({6871ec1a-a236c83a})
#### Overzicht

Dit itemtype maakt gegevenspolling mogelijk met behulp van het HTTP/HTTPS-protocol.
Het is ook mogelijk om te trappen met behulp van de Zabbix-sender of het Zabbix-senderprotocol.

HTTP-itemcontrole wordt uitgevoerd door de Zabbix-server. Wanneer hosts echter
worden gemonitord door een Zabbix-proxy, worden HTTP-itemcontroles uitgevoerd door de proxy.

HTTP-itemcontroles vereisen geen agent die wordt uitgevoerd op een host die wordt
gemonitord.

De HTTP-agent ondersteunt zowel HTTP als HTTPS. Zabbix zal optioneel
redirects volgen (zie de optie *Volg redirects* hieronder). Het maximale aantal
redirects is hard-coded op 10 (met behulp van cURL-optie CURLOPT\_MAXREDIRS).

::: noteimportant
Zabbix-server/-proxy moet aanvankelijk zijn geconfigureerd
met cURL (libcurl) ondersteuning.
:::

[comment]: # ({/6871ec1a-a236c83a})

[comment]: # ({b3693e6e-11697b04})
#### Configuratie

Om een HTTP-item te configureren:

- Ga naar: *Configuration* → *Hosts*
- Klik op *Items* in de rij van de host
- Klik op *Create item*
- Voer de parameters van het item in het formulier in

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

Alle verplichte invoervelden zijn gemarkeerd met een rode asterisk.

De velden die specifieke informatie vereisen voor HTTP-items zijn:

|Parameter|Beschrijving|
|--|--------|
|*Type*|Selecteer hier **HTTP agent**.|
|*Key*|Voer een unieke item key in.|
|*URL*|URL om verbinding mee te maken en gegevens op te halen. Bijvoorbeeld:<br>https://www.example.com<br>http://www.example.com/download<br>Domeinnamen kunnen worden gespecificeerd in Unicode-karakters. Ze worden automatisch omgezet naar ASCII met punycode bij het uitvoeren van de HTTP-controle.<br>De knop *Parse* kan worden gebruikt om optionele queryvelden (zoals ?name=Admin&password=mypassword) van de URL te scheiden, waarbij de attributen en waarden worden verplaatst naar *Query fields* voor automatische URL-codering.<br>Beperkt tot 2048 tekens.<br>Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.<br>Dit stelt de [CURLOPT\_URL](https://curl.haxx.se/libcurl/c/CURLOPT_URL.html) cURL-optie in.|
|*Query fields*|Variabelen voor de URL (zie hierboven).<br>Opgegeven als attribuut- en waardeparen.<br>Waarden worden automatisch URL-gecodeerd. Waarden van macro's worden automatisch opgelost en vervolgens automatisch URL-gecodeerd.<br>Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.<br>Dit stelt de [CURLOPT\_URL](https://curl.haxx.se/libcurl/c/CURLOPT_URL.html) cURL-optie in.|
|*Request type*|Selecteer het soort verzoeksmethode: *GET*, *POST*, *PUT* of *HEAD*|
|*Timeout*|Zabbix zal niet meer tijd besteden aan het verwerken van de URL dan de ingestelde hoeveelheid tijd (1-60 seconden). Eigenlijk definieert deze parameter de maximale tijd voor het maken van een verbinding met de URL en de maximale tijd voor het uitvoeren van een HTTP-verzoek. Daarom zal Zabbix niet meer dan 2 x Timeout seconden besteden aan één controle.<br>Tijdssuffixen worden ondersteund, bijvoorbeeld 30s, 1m.<br>Ondersteunde macro's: gebruikersmacro's, macro's voor low-level discovery.<br>Dit stelt de [CURLOPT\_TIMEOUT](https://curl.haxx.se/libcurl/c/CURLOPT_TIMEOUT.html) cURL-optie in.|
|*Request body type*|Selecteer het type verzoeksblok:<br>**Rauwe gegevens** - aangepast HTTP-verzoeksblok, macro's worden vervangen maar er wordt geen codering uitgevoerd<br>**JSON-gegevens** - HTTP-verzoeksblok in JSON-indeling. Macro's kunnen worden gebruikt als string, nummer, true en false; macro's die als strings worden gebruikt, moeten tussen dubbele aanhalingstekens worden geplaatst. Waarden van macro's worden automatisch opgelost en vervolgens automatisch ontsnapt. Als "Content-Type" niet is gespecificeerd in de kopteksten, wordt standaard "Content-Type: application/json" gebruikt<br>**XML-gegevens** - HTTP-verzoeksblok in XML-indeling. Macro's kunnen worden gebruikt als een tekstknooppunt, attribuut of CDATA-sectie. Waarden van macro's worden automatisch opgelost en vervolgens automatisch ontsnapt in een tekstknooppunt en attribuut. Als "Content-Type" niet is gespecificeerd in de kopteksten, wordt standaard "Content-Type: application/xml" gebruikt<br>*Opmerking* dat het selecteren van *XML-gegevens* libxml2 vereist.|
|*Request body*|Voer het verzoeksblok in.<br>Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.|
|*Headers*|Aangepaste HTTP-kopteksten die worden verzonden bij het uitvoeren van een verzoek.<br>Opgegeven als attribuut- en waardeparen.<br>Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.<br>Dit stelt de [CURLOPT\_HTTPHEADER](https://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html) cURL-optie in.|
|*Required status codes*|Lijst van verwachte HTTP-statuscodes. Als
 Zabbix een code krijgt die niet in de lijst staat, wordt het item niet ondersteund. Als leeg, wordt er geen controle uitgevoerd.<br>Bijvoorbeeld: 200,201,210-299<br>Ondersteunde macro's in de lijst: gebruikersmacro's, macro's voor low-level discovery.<br>Dit gebruikt de [CURLINFO\_RESPONSE\_CODE](https://curl.haxx.se/libcurl/c/CURLINFO_RESPONSE_CODE.html) cURL-optie.|
|*Follow redirects*|Markeer het selectievakje om HTTP-omleidingen te volgen.<br>Dit stelt de [CURLOPT\_FOLLOWLOCATION](https://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html) cURL-optie in.|
|*Retrieve mode*|Selecteer het deel van het antwoord dat moet worden opgehaald:<br>**Body** - alleen de body<br>**Headers** - alleen kopteksten<br>**Body en kopteksten** - body en kopteksten|
|*Convert to JSON*|Kopteksten worden opgeslagen als attribuut- en waardeparen onder de sleutel "header".<br>Als 'Content-Type: application/json' wordt aangetroffen, wordt de body opgeslagen als een object, anders wordt deze opgeslagen als een string, bijvoorbeeld:<br>![Afbeelding](../../../../../assets/en/manual/config/items/itemtypes/http_conv_json.png)|
|*HTTP proxy*|U kunt een HTTP-proxy opgeven om te gebruiken, met het formaat `[protocol://][gebruikersnaam[:wachtwoord]@]proxy.example.com[:poort]`.<br>Het optionele voorvoegsel `protocol://` kan worden gebruikt om alternatieve proxyprotocollen te specificeren (bijv. https, socks4, socks5; zie de [documentatie](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html); de protocolvoorvoegselondersteuning werd toegevoegd in cURL 7.21.7). Zonder opgegeven protocol wordt de proxy behandeld als een HTTP-proxy. Als u het verkeerde protocol opgeeft, mislukt de verbinding en wordt het item niet ondersteund.<br>Standaard wordt poort 1080 gebruikt.<br>Indien gespecificeerd, zal de proxy proxy-gerelateerde omgevingsvariabelen overschrijven zoals http\_proxy, HTTPS\_PROXY. Als niet gespecificeerd, zal de proxy geen proxy-gerelateerde omgevingsvariabelen overschrijven. De ingevoerde waarde wordt "zoals is" doorgegeven, er vindt geen controle plaats.<br>*Opmerking* dat alleen eenvoudige authenticatie wordt ondersteund met een HTTP-proxy.<br>Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.<br>Dit stelt de [CURLOPT\_PROXY](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html) cURL-optie in.|
|*HTTP-authenticatie*|Authenticatietype:<br>**Geen** - geen authenticatie gebruikt.<br>**Basis** - basisauthenticatie wordt gebruikt.<br>**NTLM** - NTLM ([Windows NT LAN Manager)](http://en.wikipedia.org/wiki/NTLM)-authenticatie wordt gebruikt.<br>**Kerberos** - Kerberos-authenticatie wordt gebruikt. Zie ook: [Kerberos configureren met Zabbix](/manual/appendix/items/kerberos).<br>**Digest** - Digest-authenticatie wordt gebruikt.<br>Het selecteren van een authenticatiemethode zal twee extra velden bieden voor het invoeren van een gebruikersnaam en wachtwoord, waarbij gebruikersmacro's en macro's voor low-level discovery worden ondersteund.<br>Dit stelt de [CURLOPT\_HTTPAUTH](https://curl.haxx.se/libcurl/c/CURLOPT_HTTPAUTH.html) cURL-optie in.|
|*SSL-verifieer peer*|Markeer het selectievakje om het SSL-certificaat van de webserver te verifiëren. Het servercertificaat wordt automatisch overgenomen uit de locatie van de systeembrede certificeringsinstantie (CA). U kunt de locatie van CA-bestanden overschrijven met de Zabbix server- of proxy-configuratieparameter 
 SSLCALocation.<br>Dit stelt de [CURLOPT\_SSL\_VERIFYPEER](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html) cURL-optie in.|
|*SSL-verifieer host*|Markeer het selectievakje om te verifiëren dat het veld Common Name of het veld Subject Alternate Name van het certificaat van de webserver overeenkomt.<br>Dit stelt de [CURLOPT\_SSL\_VERIFYHOST](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html) cURL-optie in.|
|*SSL-certificaatbestand*|Naam van het SSL-certificaatbestand dat wordt gebruikt voor clientauthenticatie. Het certificaatbestand moet in PEM^1^-indeling zijn. Als het certificaatbestand ook de privésleutel bevat, laat dan het veld SSL-sleutelbestand leeg. Als de sleutel is versleuteld, specificeert u het wachtwoord in het veld SSL-sleutelwachtwoord. De directory die dit bestand bevat, wordt gespecificeerd door de Zabbix server- of proxy-configuratieparameter SSLCertLocation.<br>Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.<br>Dit stelt de [CURLOPT\_SSLCERT](http://curl.haxx.se/libcurl/c/CURLOPT_SSLCERT.html) cURL-optie in.|
|*SSL-sleutelbestand*|Naam van het SSL-privésleutelbestand dat wordt gebruikt voor clientauthenticatie. Het privésleutelbestand moet in PEM^1^-indeling zijn. De directory die dit bestand bevat, wordt gespecificeerd door de Zabbix server- of proxy-configuratieparameter SSLKeyLocation.<br>Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.<br>Dit stelt de [CURLOPT\_SSLKEY](http://curl.haxx.se/libcurl/c/CURLOPT_SSLKEY.html) cURL-optie in.|
|*SSL-sleutelwachtwoord*|Wachtwoord voor het privésleutelbestand voor SSL.<br>Ondersteunde macro's: gebruikersmacro's, macro's voor low-level discovery.<br>Dit stelt de [CURLOPT\_KEYPASSWD](http://curl.haxx.se/libcurl/c/CURLOPT_KEYPASSWD.html) cURL-optie in.|
|*Trapping inschakelen*|Met dit selectievakje gemarkeerd, zal het item ook fungeren als [trapper-item](/manual/config/items/itemtypes/trapper) en zal het gegevens accepteren die naar dit item zijn gestuurd door Zabbix-sender of met behulp van het Zabbix-senderprotocol.|
|*Toegestane hosts*|Alleen zichtbaar als het selectievakje *Trapping inschakelen* is gemarkeerd.<br>Lijst van komma-gescheiden IP-adressen, optioneel in CIDR-notatie, of DNS-namen.<br>Indien opgegeven, worden inkomende verbindingen alleen geaccepteerd van de hier vermelde hosts.<br>Als IPv6-ondersteuning is ingeschakeld, worden '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' op dezelfde manier behandeld en laat '::/0' elk IPv4- of IPv6-adres toe.<br>'0.0.0.0/0' kan worden gebruikt om elk IPv4-adres toe te staan.<br>Let op, "IPv4-compatibele IPv6-adressen" (0000::/96 prefix) worden ondersteund maar zijn verouderd volgens [RFC4291](https://tools.ietf.org/html/rfc4291#section-2.5.5).<br>Voorbeeld: 127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1-10.1-255, ::1,2001:db8::/32, mysqlserver1, zabbix.example.com, {HOST.HOST}<br>Spaties en [gebruikersmacro's](/manual/config/macros/user_macros) zijn toegestaan in dit veld.<br>Hostmacro's: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} zijn toegestaan in dit veld.|

::: notetip
Als het veld *HTTP-proxy* leeg wordt gelaten, is een andere manier
om een HTTP-proxy te gebruiken, het instellen van proxy-gerelateerde omgevingsvariabelen.

Voor HTTP - stel de `http_proxy` omgevingsvariabele in voor de Zabbix
servergebruiker. Bijvoorbeeld:\
`http_proxy=http://proxy_ip:proxy_port`.

Voor HTTPS - stel de `HTTPS_PROXY` omgevingsvariabele in. Bijvoorbeeld:\
`HTTPS_PROXY=http://proxy_ip:proxy_port`. Meer details zijn beschikbaar via
een shell-opdracht: *\# man curl*.
:::

::: noteimportant
 \[1\] Zabbix ondersteunt certificaat- en privésleutelbestanden
alleen in PEM-indeling. In het geval dat uw certificaat- en privésleutelgegevens in PKCS \#12-indeling (meestal met de extensie \*.p12 of
\*.pfx) staan, kunt u het PEM-bestand ervan genereren met behulp van de volgende
opdrachten:

    openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
    openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key


:::

[comment]: # ({/b3693e6e-11697b04})

[comment]: # ({4c860844-4c860844})
#### Voorbeelden

[comment]: # ({/4c860844-4c860844})

[comment]: # ({67d717da-67d717da})
##### Voorbeeld 1

Stuur eenvoudige GET-verzoeken om gegevens op te halen van diensten zoals Elasticsearch:

- Maak een GET-item met URL: `localhost:9200/?pretty`
- Let op de reactie:

```{=html}
<!-- -->
```
    {
      "name" : "YQ2VAY-",
      "cluster_name" : "elasticsearch",
      "cluster_uuid" : "kH4CYqh5QfqgeTsjh2F9zg",
      "version" : {
        "number" : "6.1.3",
        "build_hash" : "af51318",
        "build_date" : "2018-01-26T18:22:55.523Z",
        "build_snapshot" : false,
        "lucene_version" : "7.1.0",
        "minimum_wire_compatibility_version" : "5.6.0",
        "minimum_index_compatibility_version" : "5.0.0"
      },
      "tagline" : "You know, for search"
    }

- Haal nu het versienummer eruit met behulp van een JSONPath voorbewerkingsstap:
    `$.version.number`

[comment]: # ({/67d717da-67d717da})

[comment]: # ({712fb81c-712fb81c})
##### Voorbeeld 2

Stuur eenvoudige POST-verzoeken om gegevens op te halen van diensten zoals Elasticsearch:

- Maak een POST-item met URL: `http://localhost:9200/str/values/_search?scroll=10s`
- Configureer het volgende POST-lichaam om de processorbelasting op te halen (gemiddelde van 1 minuut per kern):

```{=html}
<!-- -->
```
    {
        "query": {
            "bool": {
                "must": [{
                    "match": {
                        "itemid": 28275
                    }
                }],
                "filter": [{
                    "range": {
                        "clock": {
                            "gt": 1517565836,
                            "lte": 1517566137
                        }
                    }
                }]
            }
        }
    }

- Ontvangen:

```{=html}
<!-- -->
```
    {
        "_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkVZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcBI0QUxR",
        "took": 18,
        "timed_out": false,
        "_shards": {
            "total": 5,
            "successful": 5,
            "skipped": 0,
            "failed": 0
        },
        "hits": {
            "total": 1,
            "max_score": 1.0,
            "hits": [{
                "_index": "dbl",
                "_type": "values",
                "_id": "dqX9VWEBV6sEKSMyk6sw",
                "_score": 1.0,
                "_source": {
                    "itemid": 28275,
                    "value": "0.138750",
                    "clock": 1517566136,
                    "ns": 25388713,
                    "ttl": 604800
                }
            }]
        }
    }

- Gebruik nu een JSONPath voorbewerkingsstap om de itemwaarde te krijgen:
    `$.hits.hits[0]._source.value`

[comment]: # ({/712fb81c-712fb81c})

[comment]: # ({f480040f-f480040f})
##### Voorbeeld 3

Controleren of de Zabbix API actief is, met gebruik van
[apiinfo.version](/manual/api/reference/apiinfo/version).

-   Itemconfiguratie:

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

Let op het gebruik van de POST-methode met JSON-gegevens, het instellen van verzoekheaders
en het vragen om alleen headers terug te geven:

-   Voorbewerking van itemwaarde met reguliere expressie om HTTP-code te verkrijgen:

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

-   Controleer het resultaat in *Laatste gegevens*:

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

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

[comment]: # ({466eee2b-466eee2b})
##### Voorbeeld 4

Weerinformatie ophalen door verbinding te maken met de Openweathermap
openbare dienst.

-   Configureer een hoofditem voor het verzamelen van bulkgegevens in één JSON:

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

Let op het gebruik van macro's in query-velden. Raadpleeg de [Openweathermap
API](https://openweathermap.org/current) voor hoe u deze moet invullen.

Voorbeeld-JSON die wordt teruggestuurd als reactie op de HTTP-agent:

``` {.json}
{
    "body": {
        "coord": {
            "lon": 40.01,
            "lat": 56.11
        },
        "weather": [{
            "id": 801,
            "main": "Clouds",
            "description": "few clouds",
            "icon": "02n"
        }],
        "base": "stations",
        "main": {
            "temp": 15.14,
            "pressure": 1012.6,
            "humidity": 66,
            "temp_min": 15.14,
            "temp_max": 15.14,
            "sea_level": 1030.91,
            "grnd_level": 1012.6
        },
        "wind": {
            "speed": 1.86,
            "deg": 246.001
        },
        "clouds": {
            "all": 20
        },
        "dt": 1526509427,
        "sys": {
            "message": 0.0035,
            "country": "RU",
            "sunrise": 1526432608,
            "sunset": 1526491828
        },
        "id": 487837,
        "name": "Stavrovo",
        "cod": 200
    }
}
```

De volgende taak is het configureren van afhankelijke items die gegevens uit de
JSON-extract.

-   Configureer een voorbeeld afhankelijk item voor luchtvochtigheid:

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

Andere weersmetingen zoals 'Temperatuur' worden op dezelfde
manier toegevoegd.

-   Voorbeeld voorbewerking van afhankelijke itemwaarde met JSONPath:

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

-   Controleer het resultaat van weergegevens in *Laatste gegevens*:

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

[comment]: # ({/466eee2b-466eee2b})

[comment]: # ({44596b14-44596b14})
##### Voorbeeld 5

Verbinding maken met de Nginx-statuspagina en de metrieken in bulk verkrijgen.

-   Configureer Nginx volgens de [officiële handleiding](https://nginx.ru/en/docs/http/ngx_http_stub_status_module.html).

```{=html}
<!-- -->
```
-   Configureer een hoofditem voor het verzamelen van bulkgegevens:

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

Voorbeelduitvoer van Nginx stub-status:

    Active connections: 1 Active connections:
    server accepts handled requests
     52 52 52 
    Reading: 0 Writing: 1 Waiting: 0

De volgende taak is het configureren van afhankelijke items die gegevens uit de
extract.

-   Configureer een voorbeeld afhankelijk item voor verzoeken per seconde:

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

Voorbeeld voorbewerking van afhankelijke itemwaarde met reguliere expressie
`server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)`:

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

Controleer het volledige resultaat van het stub-module in *Laatste gegevens*:

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

[comment]: # ({/44596b14-44596b14})
