[comment]: # translation:outdated

[comment]: # ({1a1e2756-1a1e2756})
# 18 Métricas scripts

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

[comment]: # ({4a773286-cb89bc38})
### Descripción general

Las métricas de secuencia de comandos se pueden utilizar para recopilar datos ejecutando un código JavaScript definido por el usuario con la capacidad de recuperar datos a través de HTTP/HTTPS. 
Además del script, se puede especificar una lista opcional de parámetros 
(pares de nombre y valor) y el tiempo de espera.

Este tipo de métrica puede resultar útil en escenarios de recopilación de datos que requieren
múltiples pasos o lógica compleja. Como ejemplo, una métrica de secuencia de comandos puede ser
configurada para realizar una llamada HTTP y luego procesar los datos recibidos en el
primer paso de alguna manera y pasar el valor transformado a la segunda llamada HTTP.

Las métricas de script son procesadas por el servidor Zabbix o los sondeadores proxy.

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

[comment]: # ({9f13bdb8-7ed55e87})
### Configuración

En el campo *Tipo* del [formulario de configuración
de métricas](/manual/config/items/item) seleccione Script y luego complete los campos
obligatorios.

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

Todos los campos de entrada obligatorios están marcados con un asterisco rojo.

Los campos que requieren información específica para los elementos de Script son:

|Campo|Descripción|
|--|--------|
|*Clave*|Ingrese una clave única que se utilizará para identificar la métrica.|
|*Parámetros*|Especifique las variables que se pasarán al script como pares de atributo y valor.<br>Se admiten [macros de usuario](/manual/config/macros/user_macros). Para ver qué macros integradas son compatibles, realice una búsqueda de "Métrica de tipo script" en la tabla de [macros compatibles](/manual/appendix/macros/supported_by_location).|
|*Script*|Ingrese el código JavaScript en el editor modal que se abre al hacer clic en el campo de parámetros o en el ícono de lápiz que se encuentra junto a él. Este código debe proporcionar la lógica para devolver el valor de la métrica.<br>El código tiene acceso a todos los parámetros y a todos los [objetos JavaScript adicionales](/manual/config/items/preprocessing/javascript/javascript_objects) agregados por Zabbix.<br>Consulte también: [Guía de JavaScript](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide).|
|*Timeout*|Tiempo de espera de ejecución de JavaScript (1-600 s; si se excede, se devolverá un error).<br>Tenga en cuenta que, según el script, el tiempo de espera puede demorar más tiempo en activarse.<br>Para obtener más información sobre el parámetro *Timeout*, consulte [atributos generales de las métricas](/manual/config/items/item#configuration).|

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

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

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

[comment]: # ({72fd5e42-9c6c78ee})
##### Recogida de datos sencilla

Recoge el contenido de *https://www.example.com/release_notes*:
   
- · Crea un elemento de tipo "Script".
- · En el campo *Script*, introduce el siguiente código:
``` {.java}
var request = new HttpRequest();
return request.get("https://www.example.com/release_notes");
```

[comment]: # ({/72fd5e42-9c6c78ee})

[comment]: # ({ccceecb6-7115c5ef})
##### Recopilación de datos con parámetros.

Recopile el contenido de una página específica y utilice parámetros:

- Crea una métrica de tipo "Script" y dos parámetros:
    - **url: {$DOMAIN}** (la macro de usuario {$DOMAIN} debe estar definida, preferiblemente a nivel de equipo)
    - **subpage: /release_notes**

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

- En el campo *Script*, ingrese:

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

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

[comment]: # ({d6607aab-18a089f4})
##### Múltiples peticiones HTTP

Recoge el contenido de ambos *https://www.example.com* y *https://www.example.com/release_notas*:

- · Crear un elemento con el tipo "Script".\
- · En el campo *Script*, introduzca el siguiente código:

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

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

[comment]: # ({77699cac-d837bcdd})
##### Registro de datos

Añade la entrada "Log test" al registro del servidor Zabbix y recibe el elemento valor "1" a cambio:

- · Cree un elemento de tipo "Script".\
- · En el campo *Script*, introduce el siguiente código:

``` {.java}
Zabbix.log(3, 'Log test');
return 1;
```

[comment]: # ({/77699cac-d837bcdd})
