16 HTTP agent

Overzicht

Dit itemtype maakt gegevenspolling mogelijk met behulp van het HTTP/HTTPS-protocol. Het is ook mogelijk om te trappen met behulp van de Zabbix-sender of het Zabbix-senderprotocol.

HTTP-itemcontrole wordt uitgevoerd door de Zabbix-server. Wanneer hosts echter worden gemonitord door een Zabbix-proxy, worden HTTP-itemcontroles uitgevoerd door de proxy.

HTTP-itemcontroles vereisen geen agent die wordt uitgevoerd op een host die wordt gemonitord.

De HTTP-agent ondersteunt zowel HTTP als HTTPS. Zabbix zal optioneel redirects volgen (zie de optie Volg redirects hieronder). Het maximale aantal redirects is hard-coded op 10 (met behulp van cURL-optie CURLOPT_MAXREDIRS).

Zabbix-server/-proxy moet aanvankelijk zijn geconfigureerd met cURL (libcurl) ondersteuning.

Configuratie

Om een HTTP-item te configureren:

  • Ga naar: ConfigurationHosts
  • Klik op Items in de rij van de host
  • Klik op Create item
  • Voer de parameters van het item in het formulier in

Afbeelding

Alle verplichte invoervelden zijn gemarkeerd met een rode asterisk.

De velden die specifieke informatie vereisen voor HTTP-items zijn:

Parameter Beschrijving
Type Selecteer hier HTTP agent.
Key Voer een unieke item key in.
URL URL om verbinding mee te maken en gegevens op te halen. Bijvoorbeeld:
https://www.example.com
http://www.example.com/download
Domeinnamen kunnen worden gespecificeerd in Unicode-karakters. Ze worden automatisch omgezet naar ASCII met punycode bij het uitvoeren van de HTTP-controle.
De knop Parse kan worden gebruikt om optionele queryvelden (zoals ?name=Admin&password=mypassword) van de URL te scheiden, waarbij de attributen en waarden worden verplaatst naar Query fields voor automatische URL-codering.
Beperkt tot 2048 tekens.
Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.
Dit stelt de CURLOPT_URL cURL-optie in.
Query fields Variabelen voor de URL (zie hierboven).
Opgegeven als attribuut- en waardeparen.
Waarden worden automatisch URL-gecodeerd. Waarden van macro's worden automatisch opgelost en vervolgens automatisch URL-gecodeerd.
Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.
Dit stelt de CURLOPT_URL cURL-optie in.
Request type Selecteer het soort verzoeksmethode: GET, POST, PUT of HEAD
Timeout Zabbix zal niet meer tijd besteden aan het verwerken van de URL dan de ingestelde hoeveelheid tijd (1-60 seconden). Eigenlijk definieert deze parameter de maximale tijd voor het maken van een verbinding met de URL en de maximale tijd voor het uitvoeren van een HTTP-verzoek. Daarom zal Zabbix niet meer dan 2 x Timeout seconden besteden aan één controle.
Tijdssuffixen worden ondersteund, bijvoorbeeld 30s, 1m.
Ondersteunde macro's: gebruikersmacro's, macro's voor low-level discovery.
Dit stelt de CURLOPT_TIMEOUT cURL-optie in.
Request body type Selecteer het type verzoeksblok:
Rauwe gegevens - aangepast HTTP-verzoeksblok, macro's worden vervangen maar er wordt geen codering uitgevoerd
JSON-gegevens - HTTP-verzoeksblok in JSON-indeling. Macro's kunnen worden gebruikt als string, nummer, true en false; macro's die als strings worden gebruikt, moeten tussen dubbele aanhalingstekens worden geplaatst. Waarden van macro's worden automatisch opgelost en vervolgens automatisch ontsnapt. Als "Content-Type" niet is gespecificeerd in de kopteksten, wordt standaard "Content-Type: application/json" gebruikt
XML-gegevens - HTTP-verzoeksblok in XML-indeling. Macro's kunnen worden gebruikt als een tekstknooppunt, attribuut of CDATA-sectie. Waarden van macro's worden automatisch opgelost en vervolgens automatisch ontsnapt in een tekstknooppunt en attribuut. Als "Content-Type" niet is gespecificeerd in de kopteksten, wordt standaard "Content-Type: application/xml" gebruikt
Opmerking dat het selecteren van XML-gegevens libxml2 vereist.
Request body Voer het verzoeksblok in.
Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.
Headers Aangepaste HTTP-kopteksten die worden verzonden bij het uitvoeren van een verzoek.
Opgegeven als attribuut- en waardeparen.
Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.
Dit stelt de CURLOPT_HTTPHEADER cURL-optie in.
Required status codes Lijst van verwachte HTTP-statuscodes. Als
Zabbix een code krijgt die niet in de lijst staat, wordt het item niet ondersteund. Als leeg, wordt er geen controle uitgevoerd.
Bijvoorbeeld: 200,201,210-299
Ondersteunde macro's in de lijst: gebruikersmacro's, macro's voor low-level discovery.
Dit gebruikt de CURLINFO_RESPONSE_CODE cURL-optie.
Follow redirects Markeer het selectievakje om HTTP-omleidingen te volgen.
Dit stelt de CURLOPT_FOLLOWLOCATION cURL-optie in.
Retrieve mode Selecteer het deel van het antwoord dat moet worden opgehaald:
Body - alleen de body
Headers - alleen kopteksten
Body en kopteksten - body en kopteksten
Convert to JSON Kopteksten worden opgeslagen als attribuut- en waardeparen onder de sleutel "header".
Als 'Content-Type: application/json' wordt aangetroffen, wordt de body opgeslagen als een object, anders wordt deze opgeslagen als een string, bijvoorbeeld:
Afbeelding
HTTP proxy U kunt een HTTP-proxy opgeven om te gebruiken, met het formaat [protocol://][gebruikersnaam[:wachtwoord]@]proxy.example.com[:poort].
Het optionele voorvoegsel protocol:// kan worden gebruikt om alternatieve proxyprotocollen te specificeren (bijv. https, socks4, socks5; zie de documentatie; de protocolvoorvoegselondersteuning werd toegevoegd in cURL 7.21.7). Zonder opgegeven protocol wordt de proxy behandeld als een HTTP-proxy. Als u het verkeerde protocol opgeeft, mislukt de verbinding en wordt het item niet ondersteund.
Standaard wordt poort 1080 gebruikt.
Indien gespecificeerd, zal de proxy proxy-gerelateerde omgevingsvariabelen overschrijven zoals http_proxy, HTTPS_PROXY. Als niet gespecificeerd, zal de proxy geen proxy-gerelateerde omgevingsvariabelen overschrijven. De ingevoerde waarde wordt "zoals is" doorgegeven, er vindt geen controle plaats.
Opmerking dat alleen eenvoudige authenticatie wordt ondersteund met een HTTP-proxy.
Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.
Dit stelt de CURLOPT_PROXY cURL-optie in.
HTTP-authenticatie Authenticatietype:
Geen - geen authenticatie gebruikt.
Basis - basisauthenticatie wordt gebruikt.
NTLM - NTLM (Windows NT LAN Manager)-authenticatie wordt gebruikt.
Kerberos - Kerberos-authenticatie wordt gebruikt. Zie ook: Kerberos configureren met Zabbix.
Digest - Digest-authenticatie wordt gebruikt.
Het selecteren van een authenticatiemethode zal twee extra velden bieden voor het invoeren van een gebruikersnaam en wachtwoord, waarbij gebruikersmacro's en macro's voor low-level discovery worden ondersteund.
Dit stelt de CURLOPT_HTTPAUTH cURL-optie in.
SSL-verifieer peer Markeer het selectievakje om het SSL-certificaat van de webserver te verifiëren. Het servercertificaat wordt automatisch overgenomen uit de locatie van de systeembrede certificeringsinstantie (CA). U kunt de locatie van CA-bestanden overschrijven met de Zabbix server- of proxy-configuratieparameter
SSLCALocation.
Dit stelt de CURLOPT_SSL_VERIFYPEER cURL-optie in.
SSL-verifieer host Markeer het selectievakje om te verifiëren dat het veld Common Name of het veld Subject Alternate Name van het certificaat van de webserver overeenkomt.
Dit stelt de CURLOPT_SSL_VERIFYHOST cURL-optie in.
SSL-certificaatbestand Naam van het SSL-certificaatbestand dat wordt gebruikt voor clientauthenticatie. Het certificaatbestand moet in PEM1-indeling zijn. Als het certificaatbestand ook de privésleutel bevat, laat dan het veld SSL-sleutelbestand leeg. Als de sleutel is versleuteld, specificeert u het wachtwoord in het veld SSL-sleutelwachtwoord. De directory die dit bestand bevat, wordt gespecificeerd door de Zabbix server- of proxy-configuratieparameter SSLCertLocation.
Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.
Dit stelt de CURLOPT_SSLCERT cURL-optie in.
SSL-sleutelbestand Naam van het SSL-privésleutelbestand dat wordt gebruikt voor clientauthenticatie. Het privésleutelbestand moet in PEM1-indeling zijn. De directory die dit bestand bevat, wordt gespecificeerd door de Zabbix server- of proxy-configuratieparameter SSLKeyLocation.
Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macro's voor low-level discovery.
Dit stelt de CURLOPT_SSLKEY cURL-optie in.
SSL-sleutelwachtwoord Wachtwoord voor het privésleutelbestand voor SSL.
Ondersteunde macro's: gebruikersmacro's, macro's voor low-level discovery.
Dit stelt de CURLOPT_KEYPASSWD cURL-optie in.
Trapping inschakelen Met dit selectievakje gemarkeerd, zal het item ook fungeren als trapper-item en zal het gegevens accepteren die naar dit item zijn gestuurd door Zabbix-sender of met behulp van het Zabbix-senderprotocol.
Toegestane hosts Alleen zichtbaar als het selectievakje Trapping inschakelen is gemarkeerd.
Lijst van komma-gescheiden IP-adressen, optioneel in CIDR-notatie, of DNS-namen.
Indien opgegeven, worden inkomende verbindingen alleen geaccepteerd van de hier vermelde hosts.
Als IPv6-ondersteuning is ingeschakeld, worden '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' op dezelfde manier behandeld en laat '::/0' elk IPv4- of IPv6-adres toe.
'0.0.0.0/0' kan worden gebruikt om elk IPv4-adres toe te staan.
Let op, "IPv4-compatibele IPv6-adressen" (0000::/96 prefix) worden ondersteund maar zijn verouderd volgens RFC4291.
Voorbeeld: 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}
Spaties en gebruikersmacro's zijn toegestaan in dit veld.
Hostmacro's: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} zijn toegestaan in dit veld.

Als het veld HTTP-proxy leeg wordt gelaten, is een andere manier om een HTTP-proxy te gebruiken, het instellen van proxy-gerelateerde omgevingsvariabelen.

Voor HTTP - stel de http_proxy omgevingsvariabele in voor de Zabbix servergebruiker. Bijvoorbeeld:
http_proxy=http://proxy_ip:proxy_port.

Voor HTTPS - stel de HTTPS_PROXY omgevingsvariabele in. Bijvoorbeeld:
HTTPS_PROXY=http://proxy_ip:proxy_port. Meer details zijn beschikbaar via een shell-opdracht: # man curl.

[1] Zabbix ondersteunt certificaat- en privésleutelbestanden alleen in PEM-indeling. In het geval dat uw certificaat- en privésleutelgegevens in PKCS #12-indeling (meestal met de extensie *.p12 of *.pfx) staan, kunt u het PEM-bestand ervan genereren met behulp van de volgende opdrachten:

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

Voorbeelden

Voorbeeld 1

Stuur eenvoudige GET-verzoeken om gegevens op te halen van diensten zoals Elasticsearch:

  • Maak een GET-item met URL: localhost:9200/?pretty
  • Let op de reactie:
{
         "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"
       }
  • Haal nu het versienummer eruit met behulp van een JSONPath voorbewerkingsstap: $.version.number
Voorbeeld 2

Stuur eenvoudige POST-verzoeken om gegevens op te halen van diensten zoals Elasticsearch:

  • Maak een POST-item met URL: http://localhost:9200/str/values/_search?scroll=10s
  • Configureer het volgende POST-lichaam om de processorbelasting op te halen (gemiddelde van 1 minuut per kern):
{
           "query": {
               "bool": {
                   "must": [{
                       "match": {
                           "itemid": 28275
                       }
                   }],
                   "filter": [{
                       "range": {
                           "clock": {
                               "gt": 1517565836,
                               "lte": 1517566137
                           }
                       }
                   }]
               }
           }
       }
  • Ontvangen:
{
           "_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkVZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcBI0QUxR",
           "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
                   }
               }]
           }
       }
  • Gebruik nu een JSONPath voorbewerkingsstap om de itemwaarde te krijgen: $.hits.hits[0]._source.value
Voorbeeld 3

Controleren of de Zabbix API actief is, met gebruik van apiinfo.version.

  • Itemconfiguratie:

Let op het gebruik van de POST-methode met JSON-gegevens, het instellen van verzoekheaders en het vragen om alleen headers terug te geven:

  • Voorbewerking van itemwaarde met reguliere expressie om HTTP-code te verkrijgen:

  • Controleer het resultaat in Laatste gegevens:

Voorbeeld 4

Weerinformatie ophalen door verbinding te maken met de Openweathermap openbare dienst.

  • Configureer een hoofditem voor het verzamelen van bulkgegevens in één JSON:

Let op het gebruik van macro's in query-velden. Raadpleeg de Openweathermap API voor hoe u deze moet invullen.

Voorbeeld-JSON die wordt teruggestuurd als reactie op de HTTP-agent:

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

De volgende taak is het configureren van afhankelijke items die gegevens uit de JSON-extract.

  • Configureer een voorbeeld afhankelijk item voor luchtvochtigheid:

Andere weersmetingen zoals 'Temperatuur' worden op dezelfde manier toegevoegd.

  • Voorbeeld voorbewerking van afhankelijke itemwaarde met JSONPath:

  • Controleer het resultaat van weergegevens in Laatste gegevens:

Voorbeeld 5

Verbinding maken met de Nginx-statuspagina en de metrieken in bulk verkrijgen.

  • Configureer een hoofditem voor het verzamelen van bulkgegevens:

Voorbeelduitvoer van Nginx stub-status:

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

De volgende taak is het configureren van afhankelijke items die gegevens uit de extract.

  • Configureer een voorbeeld afhankelijk item voor verzoeken per seconde:

Voorbeeld voorbewerking van afhankelijke itemwaarde met reguliere expressie server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+):

Controleer het volledige resultaat van het stub-module in Laatste gegevens: