[comment]: # translation:outdated

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

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

[comment]: # ({6871ec1a-a236c83a})
#### Descripción general

Este tipo de métrica permite el sondeo de datos utilizando el protocolo HTTP/HTTPS.
La captura también es posible utilizando el remitente Zabbix o el protocolo del remitente Zabbix.

La comprobación de métricas HTTP la ejecuta el servidor Zabbix. Sin embargo, cuando los equipos son
monitoreados por un proxy Zabbix, el proxy ejecuta las comprobaciones de métricas HTTP.

Las comprobaciones de métricas HTTP no requieren que ningún agente se ejecute en un 
equipo monitoreado.

El agente HTTP admite HTTP y HTTPS. Zabbix seguirá opcionalmente
las redirecciones (consulte la opción *Seguir redirecciones* a continuación). El número máximo de
redirecciones está codificado en 10 (usando la opción cURL CURLOPT\_MAXREDIRS).

::: noteimportant
El servidor/proxy Zabbix debe estar configurado inicialmente
con soporte cURL (libcurl).
:::

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

[comment]: # ({b3693e6e-11697b04})
#### Configuración

Para configurar una métrica HTTP:

- Vaya a: *Configuración* → *Equipos*
- Haga clic en *Métricas* en la fila del equipo
- Haga clic en *Crear métrica*
- Ingrese los parámetros de la métrica en el formulario.

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

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

Los campos que requieren información específica para métricas HTTP son:

|Parámetro|Descripción|
|--|--------|
|*Tipo*|Seleccione **Agente HTTP** aquí.|
|*Clave*|Ingrese una clave de métrica única.|
|*URL*|URL para conectarse y recuperar datos. Por ejemplo:<br>https://www.example.com<br>http://www.example.com/download<br>Los nombres de dominio se pueden especificar en caracteres Unicode. Se convierten automáticamente en punycode a ASCII al ejecutar la verificación HTTP.<br>El botón *Analizar* se puede utilizar para separar campos de consulta opcionales (como ?nombre=Admin&contraseña=micontraseña) de la URL, moviendo los atributos y valores a * Campos de consulta* para codificación automática de URL.<br>Limitado a 2048 caracteres.<br>Macros admitidas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST. NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de descubrimiento de bajo nivel.<br>Esto establece el [CURLOPT\_URL](https://curl. haxx.se/libcurl/c/CURLOPT_URL.html) opción cURL.|
|*Campos de consulta*|Variables para la URL (ver arriba).<br>Especificados como pares de atributo y valor.<br>Los valores se codifican en URL automáticamente. Los valores de las macros se resuelven y luego se codifican en URL automáticamente.<br>Macros admitidas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM .ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de descubrimiento de bajo nivel.<br>Esto establece el [CURLOPT\_URL](https://curl.haxx.se/libcurl /c/CURLOPT_URL.html) opción cURL.|
|*Tipo de solicitud*|Seleccione el tipo de método de solicitud: *GET*, *POST*, *PUT* o *HEAD*|
|*Tiempo de espera*|Zabbix no dedicará más del tiempo establecido a procesar la URL (1-60 segundos). En realidad, este parámetro define el tiempo máximo para establecer una conexión a la URL y el tiempo máximo para realizar una solicitud HTTP. Por lo tanto, Zabbix no gastará más de 2 x segundos de tiempo de espera en una verificación.<br>Se admiten sufijos de tiempo, p. 30s, 1m.<br>Macros admitidas: macros de usuario, macros de descubrimiento de bajo nivel.<br>Esto establece el [CURLOPT\_TIMEOUT](https://curl.haxx.se/libcurl/c/CURLOPT_TIMEOUT.html) cURL opción.|
|*Tipo de cuerpo de la solicitud*|Seleccione el tipo de cuerpo de la solicitud:<br>**Datos sin procesar**: cuerpo de la solicitud HTTP personalizado, se sustituyen macros pero no se realiza codificación<br>**Datos JSON**: cuerpo de la solicitud HTTP en Formato JSON. Las macros se pueden utilizar como cadena, número, verdadero y falso; Las macros utilizadas como cadenas deben estar entre comillas dobles. Los valores de las macros se resuelven y luego se escapan automáticamente. Si no se especifica "Tipo de contenido" en los encabezados, el valor predeterminado será "Tipo de contenido: aplicación/json"<br>**Datos XML**: cuerpo de solicitud HTTP en formato XML. Las macros se pueden utilizar como nodo de texto, atributo o sección CDATA. Los valores de las macros se resuelven y luego se escapan automáticamente en un nodo y atributo de texto. Si no se especifica "Tipo de contenido" en los encabezados, el valor predeterminado será "Tipo de contenido: aplicación/xml"<br>*Nota* que para seleccionar *datos XML* se requiere libxml2.|
|*Cuerpo de la solicitud*|Ingrese el cuerpo de la solicitud.<br>Macros admitidas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM. ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de descubrimiento de bajo nivel.|
|*Encabezados*|Encabezados HTTP personalizados que se enviarán al realizar una solicitud.<br>Especificados como pares de atributo y valor.<br>Macros admitidos: {HOST.IP}, {HOST.CONN}, {HOST.DNS} , {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de descubrimiento de bajo nivel.<br>Esto configura el [CURLOPT \_HTTPHEADER](https://curl.haxx.se/libcurl/c/CURLOPT_HTTPHEADER.html) opción cURL.|
|*Códigos de estado requeridos*|Lista de códigos de estado HTTP esperados. Si Zabbix obtiene un código que no está en la lista, el elemento dejará de ser compatible. Si está vacío, no se realiza ninguna verificación.<br>Por ejemplo: 200,201,210-299<br>Macros admitidas en la lista: macros de usuario, macros de descubrimiento de bajo nivel.<br>Esto utiliza el [CURLINFO\_RESPONSE\_CODE](https ://curl.haxx.se/libcurl/c/CURLINFO_RESPONSE_CODE.html) opción cURL.|
|*Seguir redirecciones*|Marque la casilla de verificación para seguir las redirecciones HTTP.<br>Esto configura la opción de cURL [CURLOPT\_FOLLOWLOCATION](https://curl.haxx.se/libcurl/c/CURLOPT_FOLLOWLOCATION.html).|
|*Modo de recuperación*|Seleccione la parte de la respuesta que se debe recuperar:<br>**Cuerpo** - solo cuerpo<br>**Encabezados** - solo encabezados<br>**Cuerpo y encabezados** - cuerpo y encabezados|
|*Convertir a JSON*|Los encabezados se guardan como pares de atributo y valor bajo la clave "encabezado".<br>Si se encuentra 'Tipo de contenido: aplicación/json', el cuerpo se guarda como un objeto; de lo contrario, se almacena como cadena, por ejemplo:<br>![](../../../../../assets/en/manual/config/items/itemtypes/http_conv_json.png)|
|*Proxy HTTP*|Puede especificar un proxy HTTP para usar, usando el formato `[protocolo://][nombre de usuario[:contraseña]@]proxy.example.com[:puerto]`.<br>El opcional ` protocolo://` se puede utilizar el prefijo to especificar protocolos de proxy alternativos (por ejemplo, https, calcetines4, calcetines5; consulte [documentación](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html); la compatibilidad con el prefijo de protocolo se agregó en cURL 7.21.7). Sin ningún protocolo especificado, el proxy será tratado como un proxy HTTP. Si especifica el protocolo incorrecto, la conexión fallará y el elemento dejará de ser compatible.<br>De forma predeterminada, se utilizará el puerto 1080.<br>Si se especifica, el proxy sobrescribirá las variables de entorno relacionadas con el proxy, como http\_proxy, HTTPS. \_APODERADO. Si no se especifica, el proxy no sobrescribirá las variables de entorno relacionadas con el proxy. El valor ingresado se transmite "tal cual", no se realiza ninguna verificación de idoneidad.<br>*Tenga en cuenta* que solo se admite la autenticación simple con el proxy HTTP.<br>Macros admitidas: {HOST.IP}, {HOST.CONN} , {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de descubrimiento de bajo nivel.<br >Esto configura la opción cURL [CURLOPT\_PROXY](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html).|
|*Autenticación HTTP*|Tipo de autenticación:<br>**Ninguno**: no se utiliza autenticación.<br>**Básico**: se utiliza autenticación básica.<br>**NTLM** - NTLM ([Windows NT LAN Manager)](http://en.wikipedia.org/wiki/NTLM) se utiliza autenticación.<br>**Kerberos**: se utiliza autenticación Kerberos. Consulte también: [Configuración de Kerberos con Zabbix](/manual/appendix/items/kerberos).<br>**Digest**: se utiliza autenticación implícita.<br>Seleccionar un método de autenticación proporcionará dos campos adicionales para ingresar un usuario. nombre y contraseña, donde se admiten macros de usuario y macros de descubrimiento de bajo nivel.<br>Esto configura la opción cURL [CURLOPT\_HTTPAUTH](https://curl.haxx.se/libcurl/c/CURLOPT_HTTPAUTH.html).|
|*SSL verificar par*|Marque la casilla de verificación para verificar el certificado SSL del servidor web. El certificado del servidor se tomará automáticamente de la ubicación de la autoridad certificadora (CA) de todo el sistema. Puede anular la ubicación de los archivos CA utilizando el servidor Zabbix o el parámetro de configuración de proxy SSLCALocation.<br>Esto establece la cURL [CURLOPT\_SSL\_VERIFYPEER](http://curl.haxx.se/libcurl/c/CURLOPT_SSL_VERIFYPEER.html) opción.|
|*SSL verificar equipo*|Marque la casilla de verificación para verificar que el campo Nombre común o el campo Nombre alternativo del sujeto del certificado del servidor web coincidan.<br>Esto establece el [CURLOPT\_SSL\_VERIFYHOST](http://curl. haxx.se/libcurl/c/CURLOPT_SSL_VERIFYHOST.html) opción cURL.|
|*Archivo de certificado SSL*|Nombre del archivo de certificado SSL utilizado para la autenticación del cliente. El archivo del certificado debe estar en formato PEM^1^. Si el archivo del certificado también contiene la clave privada, deje vacío el campo del archivo de clave SSL. Si la clave está cifrada, especifique la contraseña en el campo de contraseña de la clave SSL. El directorio que contiene este archivo lo especifica el servidor Zabbix o el parámetro de configuración del proxy SSLCertLocation.<br>Macros admitidas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME }, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de descubrimiento de bajo nivel.<br>Esto establece el [CURLOPT\_SSLCERT](http://curl.haxx .se/libcurl/c/CURLOPT_SSLCERT.html) opción cURL.|
|*Archivo de clave SSL*|Nombre del archivo de clave privada SSL utilizado para la autenticación del cliente. El archivo de clave privada debe estar en formato PEM^1^. El directorio que contiene este archivo lo especifica el servidor Zabbix o el parámetro de configuración del proxy SSLKeyLocation.<br>Macros admitidas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME }, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de descubrimiento de bajo nivel.<br>Esto establece el [CURLOPT\_SSLKEY](http://curl.haxx .se/libcurl/c/CURLOPT_SSLKEY.html) opción de rizo.|
|*Contraseña de clave SSL*|Contraseña del archivo de clave privada SSL.<br>Macros admitidas: macros de usuario, macros de descubrimiento de bajo nivel.<br>Esto establece el [CURLOPT\_KEYPASSWD](http://curl.haxx.se/ libcurl/c/CURLOPT_KEYPASSWD.html) opción de curvatura.|
|*Habilitar captura*|Con esta casilla de verificación marcada, el elemento también funcionará como [elemento de captura](/manual/config/items/itemtypes/trapper) y aceptará datos enviados a este elemento por el remitente Zabbix o utilizando el protocolo del remitente Zabbix. |
|*Equipos permitidos*|Visible solo si la casilla de verificación *Habilitar captura* está marcada.<br>Lista de direcciones IP delimitadas por comas, opcionalmente en notación CIDR, o nombres DNS.<br>Si se especifica, las conexiones entrantes solo se aceptarán desde los equipos enumerados aquí.<br>Si la compatibilidad con IPv6 está habilitada, entonces '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' se tratan por igual y '::/0' permitirá cualquier IPv4. o dirección IPv6.<br>'0.0.0.0/0' se puede utilizar para permitir cualquier dirección IPv4.<br>Tenga en cuenta que las "direcciones IPv6 compatibles con IPv4" (prefijo 0000::/96) son compatibles, pero están obsoletas por [RFC4291 ](https://tools.ietf.org/html/rfc4291#section-2.5.5).<br>Ejemplo: 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>Los espacios y [macros de usuario](/manual/config/macros/user_macros) están permitidos en este campo.<br>Macros de host: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} están permitidos en este campo.|

::: notetip
Si el campo *proxy HTTP* se deja vacío, otra manera de
usar un proxy HTTP es establecer variables de entorno relacionadas con el proxy.

Para HTTP: establezca la variable de entorno `http_proxy` para el
usuario del servidor Zabbix. Por ejemplo:\
`http_proxy=http://proxy_ip:proxy_port`.

Para HTTPS: configure la variable de entorno `HTTPS_PROXY`. Por ejemplo:\
`HTTPS_PROXY=http://proxy_ip:proxy_port`. Más detalles están disponibles 
ejecutando el comando de shell: *\# man curl*.
:::

::: noteimportant
  \[1\] Zabbix admite archivos de certificado y clave privada
 en formato PEM únicamente. En caso de tener sus datos de certificado y clave
 privada en un archivo de formato PKCS \#12 (generalmente con extensión \*.p12 o
\*.pfx) puede generar el archivo PEM usando los siguientes
comandos:

     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})
#### Ejemplos

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

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

Envíe solicitudes GET simples para recuperar datos de servicios como
Elasticsearch:

- Cree un elemento GET con URL: `localhost:9200/?pretty`
- Observe la respuesta:

```{=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": falso,
        "lucene_version": "7.1.0",
        "minimum_wire_compatibility_version": "5.6.0",
        "minimum_index_compatibility_version": "5.0.0"
      },
      "tagline": "Ya sabes, para buscar"
    }

- Ahora extraiga el número de versión usando un paso de preprocesamiento JSONPath:
    `$.version.number`

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

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

Envíe solicitudes POST simples para recuperar datos de servicios como
Búsqueda elástica:

- Crear un elemento POST con URL:
    `http://localhost:9200/str/values/_search?scroll=10s`
- Configure el siguiente cuerpo POST para obtener la carga del procesador (1
    promedio mínimo por núcleo)

```{=html}
<!-- -->
```
    {
        "consulta": {
            "bool": {
                "deber": [{
                    "juego": {
                        "ítemid": 28275
                    }
                }],
                "filtro": [{
                    "rango": {
                        "reloj": {
                            "gt": 1517565836,
                            "lte": 1517566137
                        }
                    }
                }]
            }
        }
    }

-   Recibió:

```{=html}
<!-- -->
```
    {
        "_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkFZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR",
        "tomó": 18,
        "timed_out": falso,
        "_fragmentos": {
            "totales": 5,
            "exitoso": 5,
            "omitido": 0,
            "fallido": 0
        },
        "golpes": {
            "totales": 1,
            "puntuación_máxima": 1.0,
            "golpes": [{
                "_index": "dbl",
                "_type": "valores",
                "_id": "dqX9VWEBV6sEKSMyk6sw",
                "_puntuación": 1.0,
                "_fuente": {
                    "ítemid": 28275,
                    "valor": "0.138750",
                    "reloj": 1517566136,
                    "ns": 25388713,
                    "ttl": 604800
                }
            }]
        }
    }

- Ahora use un paso de preprocesamiento JSONPath para obtener el valor del elemento:
    `$.hits.hits[0]._source.value`

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

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

Comprobando si la API de Zabbix está viva, usando
[apiinfo.version](/manual/api/reference/apiinfo/version).

- Configuración del artículo:

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

Tenga en cuenta el uso del método POST con datos JSON, configurando encabezados de solicitud
y pidiendo devolver solo encabezados:

- Preprocesamiento del valor del elemento con expresión regular para obtener el código HTTP:

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

- Comprobando el resultado en *Últimos datos*:

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

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

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

Recuperación de información meteorológica conectándose a Openweathermap
servicio público.

- Configure un elemento maestro para la recopilación masiva de datos en un solo JSON:

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

Tenga en cuenta el uso de macros en los campos de consulta. Consulte el [Openweathermap
API](https://openweathermap.org/current) para saber cómo llenarlos.

Ejemplo de JSON devuelto en respuesta al agente HTTP:

``` {.json}
{
    "cuerpo": {
        "coord": {
            "lón": 40.01,
            "lat": 56,11
        },
        "clima": [{
            "identificación": 801,
            "principal": "Nubes",
            "descripcion": "pocas nubes",
            "icono": "02n"
        }],
        "base": "estaciones",
        "principal": {
            "temperatura": 15.14,
            "presión": 1012.6,
            "humedad": 66,
            "temp_min": 15.14,
            "temp_max": 15.14,
            "nivel_del_mar": 1030.91,
            "nivel_nivel": 1012.6
        },
        "viento": {
            "velocidad": 1.86,
            "grado": 246.001
        },
        "nubes": {
            "todos": 20
        },
        "dt": 1526509427,
        "sistema": {
            "mensaje": 0.0035,
            "país": "RU",
            "amanecer": 1526432608,
            "puesta de sol": 1526491828
        },
        "id": 487837,
        "nombre": "Stavrovo",
        "bacalao": 200
    }
}
```

La siguiente tarea es configurar elementos dependientes que extraen datos del
JSON.

- Configure un elemento dependiente de la muestra para la humedad:

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

Otras métricas meteorológicas como 'Temperatura' se agregan en el mismo
manera.

- Preprocesamiento de valor de elemento dependiente de muestra con JSONPath:

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

- Consultar el resultado de los datos meteorológicos en *Últimos datos*:

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

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

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

Conectarse a la página de estado de Nginx y obtener sus métricas a granel.

- Configurar Nginx siguiendo el [oficial
    guía] (https://nginx.ru/en/docs/http/ngx_http_stub_status_module.html).

```{=html}
<!-- -->
```
- Configure un elemento maestro para la recopilación masiva de datos:

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

Ejemplo de salida de estado de stub de Nginx:

    Conexiones activas: 1 Conexiones activas:
    el servidor acepta solicitudes manejadas
     52 52 52
    Lectura: 0 Escritura: 1 Espera: 0

La siguiente tarea es configurar elementos dependientes que extraen datos.

- Configure un elemento dependiente de muestra para solicitudes por segundo:

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

- Preprocesamiento de valor de elemento dependiente de muestra con expresión regular
    `el servidor acepta solicitudes manejadas\s+([0-9]+) ([0-9]+) ([0-9]+)`:

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

- Verifique el resultado completo del módulo stub en *Últimos datos*:

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

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