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

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

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

Las métricas de script pueden utilizarse 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 un tiempo de espera.

Este tipo de métrica puede ser útil en escenarios de recopilación de datos que requieran múltiples pasos o lógica compleja. Por ejemplo, una métrica de script puede configurarse para realizar una llamada HTTP, 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 los pollers del servidor o proxy de Zabbix.

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

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

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

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

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

Los campos que requieren información específica para las métricas de tipo Script son:

|Campo|Descripción|
|--|--------|
|*Clave*|Introduzca una clave única que se utilizará para identificar la métrica.|
|*Parámetros*|Especifique las variables que se pasarán al script como pares atributo y valor.<br>Se admiten [macros de usuario](/manual/config/macros/user_macros). Para ver qué macros integradas son compatibles, busque "Métrica de tipo Script" en la tabla de [macros compatibles](/manual/appendix/macros/supported_by_location).|
|*Script*|Introduzca el código JavaScript en el editor modal que se abre al hacer clic en el campo de parámetro o en el icono de lápiz 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) añadidos 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-600s; si se excede, se devolverá un error).<br>Tenga en cuenta que, dependiendo del script, puede tardar más en activarse el tiempo de espera.<br>Para obtener más información sobre el parámetro *Timeout*, consulte [atributos generales de la métrica](/manual/config/items/item#configuration).|

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

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

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

[comment]: # ({2f86a97a-9c6c78ee})
##### Recopilación de datos simple

Recopile el contenido de *https://www.example.com/release\_notes*:

-   Cree una métrica con tipo "Script".
-   En el campo *Script*, introduzca:

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

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

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

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

- Cree una métrica con 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*, introduzca:

```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})
##### Múltiples solicitudes HTTP

Recopile el contenido de *https://www.example.com* y
*https://www.example.com/release\_notes*:

-   Cree una métrica con tipo "Script".
-   En el campo *Script*, introduzca:

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

Agregue la entrada "Log test" al registro del servidor Zabbix y reciba el valor de la métrica "1" como respuesta:

-   Cree una métrica con tipo "Script".
-   En el campo *Script*, introduzca:

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

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