[comment]: # (tags: script )

[comment]: # ({07496156-1a1e2756})
# 16 Elements d'script

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

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

Els elements d'script es poden emprar per recollir dades executant codi JavaScript definit per l'usuari amb la possibilitat de recuperar les dades via HTTP/HTTPS. A més de l'script, es poden definir una llista opcional de paràmetres (parella de nom i valor) i un temps d'espera.


Aquest tipus d'element pot ésser útil en escenaris de recollida de dades on calgui múltiples passes o una lògica complexa. Per exemple, un element d'script pot fer una crida HTTP, tractar les dades rebudes a la primera passa d'una manera o una altra, i transmetre el valor transformat a la segona crida HTTP.

Els elements d'script són tractats per el servidor Zabbix o els enquestadors proxy.

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

[comment]: # ({dd1b72c9-7ed55e87})
#### Configuració

Al camp *Tipus* del [formulari de configuració d'element](/manual/config/items/item), trieu Script i ompliu els camps necessaris.

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

Tots els camps obligatoris es marquen amb un asterisc vermell.

Els camps que necessiten informació específica per als elements d'script són:

|Camp|Descripció|
|--|--------|
|Clau|Clau única que s'emprarà per identificar l'element.|
|Paràmetres|Especifiqueu les variables a transmetre a l'script com atributs i valors.<br>S'admeten [Macros integrades](/manual/config/macros) {HOST.CONN}, {HOST.DNS}, {HOST .HOST}, {HOST.IP}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG} i [macros d'usuari](/manual/config/macros/user_macros).|
|Script|Entreu el codi JavaScript al bloc que apareix quan cliqueu el camp de paràmetre (o al botó afegir/modificar que hi ha al seu costat). Aquest codi proveeix la lògica per retornar el valor de la mètrica.<br>El codi té accés a tots els paràmetres, i pot fer peticions HTTP GET, POST, PUT i DELETE i controlar les capçaleres HTTP i el cos de la petició.<br>Veieu també: [Objectes JavaScript suplementaris](/manual/config/items/preprocessing/javascript/javascript_objects), [Guia JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide).|
|Caducitat|Temps d'execució de JavaScript (1-60s, 3s per defecte); sobrepassar-ho tornarà un error.<br>Els sufixes horaris s'admeten, per exemple. 30s, 1m.<br>Segons l'script, el temps d'espera pot prendre més temps a executar el trigger. |

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

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

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

[comment]: # ({2f86a97a-9c6c78ee})
##### Recollida de simple de dades

Recollir el contingut de *https://www.example.com/release\_notes*:

-   Crear un element de tipus "Script".\
-   Al camp *Script*, posar-hi el codi següent:

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

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

[comment]: # ({ccceecb6-0b145a06})
##### Recollida de dades amb paràmetres

Recollir el contingut d'una pàgina específica i emprar els paràmetres:

- Crear un element de tipus "Script" i dos paràmetres:
   - **url : {$DOMAIN}** (la macro d'usuari {$DOMAIN} s'ha de definir, preferiblement a nivell d'equip)
   - **subpage : /release_notes**

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

- Al camp *Script*, posar-hi el codi següent:

```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-0b145a06})

[comment]: # ({d5553e63-18a089f4})
##### Peticions HTTP múltiples

Recollir el contingut de *https://www.example.com* i *https://www.example.com/release\_notes*:

- Crear un element de tipus "Script".\
- Al camp *Script*, posar-hi el següent codi:

```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})
##### Registre

Afegir "Log test" a l'arxiu de registre del servidor Zabbix i rebre el valor de l'element "1" de tornada:

- Crear un element de tipus "Script".\
- Al camp *Script*, poseu-hi el codi següent:

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

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