16 Agent HTTP

Vista general

Aquest tipus d'element permet interrogar les dades emprant el protocol HTTP/HTTPS. El trap també és possible emprant Zabbix Sender o el protocol Zabbix Sender, o emprant el mètode API history.push (per enviar informació al servidor Zabbix).

La verificació d'elements HTTP les executa el servidor Zabbix. De tota manera, quan els equips són monitorats per un proxy Zabbix, aquestes verificacions les fa el propi proxy.

Les verificacions d'elements HTTP es poden fer sense que l'equip monitorat executi l'agent Zabbix.

L'agent HTTP admet HTTP i HTTPS. Zabbix seguirà opcionalment les redireccions (veieu l'opció Seguir les redireccions aquí sota). El nombre màxim de redirecions s'ha definit en 10 (emprant l'opció cURL CURLOPT_MAXREDIRS).

El servidor/proxy Zabbix s'ha de configurar inicialment amb el suport de cURL (libcurl).

Les comprovacions HTTP s'executen de manera asíncrona: no cal rebre la resposta a una petició abans que s'iniciïn altres comprovacions. La resolució de DNS també és asíncrona.

La concurrència màxima de comprovacions asíncrones és 1000 (definida per MaxConcurrentChecksPerPoller).

El nombre d'enquestadors d'agent HTTP asíncrons el defineix el paràmetre StartHTTPAgentPollers.

La funció cURL de connexions persistents s'ha afegit a les comprovacions de l'agent HTTP des de Zabbix 7.0.

Configuració

Per configurar un element HTTP:

  • Vés a: ConfiguracióEquips
  • Feu clic a Items a la fila de l'equip
  • Feu clic a Crear element
  • Introduïu els paràmetres de l'element al formulari

Tots els camps d'entrada obligatoris són marcats amb un asterisc vermell.

Els camps que requereixen informació específica per als elements HTTP són:

Paràmetre Descripció
Type Trieu Agent HTTP aquí.
Key Introduïu una clau d'element única.
URL URL de connexió i recuperació de dades. Per exemple:
https://www.example.com
http://www.example.com/download
Els noms de domini es poden especificar en caràcters Unicode. Es converteixen automàticament de punycode a ASCII quan s'executa la comprovació HTTP.
El botó Analitzar es pot emprar per separar els camps de consulta opcionals (com ara ?name=Admin&password=mypassword) de l'URL, movent els atributs i els valors als camps de consulta per a la codificació automàtica d'URL.
Limitat a 2048 caràcters.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST . NOM}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Això estableix el CURLOPT_URL. .se/libcurl/c/CURLOPT_URL.html) de cURL.
Camps de consulta Variables per a l'URL (veieu més amunt).
Especificat com a parells d'atribut i valor.
Els valors es codifiquen automàticament per URL. Els valors de macro es resolen i després es codifica automàticament l'URL.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM .ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Això estableix el CURLOPT_URL de cURL.
Tipus de petició Trieu el tipus de mètode de petició: GET, POST, PUT o HEAD
Temps d'espera Zabbix no gastarà més del temps establert al processament d'URL (1-60 segons). De fet, aquest paràmetre defineix el temps màxim per establir una connexió a l'URL i el temps màxim per fer una petició HTTP. Per tant, Zabbix no dedicarà més de 2 segons de temps d'espera en una comprovació.
S'admeten sufixos de temps, p. 30 s, 1 min.
Macros admeses: macros d'usuari, macros de descoberta de baix nivell.
Això estableix el CURLOPT_TIMEOUT de cURL .
Tipus de cos de la petició Trieu el tipus de cos de la petició:
Dades en brut: cos de petició HTTP personalitzat, les macros es substitueixen però no es fa cap codificació
Dades JSON: cos de la petició HTTP a Format JSON. Les macros es poden emprar com a cadena, nombre, vertader i fals; Les macros emprades com a cadenes s'han de lliurar entre cometes dobles. Els valors de macro es resolen i després s'escapa automàticament. Si no s'especifica "Tipus de contingut" a les capçaleres, serà per defecte "Tipus de contingut: aplicació/json"
Dades XML: cos de la petició HTTP en format XML. Les macros es poden emprar com a node de text, atribut o secció CDATA. Els valors de macro es resolen i després s'escapa automàticament a un node i atribut de text. Si "Content-Type" no s'especifica a les capçaleres, per defecte serà "Content-Type: application/xml"
Tingueu en compte que triar XML Data requereix libxml2.
Cos de la petició Introduïu el cos de la petició.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, { ARTICLE. ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Capçaleres Capçaleres HTTP personalitzades que s'enviaran en executar una petició.
Especificada com a parells d'atributs i valors.
Macros admeses: {HOST .IP}, {HOST.CONN}, {HOST.DNS} , {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Això estableix l'opció CURLOPT _HTTPHEADER de cURL.
Codis d'estat obligatoris Llista de codis d'estat HTTP esperats. Si Zabbix obté un codi que no es troba a la llista, l'element ja no serà compatible. Si és buit, no es fa pas cap comprovació.
Per exemple: 200,201,210-299
Macros admeses a la llista: macros d'usuari, macros de descoberta de baix nivell.
Això empra l'opció CURLINFO _RESPONSE_CODE de cURL.
Seguir redireccions Marqueu la casella per seguir les redireccions HTTP.
Això estableix l'opció cURL CURLOPT_FOLLOWLOCATION.
Mode de recuperació Trieu la part de la resposta que voleu recuperar:
Cos - només el cos
Capçaleres - només les capçaleres
Cos i capçaleres - cos i capçaleres
Convertir a JSON Les capçaleres es desen com a parells d'atributs i valors sota la clau "capçalera".
Si es troba "Tipus de contingut: aplicació/json", el cos es desa com a objecte, en cas contrari s'emmagatzema com a cadena, per exemple:
Proxy HTTP Podeu especificar un proxy HTTP per emprar, emprant el format [protocol://][nom d'usuari[:contrasenya]@]proxy.example.com[:port].
El prefix opcional protocol:// es pot emprar per especificar protocols de proxy alternatius (per exemple, https, socks4, socks5; veieu documentació; el suport del prefix de protocol era afegit a cURL 7.21.7. Sense un protocol especificat, el proxy es tractarà com un proxy HTTP. Si especifiqueu un protocol incorrecte, la connexió fallarà i l'element ja no serà compatible. br>Per defecte, s'emprarà el port 1080.
Si s'especifica, el proxy substituirà les variables d'entorn relacionades amb el proxy, com ara http_proxy, HTTPS_PROXY. Si no s'especifica, el proxy no sobreescriurà les variables d'entorn relacionades amb el proxy. El valor introduït es passa "tal com ve", no es fa cap comprovació d'integritat.
Tingueu en compte que només s'admet l'autenticació simple amb el proxy HTTP.
Macros compatibles: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, { HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY }, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Això estableix l'opció cURL CURLOPT _PROXY.
Autenticació HTTP Tipus d'autenticació:
Cap: no s'empra cap autenticació.
Bàsica: s'empra l'autenticació bàsica.
NTLM - NTLM (Windows NT S'empra LAN Manager).
Kerberos: s'empra l'autenticació Kerberos. Veieu també: Configuració de Kerberos amb Zabbix.
Digest: s'empra l'autenticació de Digest.
Seleccionar un mètode d'autenticació proporcionarà dos camps addicionals per introduir un nom d'usuari i mot de pas, on s'admeten macros d'usuari i macros de descoberta de baix nivell.
Això estableix l'opció cURL CURLOPT_HTTPAUTH.
Verifiqueu SSL peer Marqueu la casella per verificar el certificat SSL del servidor web. El certificat del servidor es recuperarà automàticament des de la ubicació de l'Autoritat de certificació (CA) de tot el sistema. Podeu substituir la ubicació dels fitxers CA mitjançant el paràmetre de configuració del servidor Zabbix o del proxy SSLCALocation.
Això estableix l'opció cURL CURLOPT_SSL_VERIFYPEER.
Verifica l'equip SSL Marca la casella per verificar que el camp Nom comú o Nom alternatiu de l'assumpte del certificat del servidor web coincideix.
Això estableix el CURLOPT_SSL_VERIFYHOST de cURL.
Fitxer de certificat SSL Nom del fitxer de certificat SSL emprat per a l'autenticació del client. El fitxer del certificat ha d'ésser en format PEM1. Si el fitxer del certificat també conté la clau privada, deixeu el camp Fitxer de clau SSL en blanc. Si la clau és xifrada, especifiqueu el mot de pas al camp Mot de pas de la clau SSL. El directori que conté aquest fitxer l'especifica el servidor Zabbix o el paràmetre de configuració del proxy SSLCertLocation.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST }, {HOST.NAME } , {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Això estableix l'opció cURL CURLOPT _SSLCERT.
Fitxer de clau SSL Nom del fitxer de clau privada SSL emprat per a l'autenticació del client. El fitxer de clau privada ha d'ésser en format PEM1. El directori que conté aquest fitxer l'especifica el servidor Zabbix o el paràmetre de configuració del proxy SSLKeyLocation.
Macros admeses: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, macros d'usuari, macros de descoberta de baix nivell.
Això estableix l'opció cURL CURLOPT _SSLKEY.
Mot de pas de clau SSL Mot de pas del fitxer de clau privada SSL.
Macros admeses: macros d'usuari, macros de descoberta de baix nivell.
Això estableix l'opció cURL CURLOPT _KEYPASSWD.
Activa trampes Amb aquesta casella marcada, l'element també funcionarà com a element trapper i acceptarà les dades enviades al servidor o proxy Zabbix emprant la utilitat Zabbix sender o el protocol, o acceptarà les dades enviades al servidor Zabbix emprant el mètode API history.push. Per tindre més informació sobre l'enviament d'informació, veieu: Elements trapper.
Equips permesos Visible només si la casella Activa trampes és marcada.
Llista d'adreces IP delimitades per comes, opcionalment en notació CIDR, o noms d'equips.
Si s'especifica, les connexions només s'acceptaran de trucades entrants dels equips que s'indiquen aquí.
Si el suport d'IPv6 és habilitat, "127.0.0.1", "::127.0.0.1", "::ffff:127.0.0.1" es tracten de la mateixa manera i "::/0" permetrà qualsevol adreça IPv4 o IPv6.
'0.0.0.0/0' es pot emprar per permetre qualsevol adreça IPv4.
Tingueu en compte que les adreces IPv6 compatibles amb IPv4 (prefix 0000::/96) són compatibles, però és obsolet per RFC4291.
Exemple: Server=127.0.0.1, 192.168.1.0/24, 192.168.3.1-255, 192.168.1-10.1-255, ::1,2001:db8::/32, zabbix.domain
Els espais i les macros d'usuari són permeses en aquest camp.
Les macros d'equip: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} són permeses en aquest camp.

Si el camp Proxy HTTP es deixa en blanc, una altra manera d'emprar un proxy HTTP és establir variables d'entorn relacionades amb el proxy.

Per a HTTP: establiu la variable d'entorn "http_proxy" per a l'usuari del servidor Zabbix. Per exemple:
http_proxy=http://proxy_ip:proxy_port.

Per a HTTPS: establiu la variable d'entorn HTTPS_PROXY. Per exemple:
HTTPS_PROXY=http://proxy_ip:proxy_port. Hi ha més detalls disponibles executant l'ordre de shell: # man curl.

[1]Zabbix només admet fitxers de certificat i clau privada en format PEM. Si teniu el vostre certificat i les vostres dades de clau privada en un fitxer en format PKCS #12 (normalment amb l'extensió *.p12 o *.pfx), podeu generar-ne el fitxer PEM amb les ordres següents:

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
       openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

Exemples

Exemple 1

Envieu peticions GET simples per extreure les dades de serveis com ara Elasticsearch:

  • Crear un element GET amb l'URL : localhost:9200/?pretty
  • Veieu la resposta:
 {
        "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"
        }
  • Extreure ara el nombre de versió emprant una etapa de pre-processament JSONPath: $.version.number
Exemple 2

Enviar les peticions POST simples per extreure les dades de serveis com ara Elasticsearch:

  • Crear un element POST amb l'URL : http://localhost:9200/str/values/_search?scroll=10s
  • Configurar el cos POST seguint per obtindre la càrrega del processador (mitjana 1 min per nucli)
    {
               "query": {
                   "bool": {
                       "must": [{
                           "match": {
                               "itemid": 28275
                           }
                       }],
                       "filter": [{
                           "range": {
                               "clock": {
                                   "gt": 1517565836,
                                   "lte": 1517566137
                               }
                           }
                       }]
                   }
               }
           }
  • Rebut :
    {
               "_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
                       }
                   }]
               }
           }
  • Emprem ara una etapa de pre-tractament JSONPath per obtindre el valor de l'element: $.hits.hits[0]._source.value
Exemple 3

Verificar si l'API Zabbix és viva, emprant apiinfo.version.

  • Configuració de l'element:

Veieu que l'ús del mètode POST amb les dades JSON, la definició de les capçaleres de petició i l'enviament només de les capçaleres:

  • Pre-tractament del valor d'element amb una expressió regular per obtindre el codi HTTP:

  • Verificació del resultat a Darreres dades:

Exemple 4

Recuperació dels informes meteorològics connectant al servei públic Openweathermap.

  • Configurar un element principal per la recollida de dades en bloc en un sol JSON:

Veieu que emprem macros als camps de petició. Veieu l'API Openweathermap per sapiguer com omplir-les.

Exemple de codi JSON retornat en resposta a l'agent 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 següent tasca consisteix en configurar els elements dependents que extreuen les dades del JSON.

  • Configureu un element dependent per la humitat:

Altres mètriques meteorológiques com ara la 'Temperatura' s'afegeixen de la mateixa manera.

  • Exemple de pre-tractament del valor de l'element dependent amb JSONPath:

  • Verifiqueu el resultat de les dades meteorològiques a Darreres dades:

Exemple 5

Connexió a la pàgina d'estat d'Nginx i obtindre les seves mètriques de forma massiva.

  • Configureu Nginx seguint la [guia oficial] (https://nginx.ru/en/docs/http/ngx_http_stub_status_module.html).
  • Configureu un element principal per la recollida massiva de les dades:

Exemple de sortida d'estat de l'stub Nginx:

Active connections: 1 Active connections:
       server accepts handled requests
       52 52 52 
       Reading: 0 Writing: 1 Waiting: 0

La següent tasca consisteix en configurar els elements dependents que extreuen les dades.

  • Configureu un exemple d'element dependent per les peticions per segon:

  • Exemple de pre-tractament del valor de l'element dependent amb una expressió regular el servidor accepta les peticions tractades\s+([0-9]+) ([0-9]+) ([0-9]+):

  • Verifiqueu el resultat complet del mòdul stub a Darreres dades: