Este tipo de métrica permite la recopilación de datos utilizando el protocolo HTTP/HTTPS. También es posible la captura utilizando la utilidad Zabbix sender o el protocolo de Zabbix sender (para enviar datos al servidor o proxy de Zabbix), o utilizando el método API history.push
(para enviar datos al servidor de Zabbix).
Las comprobaciones de métricas HTTP son ejecutadas por el servidor Zabbix. Sin embargo, cuando los equipos son monitorizados por un proxy de Zabbix, las comprobaciones de métricas HTTP son ejecutadas por el proxy.
Las comprobaciones de métricas HTTP no requieren que ningún agente esté ejecutándose en el equipo que se está monitorizando.
El agente HTTP soporta tanto HTTP como HTTPS. Zabbix seguirá opcionalmente las redirecciones (ver la opción Seguir redirecciones más abajo). El número máximo de redirecciones está codificado en 10 (utilizando la opción cURL CURLOPT_MAXREDIRS).
El servidor/proxy de Zabbix debe estar inicialmente configurado con soporte para cURL (libcurl).
Las comprobaciones HTTP se ejecutan de forma asíncrona: no es necesario recibir la respuesta a una solicitud antes de que se inicien otras comprobaciones. La resolución de DNS también es asíncrona.
La concurrencia máxima de comprobaciones asíncronas es 1000 (definida por MaxConcurrentChecksPerPoller).
El número de agentes de sondeo HTTP asíncronos está definido por el parámetro StartHTTPAgentPollers.
La característica de conexiones persistentes de cURL se ha añadido a las comprobaciones del agente HTTP desde Zabbix 7.0.
Para configurar una métrica HTTP:
Todos los campos 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 a la que conectarse y recuperar datos. Por ejemplo: https://www.example.com http://www.example.com/download Los nombres de dominio pueden especificarse en caracteres Unicode. Se convierten automáticamente a ASCII mediante punycode al ejecutar la comprobación HTTP. El botón Analizar puede usarse para separar los campos de consulta opcionales (como ?name=Admin&password=mypassword) de la URL, moviendo los atributos y valores a Campos de consulta para la codificación automática de URL. Limitado a 2048 caracteres. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de bajo nivel. Esto establece la opción cURL CURLOPT_URL. |
Campos de consulta | Variables para la URL (ver arriba). Especificadas como pares de atributo y valor. Los valores se codifican automáticamente en URL. Los valores de macros se resuelven y luego se codifican automáticamente en URL. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de bajo nivel. Esto establece la opción cURL CURLOPT_URL. |
Tipo de solicitud | Seleccione el tipo de método de solicitud: GET, POST, PUT o HEAD |
Tipo de cuerpo de solicitud | Seleccione el tipo de cuerpo de la solicitud: Datos sin procesar - cuerpo de solicitud HTTP personalizado, se sustituyen macros pero no se realiza codificación Datos JSON - cuerpo de solicitud HTTP en formato JSON. Las macros pueden usarse como cadena, número, true y false; las macros usadas como cadenas deben ir entre comillas dobles. Los valores de macros se resuelven y luego se escapan automáticamente. Si no se especifica "Content-Type" en las cabeceras, se establecerá por defecto en "Content-Type: application/json" Datos XML - cuerpo de solicitud HTTP en formato XML. Las macros pueden usarse como nodo de texto, atributo o sección CDATA. Los valores de macros se resuelven y luego se escapan automáticamente en un nodo de texto y atributo. Si no se especifica "Content-Type" en las cabeceras, se establecerá por defecto en "Content-Type: application/xml" Nota que seleccionar Datos XML requiere libxml2. |
Cuerpo de la solicitud | Ingrese el cuerpo de la solicitud. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de bajo nivel. |
Cabeceras | Cabeceras HTTP personalizadas que se enviarán al realizar una solicitud. Especificadas como pares de atributo y valor. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de bajo nivel. Esto establece la opción cURL CURLOPT_HTTPHEADER. |
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, la métrica se volverá no soportada. Si está vacío, no se realiza ninguna comprobación. Por ejemplo: 200,201,210-299 Macros soportadas en la lista: macros de usuario, macros de bajo nivel. Esto utiliza la opción cURL CURLINFO_RESPONSE_CODE. |
Seguir redirecciones | Marque la casilla para seguir redirecciones HTTP. Esto establece la opción cURL CURLOPT_FOLLOWLOCATION. |
Modo de recuperación | Seleccione la parte de la respuesta que debe recuperarse: Cuerpo - solo el cuerpo Cabeceras - solo las cabeceras Cuerpo y cabeceras - cuerpo y cabeceras |
Convertir a JSON | Las cabeceras se guardan como pares de atributo y valor bajo la clave "header" si Modo de recuperación no está establecido en Cuerpo. Si se encuentra 'Content-Type: application/json', el cuerpo se guarda como un objeto, de lo contrario se almacena como cadena, por ejemplo: ![]() |
Proxy HTTP | Puede especificar un proxy HTTP para usar, utilizando el formato [protocol://][username[:password]@]proxy.example.com[:port] .El prefijo opcional protocol:// puede usarse para especificar protocolos de proxy alternativos (por ejemplo, https, socks4, socks5; ver documentación; el soporte para el prefijo de protocolo se agregó en cURL 7.21.7). Si no se especifica protocolo, el proxy se tratará como un proxy HTTP. Si especifica el protocolo incorrecto, la conexión fallará y la métrica se volverá no soportada.Por defecto, se usará el puerto 1080. Si se especifica, el proxy sobrescribirá las variables de entorno relacionadas con el proxy como http_proxy, HTTPS_PROXY. Si no se especifica, el proxy no sobrescribirá las variables de entorno relacionadas con el proxy. El valor introducido se pasa "tal cual", no se realiza ninguna comprobación de validez. Nota que solo se admite autenticación simple con proxy HTTP. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de bajo nivel. Esto establece la opción cURL CURLOPT_PROXY. |
Autenticación HTTP | Seleccione la opción de autenticación: Ninguna - no se utiliza autenticación; Básica - se utiliza autenticación básica; NTLM - se utiliza autenticación NTLM (Windows NT LAN Manager); Kerberos - se utiliza autenticación Kerberos (ver también: Configurar Kerberos con Zabbix); Digest - se utiliza autenticación Digest. Esto establece la opción cURL CURLOPT_HTTPAUTH. |
Nombre de usuario | Ingrese el nombre de usuario (hasta 255 caracteres). Este campo está disponible si Autenticación HTTP está configurado en Básica, NTLM, Kerberos o Digest. Se admiten macros de usuario y macros de bajo nivel. |
Contraseña | Ingrese la contraseña de usuario (hasta 255 caracteres). Este campo está disponible si Autenticación HTTP está configurado en Básica, NTLM, Kerberos o Digest. Se admiten macros de usuario y macros de bajo nivel. |
Verificar par SSL | Marque la casilla 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) a nivel de sistema. Puede sobrescribir la ubicación de los archivos CA utilizando el parámetro de configuración SSLCALocation del servidor o proxy de Zabbix. Esto establece la opción cURL CURLOPT_SSL_VERIFYPEER. |
Verificar host SSL | Marque la casilla para verificar que el campo Common Name o el campo Subject Alternate Name del certificado del servidor web coincida. Esto establece la opción cURL CURLOPT_SSL_VERIFYHOST. |
Archivo de certificado SSL | Nombre del archivo de certificado SSL utilizado para la autenticación del cliente. El archivo de certificado debe estar en formato PEM1. Si el archivo de certificado también contiene la clave privada, deje el campo de archivo de clave SSL vacío. Si la clave está cifrada, especifique la contraseña en el campo de contraseña de clave SSL. El directorio que contiene este archivo se especifica mediante el parámetro de configuración SSLCertLocation del servidor o proxy de Zabbix. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de bajo nivel. Esto establece la opción cURL CURLOPT_SSLCERT. |
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 PEM1. El directorio que contiene este archivo se especifica mediante el parámetro de configuración SSLKeyLocation del servidor o proxy de Zabbix. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros de usuario, macros de bajo nivel. Esto establece la opción cURL CURLOPT_SSLKEY. |
Contraseña de clave SSL | Contraseña del archivo de clave privada SSL. Macros soportadas: macros de usuario, macros de bajo nivel. Esto establece la opción cURL CURLOPT_KEYPASSWD. |
Tiempo de espera | Zabbix no dedicará más tiempo que el establecido en procesar la URL (1-600 segundos). En realidad, este parámetro define el tiempo máximo para establecer una conexión con la URL y el tiempo máximo para realizar una solicitud HTTP. Por lo tanto, Zabbix no dedicará más de 2 x Tiempo de espera segundos en una comprobación. Esto establece la opción cURL CURLOPT_TIMEOUT. Para más información sobre el parámetro Tiempo de espera, consulte atributos generales de la métrica. |
Habilitar trapping | Con esta casilla marcada, la métrica también funcionará como una métrica trapper y aceptará datos enviados al servidor o proxy de Zabbix utilizando la utilidad Zabbix sender o el protocolo de Zabbix sender, o aceptará datos enviados al servidor de Zabbix utilizando el método API history.push . Para más información sobre el envío de datos, consulte: Métricas trapper. |
Equipos permitidos | Visible solo si la casilla Habilitar trapping está marcada. Lista de direcciones IP separadas por comas, opcionalmente en notación CIDR, o nombres DNS. Si se especifica, solo se aceptarán conexiones entrantes de los equipos listados aquí. Si el soporte para IPv6 está habilitado, entonces '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' se tratan por igual y '::/0' permitirá cualquier dirección IPv4 o IPv6. '0.0.0.0/0' puede usarse para permitir cualquier dirección IPv4. Tenga en cuenta que las "direcciones IPv6 compatibles con IPv4" (prefijo 0000::/96) son compatibles pero están obsoletas según RFC4291. 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} Se permiten espacios y macros de usuario en este campo. Macros de equipo: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} están permitidas en este campo. |
Si el campo Proxy HTTP se deja vacío, otra forma 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 - establezca la variable de entorno HTTPS_PROXY
. Por ejemplo:
HTTPS_PROXY=http://proxy_ip:proxy_port
. Hay más detalles disponibles ejecutando el comando de shell: # man curl.
[1] Zabbix solo admite archivos de certificado y clave privada en formato PEM. En caso de que tenga su certificado y datos de clave privada en un archivo en formato PKCS #12 (normalmente con extensión *.p12 o *.pfx) puede generar el archivo PEM a partir de él utilizando los siguientes comandos:
Envíe solicitudes GET simples para recuperar datos de servicios como Elasticsearch:
localhost:9200/?pretty
{
"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" : false,
"lucene_version" : "7.1.0",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You know, for search"
}
$.version.number
Enviar solicitudes POST simples para recuperar datos de servicios como Elasticsearch:
http://localhost:9200/str/values/_search?scroll=10s
{
"query": {
"bool": {
"must": [{
"match": {
"itemid": 28275
}
}],
"filter": [{
"range": {
"clock": {
"gt": 1517565836,
"lte": 1517566137
}
}
}]
}
}
}
{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkFZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR",
"took": 18,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 1.0,
"hits": [{
"_index": "dbl",
"_type": "values",
"_id": "dqX9VWEBV6sEKSMyk6sw",
"_score": 1.0,
"_source": {
"itemid": 28275,
"value": "0.138750",
"clock": 1517566136,
"ns": 25388713,
"ttl": 604800
}
}]
}
}
$.hits.hits[0]._source.value
Comprobando si la API de Zabbix está activa, usando apiinfo.version.
Observe el uso del método POST con datos JSON, estableciendo cabeceras de solicitud y solicitando que solo se devuelvan las cabeceras:
Recuperar información meteorológica conectándose al servicio público de Openweathermap.
Tenga en cuenta el uso de macros en los campos de consulta. Consulte la API de Openweathermap para saber cómo rellenarlos.
Ejemplo de JSON devuelto en respuesta al agente HTTP:
{
"body": {
"coord": {
"lon": 40.01,
"lat": 56.11
},
"weather": [{
"id": 801,
"main": "Clouds",
"description": "few clouds",
"icon": "02n"
}],
"base": "stations",
"main": {
"temp": 15.14,
"pressure": 1012.6,
"humidity": 66,
"temp_min": 15.14,
"temp_max": 15.14,
"sea_level": 1030.91,
"grnd_level": 1012.6
},
"wind": {
"speed": 1.86,
"deg": 246.001
},
"clouds": {
"all": 20
},
"dt": 1526509427,
"sys": {
"message": 0.0035,
"country": "RU",
"sunrise": 1526432608,
"sunset": 1526491828
},
"id": 487837,
"name": "Stavrovo",
"cod": 200
}
}
La siguiente tarea es configurar métricas dependientes que extraigan datos del JSON.
Otras métricas meteorológicas como 'Temperatura' se añaden de la misma manera.
Conexión a la página de estado de Nginx y obtención de sus métricas en bloque.
Salida de ejemplo del estado de Nginx:
Active connections: 1 Active connections:
server accepts handled requests
52 52 52
Reading: 0 Writing: 1 Waiting: 0
La siguiente tarea es configurar métricas dependientes que extraigan los datos.
server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)
: