16 HTTP aģents

Pārskats

Šis vienuma tips ļauj aptaujāt datus, izmantojot HTTP/HTTPS protokolu. Ir iespējama arī datu saņemšana pasīvajā režīmā, izmantojot utilītu Zabbix sender vai Zabbix sender protocol (datu nosūtīšanai uz Zabbix serveri vai starpniekserveri), vai izmantojot API metodi history.push (datu nosūtīšanai uz Zabbix serveri).

HTTP vienumu pārbaudes izpilda Zabbix serveris. Tomēr, ja hostus uzrauga Zabbix starpniekserveris, HTTP vienumu pārbaudes izpilda starpniekserveris.

HTTP vienumu pārbaudēm nav nepieciešams, lai uz uzraugāmā hosta darbotos kāds aģents.

HTTP aģents atbalsta gan HTTP, gan HTTPS. Zabbix pēc izvēles sekos pāradresācijām (skatiet tālāk opciju Sekot pāradresācijām). Maksimālais pāradresāciju skaits ir stingri noteikts uz 10 (izmantojot cURL opciju CURLOPT_MAXREDIRS).

Zabbix serverim/starpniekserverim sākotnēji jābūt konfigurētam ar cURL (libcurl) atbalstu.

HTTP pārbaudes tiek izpildītas asinhroni — nav nepieciešams saņemt atbildi uz vienu pieprasījumu, pirms tiek sāktas citas pārbaudes. Arī DNS atrisināšana notiek asinhroni.

Asinhrono pārbaužu maksimālais vienlaicīgums ir 1000 (noteikts ar MaxConcurrentChecksPerPoller).

Asinhrono HTTP aģenta aptaujātāju skaitu nosaka parametrs StartHTTPAgentPollers.

cURL pastāvīgo savienojumu iespēja ir pievienota HTTP aģenta pārbaudēm, sākot ar Zabbix 7.0.

Konfigurācija

Lai konfigurētu HTTP vienumu:

  • Dodieties uz: Datu ievākšanaHosts
  • Noklikšķiniet uz Items attiecīgā hosta rindā
  • Noklikšķiniet uz Create item
  • Ievadiet vienuma parametrus formā

Visi obligātie ievades lauki ir atzīmēti ar sarkanu zvaigznīti.

Lauki, kuriem HTTP vienumiem nepieciešama specifiska informācija, ir:

Parameter Description
Type Šeit atlasiet HTTP aģents.
Key Ievadiet unikālu vienuma atslēgu.
URL URL, ar kuru izveidot savienojumu un iegūt datus. Piemēram:
https://www.example.com
http://www.example.com/download
Domēna nosaukumus var norādīt Unicode rakstzīmēs. Izpildot HTTP pārbaudi, tie automātiski tiek pārveidoti no punycode uz ASCII.
Pogu Parse var izmantot, lai no URL atdalītu neobligātos vaicājuma laukus (piemēram, ?name=Admin&password=mypassword), pārvietojot atribūtus un vērtības uz Query fields automātiskai URL kodēšanai.
Ierobežots līdz 2048 rakstzīmēm.
Atbalstītie makrosi: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, lietotāja makrosi, zema līmeņa atklāšanas makrosi.
Tas iestata cURL opciju CURLOPT_URL.
Query fields Mainīgie URL vajadzībām (skatīt iepriekš).
Norādīti kā atribūtu un vērtību pāri.
Vērtības tiek automātiski URL kodētas. Vērtības no makrosiem vispirms tiek atrisinātas un pēc tam automātiski URL kodētas.
Atbalstītie makrosi: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, lietotāja makrosi, zema līmeņa atklāšanas makrosi.
Tas iestata cURL opciju CURLOPT_URL.
Request type Atlasiet pieprasījuma metodes tipu: GET, POST, PUT vai HEAD
Request body type Atlasiet pieprasījuma pamatteksta tipu:
Raw data - pielāgots HTTP pieprasījuma pamatteksts, makrosi tiek aizvietoti, bet kodēšana netiek veikta
JSON data - HTTP pieprasījuma pamatteksts JSON formātā. Makrosus var izmantot kā virkni, skaitli, true un false; makrosiem, kas izmantoti kā virknes, jābūt ietvertiem dubultpēdiņās. Vērtības no makrosiem vispirms tiek atrisinātas un pēc tam automātiski atsoļotas. Ja galvenēs nav norādīts "Content-Type", pēc noklusējuma tiks izmantots "Content-Type: application/json"
XML data - HTTP pieprasījuma pamatteksts XML formātā. Makrosus var izmantot kā teksta mezglu, atribūtu vai CDATA sadaļu. Vērtības no makrosiem vispirms tiek atrisinātas un pēc tam automātiski atsoļotas teksta mezglā un atribūtā. Ja galvenēs nav norādīts "Content-Type", pēc noklusējuma tiks izmantots "Content-Type: application/xml"
Request body Ievadiet pieprasījuma pamattekstu.
Atbalstītie makrosi: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, lietotāja makrosi, zema līmeņa atklāšanas makrosi.
Headers Pielāgotas HTTP galvenes, kas tiks nosūtītas, izpildot pieprasījumu.
Norādītas kā atribūtu un vērtību pāri.
Atbalstītie makrosi: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, lietotāja makrosi, zema līmeņa atklāšanas makrosi.
Tas iestata cURL opciju CURLOPT_HTTPHEADER.
Required status codes Sagaidāmo HTTP statusa kodu saraksts. Ja Zabbix saņem kodu, kas nav šajā sarakstā, vienums kļūs neatbalstīts. Ja lauks ir tukšs, pārbaude netiek veikta.
Piemēram: 200,201,210-299
Atbalstītie makrosi sarakstā: lietotāja makrosi, zema līmeņa atklāšanas makrosi.
Tas izmanto cURL opciju CURLINFO_RESPONSE_CODE.
Follow redirects Atzīmējiet izvēles rūtiņu, lai sekotu HTTP pāradresācijām.
Tas iestata cURL opciju CURLOPT_FOLLOWLOCATION.
Retrieve mode Atlasiet atbildes daļu, kas jāiegūst:
Body - tikai pamatteksts
Headers - tikai galvenes
Body and headers - pamatteksts un galvenes
Convert to JSON Galvenes tiek saglabātas kā atribūtu un vērtību pāri zem atslēgas "header", ja Retrieve mode nav iestatīts uz Body.
Ja tiek konstatēts 'Content-Type: application/json', tad pamatteksts tiek saglabāts kā objekts, pretējā gadījumā tas tiek saglabāts kā virkne, piemēram:
HTTP proxy Varat norādīt izmantojamo HTTP starpniekserveri, izmantojot formātu [protocol://][username[:password]@]proxy.example.com[:port].
Neobligāto prefiksu protocol:// var izmantot, lai norādītu alternatīvus starpniekservera protokolus (piemēram, https, socks4, socks5; skatiet dokumentāciju; protokola prefiksa atbalsts tika pievienots cURL 7.21.7). Ja protokols nav norādīts, starpniekserveris tiks uzskatīts par HTTP starpniekserveri. Ja norādīsiet nepareizu protokolu, savienojums neizdosies un vienums kļūs neatbalstīts.
Pēc noklusējuma tiks izmantots 1080 ports.
Ja norādīts, starpniekserveris pārrakstīs ar starpniekserveri saistītos vides mainīgos, piemēram, http_proxy, HTTPS_PROXY. Ja nav norādīts, starpniekserveris nepārrakstīs ar starpniekserveri saistītos vides mainīgos. Ievadītā vērtība tiek nodota "kā ir", netiek veikta nekāda korektuma pārbaude.
Ņemiet vērā, ka ar HTTP starpniekserveri tiek atbalstīta tikai vienkāršā autentifikācija.
Atbalstītie makrosi: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, lietotāja makrosi, zema līmeņa atklāšanas makrosi.
Tas iestata cURL opciju CURLOPT_PROXY.
HTTP authentication Atlasiet autentifikācijas opciju:
None - autentifikācija netiek izmantota;
Basic - tiek izmantota pamata autentifikācija;
NTLM - tiek izmantota NTLM (Windows NT LAN Manager) autentifikācija;
Kerberos - tiek izmantota Kerberos autentifikācija (skatiet arī: Configuring Kerberos with Zabbix);
Digest - tiek izmantota Digest autentifikācija.
Tas iestata cURL opciju CURLOPT_HTTPAUTH.
User name Ievadiet lietotājvārdu (līdz 255 rakstzīmēm).
Šis lauks ir pieejams, ja HTTP authentication ir iestatīts uz Basic, NTLM, Kerberos vai Digest. Tiek atbalstīti lietotāja makrosi un zema līmeņa atklāšanas makrosi.
Password Ievadiet lietotāja paroli (līdz 255 rakstzīmēm).
Šis lauks ir pieejams, ja HTTP authentication ir iestatīts uz Basic, NTLM, Kerberos vai Digest. Tiek atbalstīti lietotāja makrosi un zema līmeņa atklāšanas makrosi.
SSL verify peer Atzīmējiet izvēles rūtiņu, lai pārbaudītu tīmekļa servera SSL sertifikātu. Servera sertifikāts tiks automātiski ņemts no sistēmas mēroga sertifikācijas iestādes (CA) atrašanās vietas. Varat pārrakstīt CA failu atrašanās vietu, izmantojot Zabbix servera vai starpniekservera konfigurācijas parametru SSLCALocation.
Tas iestata cURL opciju CURLOPT_SSL_VERIFYPEER.
SSL verify host Atzīmējiet izvēles rūtiņu, lai pārbaudītu, vai tīmekļa servera sertifikāta lauks Common Name vai lauks Subject Alternate Name atbilst.
Tas iestata cURL opciju CURLOPT_SSL_VERIFYHOST.
SSL certificate file Klienta autentifikācijai izmantotā SSL sertifikāta faila nosaukums. Sertifikāta failam jābūt PEM1 formātā. Ja sertifikāta fails satur arī privāto atslēgu, atstājiet lauku SSL key file tukšu. Ja atslēga ir šifrēta, norādiet paroli laukā SSL key password. Direktoriju, kurā atrodas šis fails, nosaka Zabbix servera vai starpniekservera konfigurācijas parametrs SSLCertLocation.
Atbalstītie makrosi: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, lietotāja makrosi, zema līmeņa atklāšanas makrosi.
Tas iestata cURL opciju CURLOPT_SSLCERT.
SSL key file Klienta autentifikācijai izmantotā SSL privātās atslēgas faila nosaukums. Privātās atslēgas failam jābūt PEM1 formātā. Direktoriju, kurā atrodas šis fails, nosaka Zabbix servera vai starpniekservera konfigurācijas parametrs SSLKeyLocation.
Atbalstītie makrosi: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, lietotāja makrosi, zema līmeņa atklāšanas makrosi.
Tas iestata cURL opciju CURLOPT_SSLKEY.
SSL key password SSL privātās atslēgas faila parole.
Atbalstītie makrosi: lietotāja makrosi, zema līmeņa atklāšanas makrosi.
Tas iestata cURL opciju CURLOPT_KEYPASSWD.
Timeout Zabbix URL apstrādei netērēs vairāk laika par iestatīto vērtību (1-600 sekundes). Faktiski šis parametrs nosaka maksimālo laiku savienojuma izveidei ar URL un maksimālo laiku HTTP pieprasījuma izpildei. Tādēļ Zabbix vienai pārbaudei netērēs vairāk par 2 x Timeout sekundēm.
Tas iestata cURL opciju CURLOPT_TIMEOUT.
Papildinformāciju par parametru Timeout skatiet sadaļā general item attributes.
Enable trapping Ja šī izvēles rūtiņa ir atzīmēta, vienums darbosies arī kā trapper vienums un pieņems datus, kas nosūtīti uz Zabbix serveri vai starpniekserveri, izmantojot utilītu Zabbix sender vai Zabbix sender protocol, vai pieņems datus, kas nosūtīti uz Zabbix serveri, izmantojot API metodi history.push. Papildinformāciju par datu sūtīšanu skatiet: Trapper items.
Allowed hosts Redzams tikai tad, ja ir atzīmēta izvēles rūtiņa Enable trapping.
Ar komatiem atdalīts IP adrešu saraksts, pēc izvēles CIDR pierakstā, vai DNS nosaukumi.
Ja norādīts, ienākošie savienojumi tiks pieņemti tikai no šeit uzskaitītajiem hostiem.
Ja ir iespējots IPv6 atbalsts, tad '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' tiek uzskatīti par vienādiem, un '::/0' atļaus jebkuru IPv4 vai IPv6 adresi.
'0.0.0.0/0' var izmantot, lai atļautu jebkuru IPv4 adresi.
Ņemiet vērā, ka "IPv4-compatible IPv6 addresses" (prefikss 0000::/96) tiek atbalstītas, bet ir novecojušas saskaņā ar RFC4291.
Piemērs: 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}
Šajā laukā ir atļautas atstarpes un lietotāja makrosi.
Šajā laukā ir atļauti hosta makrosi: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN}.

Ja lauks HTTP proxy ir atstāts tukšs, vēl viens veids, kā izmantot HTTP starpniekserveri, ir iestatīt ar starpniekserveri saistītos vides mainīgos.

HTTP gadījumā — iestatiet vides mainīgo http_proxy Zabbix servera lietotājam. Piemēram:
http_proxy=http://proxy_ip:proxy_port.

HTTPS gadījumā — iestatiet vides mainīgo HTTPS_PROXY. Piemēram:
HTTPS_PROXY=http://proxy_ip:proxy_port. Plašāka informācija ir pieejama, izpildot čaulas komandu: # man curl.

[1] Zabbix atbalsta tikai sertifikātu un privāto atslēgu failus PEM formātā. Ja jūsu sertifikāta un privātās atslēgas dati ir PKCS #12 formāta failā (parasti ar paplašinājumu *.p12 vai *.pfx), varat no tā ģenerēt PEM failu, izmantojot šādas komandas:

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

Piemēri

Piemērs 1

Sūtiet vienkāršus GET pieprasījumus, lai iegūtu datus no tādiem pakalpojumiem kā Elasticsearch:

  • Izveidojiet GET vienumu ar URL: localhost:9200/?pretty
  • Pievērsiet uzmanību atbildei:
    {
      "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"
    }
  • Tagad izgūstiet versijas numuru, izmantojot JSONPath priekšapstrādes soli: $.version.number
Piemērs 2

Sūtiet vienkāršus POST pieprasījumus, lai iegūtu datus no tādiem pakalpojumiem kā Elasticsearch:

  • Izveidojiet POST vienumu ar URL: http://localhost:9200/str/values/_search?scroll=10s
  • Konfigurējiet šādu POST pamattekstu, lai iegūtu procesora noslodzi (1 min vidējā vērtība uz kodolu)
    {
        "query": {
            "bool": {
                "must": [{
                    "match": {
                        "itemid": 28275
                    }
                }],
                "filter": [{
                    "range": {
                        "clock": {
                            "gt": 1517565836,
                            "lte": 1517566137
                        }
                    }
                }]
            }
        }
    }
  • Saņemts:
    {
        "_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
                }
            }]
        }
    }
  • Tagad izmantojiet JSONPath priekšapstrādes soli, lai iegūtu vienuma vērtību: $.hits.hits[0]._source.value
Piemērs 3

Pārbaude, vai Zabbix API darbojas, izmantojot apiinfo.version.

  • Vienuma konfigurācija:

Ņemiet vērā POST metodes izmantošanu ar JSON datiem, pieprasījuma galveņu iestatīšanu un norādi atgriezt tikai galvenes:

  • Vienuma vērtības priekšapstrāde ar regulāro izteiksmi, lai iegūtu HTTP kodu:

  • Rezultāta pārbaude sadaļā Jaunākie dati:

Piemērs 4

Laikapstākļu informācijas iegūšana, pieslēdzoties Openweathermap publiskajam servisam.

  • Konfigurējiet galveno vienumu lielapjoma datu vākšanai vienā JSON formātā:

Ņemiet vērā makrosu izmantošanu vaicājuma laukos. Skatiet Openweathermap API, lai uzzinātu, kā tos aizpildīt.

HTTP aģenta atbildē atgriezta JSON paraugs:

{
    "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
    }
}

Nākamais uzdevums ir konfigurēt atkarīgos vienumus, kas iegūst datus no JSON.

  • Konfigurējiet atkarīgā vienuma paraugu mitrumam:

Citi laikapstākļu rādītāji, piemēram, 'Temperature', tiek pievienoti tādā pašā veidā.

  • Atkarīgā vienuma vērtības priekšapstrādes paraugs ar JSONPath:

  • Pārbaudiet laikapstākļu datu rezultātu sadaļā Jaunākie dati:

Piemērs 5

Savienojuma izveide ar Nginx statusa lapu un tās metriku iegūšana paketē.

  • Konfigurējiet Nginx, ievērojot oficiālo ceļvedi.
  • Konfigurējiet galveno vienumu pakešveida datu vākšanai:

Nginx stub status parauga izvade:

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

Nākamais uzdevums ir konfigurēt atkarīgos vienumus, kas izgūst datus.

  • Konfigurējiet atkarīgā vienuma paraugu pieprasījumiem sekundē:

  • Atkarīgā vienuma vērtības pirmapstrādes paraugs ar regulāro izteiksmi server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+):

  • Pārbaudiet pilno rezultātu no stub moduļa sadaļā Jaunākie dati: