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: