Este tipo de métrica permite el sondeo de datos utilizando el protocolo HTTP/HTTPS. La captura también es posible usando la utilidad Zabbix sender o el protocolo de Zabbix sender (para enviar datos al servidor o proxy de Zabbix), o usando el método history.push
de la API (para enviar datos al servidor 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 el equipo monitoreado.
El agente HTTP admite HTTP y HTTPS. Zabbix seguirá opcionalmente 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).
El servidor/proxy Zabbix debe configurarse inicialmente con soporte para cURL (libcurl).
Las comprobaciones HTTP se ejecutan de forma asincrónica: 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 simultaneidad máxima de comprobaciones asincrónicas es 1000 (definida por MaxConcurrentChecksPerPoller).
El número de sondeadores de agentes HTTP asíncronos se define mediante el parámetro StartHTTPAgentPollers.
La función cURL de conexiones persistentes se ha agregado a las comprobaciones del agente HTTP desde Zabbix 7.0.
Para configurar un elemento HTTP:
Todos los campos obligatorios están marcados con un asterisco rojo.
Los campos que requieren información específica para los elementos HTTP son:
Parámetro | Descripción |
---|---|
Tipo | Seleccione Agente HTTP aquí. |
Clave | Ingrese una clave de elemento única. |
URL | URL a la que conectarse y recuperar datos. Por ejemplo: https://www.ejemplo.com http://www.ejemplo.com/descargar 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 su codificación automática en URL. Limitado a 2048 caracteres. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {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}, {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}, {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}, {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, el elemento se volverá no soportado. 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', entonces 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 [protocolo://][usuario[:contraseña]@]proxy.ejemplo.com[:puerto] .El prefijo opcional protocolo:// 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 el elemento se volverá no soportado.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 ingresado 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}, {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á configurada 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á configurada en Básica, NTLM, Kerberos o Digest. Se admiten macros de usuario y macros de bajo nivel. |
Verificar SSL del par | 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 usando el parámetro de configuración SSLCALocation del servidor o proxy 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 Zabbix. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {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 Zabbix. Macros soportadas: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {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 para 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 del elemento. |
Habilitar trampa | Con esta casilla marcada, el elemento también funcionará como un elemento trapper y aceptará datos enviados al servidor o proxy Zabbix utilizando la utilidad Zabbix sender o el protocolo Zabbix sender, o aceptará datos enviados al servidor Zabbix utilizando el método API history.push . Para más información sobre el envío de datos, consulte: Elementos trapper. |
Equipos permitidos | Visible solo si la casilla Habilitar trampa 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 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.ejemplo.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://ip_proxy:puerto_proxy
.
Para HTTPS - establezca la variable de entorno HTTPS_PROXY
. Por ejemplo:
HTTPS_PROXY=http://ip_proxy:puerto_proxy
. 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": "Ya sabes, para buscar"
}
$.version.number
Envíe 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": {
"ítemid": 28275,
"value": "0.138750",
"clock": 1517566136,
"ns": 25388713,
"ttl": 604800
}
}]
}
}
$.hits.hits[0]._source.value
Comprobando si la API de Zabbix está viva, usando apiinfo.version.
Tenga en cuenta el uso del método POST con datos JSON, configurando encabezados de solicitud y pidiendo devolver solo encabezados:
Recuperando información meteorológica conectándose al servicio público Openweathermap.
Tenga en cuenta el uso de macros en los campos de consulta. Consulte la API Openweathermap para saber cómo llenarlos.
Ejemplo de JSON devuelto en respuesta al agente HTTP:
{
"body": {
"coord": {
"lon": 40.01,
"lat": 56,11
},
"weather": [{
"id": 801,
"main": "Nubes",
"description": "pocas nubes",
"icon": "02n"
}],
"base": "estaciones",
"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 las métricas dependientes que extraen datos del JSON.
Otras métricas meteorológicas como 'Temperatura' se agregan de la misma forma.
Conectarse a la página de estado de Nginx y obtener sus métricas de forma masiva.
Ejemplo de salida de estado de Nginx stub:
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 extraen datos.
server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)
: