[comment]: # ({1a1e2756-1a1e2756})
# 18 Script-items

[comment]: # ({/1a1e2756-1a1e2756})

[comment]: # ({4a773286-cb89bc38})
### Overzicht

Script items kunnen worden gebruikt om gegevens te verzamelen door aangepaste JavaScript-code uit te voeren met de mogelijkheid om gegevens op te halen via HTTP/HTTPS. Naast het script kan een optionele lijst met parameters (paren van naam en waarde) en een time-out worden opgegeven.

Dit type item kan nuttig zijn in gegevensverzamelings-scenario's die meerdere stappen of complexe logica vereisen. Als voorbeeld kan een Script item geconfigureerd worden om een HTTP-oproep te doen, vervolgens de in de eerste stap ontvangen gegevens op een bepaalde manier te verwerken en de getransformeerde waarde door te geven aan de tweede HTTP-oproep.

Script items worden verwerkt door Zabbix-server- of proxy-pollers.

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

[comment]: # ({e0894ef0-7ed55e87})
### Configuratie

In het *Type*-veld van het [configuratieformulier voor items](/manual/config/items/item) selecteer Script en vul vervolgens de vereiste velden in.

![script\_item.png](../../../../../assets/nl/manual/config/items/itemtypes/script_item.png)

Alle verplichte invoervelden zijn gemarkeerd met een rode asterisk.

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

|Veld|Beschrijving|
|--|--------|
|Sleutel|Voer een unieke sleutel in die zal worden gebruikt om het item te identificeren.|
|Parameters|Specificeer de variabelen die als attribuut- en waardeparen aan het script moeten worden doorgegeven.<br>[Gebruikersmacro's](/manual/config/macros/user_macros) worden ondersteund. Om te zien welke ingebouwde macro's worden ondersteund, zoek je naar "Script-type item" in de [ondersteunde macro](/manual/appendix/macros/supported_by_location)-tabel.|
|Script|Voer JavaScript-code in het blok in dat verschijnt wanneer je in het parameter-veld klikt (of op de bekijk/bewerk-knop ernaast). Deze code moet de logica verschaffen om de metriekwaarde terug te geven.<br>De code heeft toegang tot alle parameters, kan HTTP GET-, POST-, PUT- en DELETE-verzoeken uitvoeren, en heeft controle over HTTP-headers en het verzoeklichaam.<br>Zie ook: [Aanvullende JavaScript-objecten](/manual/config/items/preprocessing/javascript/javascript_objects), [JavaScript-gids](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide).|
|Time-out|Time-out voor JavaScript-uitvoering (1-60s, standaard 3s); bij overschrijding hiervan wordt een fout geretourneerd.<br>Tijdssuffixen worden ondersteund, bijv. 30s, 1m.<br>Afhankelijk van het script kan het langer duren voordat de time-out wordt geactiveerd.|

[comment]: # ({/e0894ef0-7ed55e87})

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

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

[comment]: # ({2f86a97a-9c6c78ee})
##### Simpele gegevensverzameling

Verzamel de inhoud van *https://www.example.com/release\_notes*:

-   Maak een item met het type "Script".
-   Voer in het veld *Script* het volgende in:

```javascript
var request = new HttpRequest();
return request.get("https://www.example.com/release_notes");
```

[comment]: # ({/2f86a97a-9c6c78ee})

[comment]: # ({ccceecb6-7115c5ef})
##### Gegevensverzameling met parameters

Verzamel de inhoud van een specifieke pagina en maak gebruik van parameters:

- Maak een item met het type "Script" en twee parameters:
    - **url : {$DOMAIN}** (de gebruikersmacro {$DOMAIN} moet gedefinieerd zijn, bij voorkeur op het niveau van de host)
    - **subpage : /release_notes**

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

- Voer in het veld *Script* het volgende in:

```javascript
var obj = JSON.parse(value);
var url = obj.url;
var subpage = obj.subpage;
var request = new HttpRequest();
return request.get(url + subpage);
```

[comment]: # ({/ccceecb6-7115c5ef})

[comment]: # ({d5553e63-18a089f4})
##### Meerdere HTTP-verzoeken

Verzamel de inhoud van zowel *https://www.example.com* als
*https://www.example.com/release\_notes*:

- Maak een item met het type "Script".
- Voer in het veld *Script* het volgende in:

```javascript
var request = new HttpRequest();
return request.get("https://www.example.com") + request.get("https://www.example.com/release_notes");
```

[comment]: # ({/d5553e63-18a089f4})

[comment]: # ({0a711007-d837bcdd})
##### Logboekregistratie

Voeg de vermelding "Log test" toe aan het Zabbix-serverlogboek en ontvang als resultaat de itemwaarde "1":

- Maak een item met het type "Script".
- Voer in het veld *Script* het volgende in:

```javascript
Zabbix.log(3, 'Log test');
return 1;
```

[comment]: # ({/0a711007-d837bcdd})
