9 HTTP aģents

Pārskats

Šis vienuma tips ļauj veikt datu aptauju, izmantojot HTTP/HTTPS protokolu. Ir iespējama arī datu iesūtīšana, izmantojot Zabbix sender utilītu vai Zabbix sender protokolu (datu nosūtīšanai uz Zabbix serveri vai starpniekserveri), vai izmantojot history.push API metodi (datu nosūtīšanai uz Zabbix serveri).

HTTP vienumu pārbaudes izpilda Zabbix serveris. Tomēr, ja hosts tiek uzraudzīti ar Zabbix starpniekserveri, HTTP vienumu pārbaudes izpilda starpniekserveris.

HTTP vienumu pārbaudēm nav nepieciešams, lai uz uzraudzītā 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 esošo 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 viena pieprasījuma atbildi, pirms tiek sāktas citas pārbaudes. DNS atrisināšana arī ir asinhrona.

Asinhrono pārbaužu maksimālais paralēlais skaits ir 1000 (definēts ar MaxConcurrentChecksPerPoller).

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

Pastāvīgo savienojumu cURL funkcionalitāte HTTP aģenta pārbaudēm ir pievienota kopš Zabbix 7.0.

Konfigurācija

Lai konfigurētu HTTP vienumu:

  1. Dodieties uz Data collection > Hosts.
  2. Hosts rindā noklikšķiniet uz Items.
  3. Noklikšķiniet uz Create item.
  4. Formā ievadiet vienuma parametrus.

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 agent.
Key Ievadiet unikālu vienuma atslēgu.
URL URL, ar kuru izveidot savienojumu un no kura 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. Veicot HTTP pārbaudi, tie automātiski tiek pārveidoti no punycode uz ASCII.
Pogu Parse var izmantot, lai atdalītu izvēles vaicājuma laukus (piemēram, ?name=Admin&password=mypassword) no URL, pārvietojot atribūtus un vērtības uz Query fields automātiskai URL kodēšanai.
Atļauts 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, zemā līmeņa atklāšanas makrosi.
Tas iestata CURLOPT_URL cURL opciju.
Query fields URL mainīgie (skat. iepriekš).
Norādāmi kā atribūtu un vērtību pāri.
Vērtības tiek automātiski URL kodētas. Vērtības no makro 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, zemā līmeņa atklāšanas makrosi.
Tas iestata CURLOPT_URL cURL opciju.
Request type Atlasiet pieprasījuma metodi: GET, POST, PUT vai HEAD
Request body type Atlasiet pieprasījuma ķermeņa tipu:
Raw data - pielāgots HTTP pieprasījuma ķermenis, makrosi tiek aizstāti, bet kodēšana netiek veikta
JSON data - HTTP pieprasījuma ķermenis JSON formātā. Makrosus var izmantot kā virkni, skaitli, true un false; makrosi, kas tiek izmantoti kā virknes, jāievieto dubultpēdiņās. Vērtības no makro tiek atrisinātas un pēc tam automātiski atbilstoši ekrānētas.
Ja galvenēs nav norādīts "Content-Type", pēc noklusējuma tiks izmantots "Content-Type: application/json"
XML data - HTTP pieprasījuma ķermenis XML formātā. Makrosus var izmantot kā teksta mezglu, atribūtu vai CDATA sadaļu. Vērtības no makro tiek atrisinātas un pēc tam automātiski atbilstoši ekrānētas teksta mezglā un atribūtā. Ja galvenēs nav norādīts "Content-Type", pēc noklusējuma tiks izmantots "Content-Type: application/xml"
Piezīme — lai atlasītu XML data, ir nepieciešams libxml2.
Request body Ievadiet pieprasījuma ķermeni.
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, zemā līmeņa atklāšanas makrosi.
Headers Pielāgotas HTTP galvenes, kas tiks nosūtītas, veicot pieprasījumu.
Norādāmas 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, zemā līmeņa atklāšanas makrosi.
Tas iestata CURLOPT_HTTPHEADER cURL opciju.
Required status codes Sagaidāmo HTTP statusa kodu saraksts. Ja Zabbix saņem kodu, kas nav sarakstā, vienums kļūs neatbalstīts. Ja lauks ir tukšs, pārbaude netiek veikta.
Piemēram: 200,201,210-299
Sarakstā atbalstītie makrosi: lietotāja makrosi, zemā līmeņa atklāšanas makrosi.
Tiek izmantota CURLINFO_RESPONSE_CODE cURL opcija.
Follow redirects Atzīmējiet izvēles rūtiņu, lai sekotu HTTP pāradresācijām.
Tas iestata CURLOPT_FOLLOWLOCATION cURL opciju.
Retrieve mode Atlasiet to atbildes daļu, kas jāiegūst:
Body - tikai ķermenis
Headers - tikai galvenes
Body and headers - ķermenis un galvenes
Convert to JSON Ja Retrieve mode nav iestatīts uz Body, galvenes tiek saglabātas kā atribūtu un vērtību pāri zem atslēgas "header".
Ja tiek atrasts 'Content-Type: application/json', ķermenis tiek saglabāts kā objekts, pretējā gadījumā tas tiek glabā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ātais prefikss protocol:// var tikt izmantots, lai norādītu alternatīvus starpniekservera protokolus (piemēram, https, socks4, socks5; skat. 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", bez jebkādas pārbaudes.
Piezīme — ar HTTP starpniekserveri tiek atbalstīta tikai vienkārša 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, zemā līmeņa atklāšanas makrosi.
Tas iestata CURLOPT_PROXY cURL opciju.
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 (skat. arī: Kerberos konfigurēšana ar Zabbix);
Digest - tiek izmantota Digest autentifikācija.
Tas iestata CURLOPT_HTTPAUTH cURL opciju.
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 zemā 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 zemā 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ātu iestādes (CA) atrašanās vietas. CA failu atrašanās vietu var pārrakstīt, izmantojot Zabbix servera vai starpniekservera konfigurācijas parametru SSLCALocation.
Tas iestata CURLOPT_SSL_VERIFYPEER cURL opciju.
SSL verify host Atzīmējiet izvēles rūtiņu, lai pārbaudītu, vai tīmekļa servera sertifikāta Common Name lauks vai Subject Alternate Name lauks atbilst.
Tas iestata CURLOPT_SSL_VERIFYHOST cURL opciju.
SSL certificate file SSL sertifikāta faila nosaukums, ko izmanto klienta autentifikācijai. Sertifikāta failam jābūt PEM1 formātā. Ja sertifikāta failā ir arī privātā atslēga, atstājiet SSL atslēgas faila lauku tukšu. Ja atslēga ir šifrēta, norādiet paroli SSL atslēgas paroles laukā. Katalogs, kurā atrodas šis fails, tiek norādīts ar Zabbix servera vai starpniekservera konfigurācijas parametru 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, zemā līmeņa atklāšanas makrosi.
Tas iestata CURLOPT_SSLCERT cURL opciju.
SSL key file SSL privātās atslēgas faila nosaukums, ko izmanto klienta autentifikācijai. Privātās atslēgas failam jābūt PEM1 formātā. Katalogs, kurā atrodas šis fails, tiek norādīts ar Zabbix servera vai starpniekservera konfigurācijas parametru 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, zemā līmeņa atklāšanas makrosi.
Tas iestata CURLOPT_SSLKEY cURL opciju.
SSL key password SSL privātās atslēgas faila parole.
Atbalstītie makrosi: lietotāja makrosi, zemā līmeņa atklāšanas makrosi.
Tas iestata CURLOPT_KEYPASSWD cURL opciju.
Timeout Zabbix nepavadīs vairāk par iestatīto laiku URL apstrādei (1-600 sekundes). Faktiski šis parametrs nosaka maksimālo laiku savienojuma izveidei ar URL un maksimālo laiku HTTP pieprasījuma veikšanai. Tāpēc Zabbix vienai pārbaudei nepavadīs vairāk par 2 x Timeout sekundēm.
Tas iestata CURLOPT_TIMEOUT cURL opciju.
Vairāk informācijas par Timeout parametru skatiet vispārīgajos vienuma atribūtos.
Enable trapping Ja šī izvēles rūtiņa ir atzīmēta, vienums darbosies arī kā traperis vienums un pieņems datus, kas nosūtīti uz Zabbix serveri vai starpniekserveri, izmantojot utilītu Zabbix sender vai Zabbix sender protokolu, vai arī pieņems datus, kas nosūtīti uz Zabbix serveri, izmantojot history.push API metodi. Plašāku informāciju par datu nosūtīšanu skatiet: Traperis vienumi.
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 notācijā, vai DNS nosaukumi.
Ja norādīts, ienākošie savienojumi tiks pieņemti tikai no šeit uzskaitītajiem hosts.
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" (0000::/96 prefikss) 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 hosts makrosi: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN}.

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

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

HTTPS gadījumā iestatiet HTTPS_PROXY vides mainīgo. Piemēram:
HTTPS_PROXY=http://proxy_ip:proxy_port. Papildu informāciju var iegūt, izpildot čaulas komandu: # man curl.

[1] Zabbix atbalsta tikai PEM formāta sertifikātu un privātās atslēgas failus. Ja sertifikāta un privātās atslēgas dati ir PKCS #12 formāta failā (parasti ar paplašinājumu *.p12 vai *.pfx), no tā varat izveidot 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

Nosūtiet vienkāršus GET pieprasījumus, lai izgū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 izvelciet versijas numuru, izmantojot JSONPath pirmapstrādes soli: $.version.number
Piemērs 2

Nosūtiet vienkāršus POST pieprasījumus, lai izgū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 ķermeni, lai iegūtu procesora noslodzi (1 minūtes vidējais rādītājs 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 pirmapstrādes soli, lai iegūtu vienuma vērtību: $.hits.hits[0]._source.value
Piemērs 3

Pārbauda, vai Zabbix API ir aktīva, izmantojot apiinfo.version.

  • Vienuma konfigurācija:

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

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

  • Rezultāta pārbaude sadaļā Latest data:

Piemērs 4

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

  • Konfigurējiet galveno vienumu lielapjoma datu apkopošanai vienā JSON:

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

Parauga JSON, kas atgriezts HTTP aģenta atbildē:

{
    "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 no JSON izgūst datus.

  • Konfigurējiet parauga atkarīgo vienumu mitrumam:

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

  • Parauga atkarīgā vienuma vērtības pirmapstrāde ar JSONPath:

  • Pārbaudiet laikapstākļu datu rezultātu sadaļā Latest data:

Piemērs 5

Savienošana ar Nginx statusa lapu un tās metrikas iegūšana masveidā.

  • Konfigurējiet Nginx, ievērojot oficiālo rokasgrāmatu.
  • Konfigurējiet galveno vienumu masveida datu vākšanai:

Nginx stub statusa izvades paraugs:

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 iegūst datus.

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

  • Atkarīgā vienuma vērtības priekšapstrā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ļā Latest data: