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.
Om een HTTP-item te configureren:
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 itemsleutel 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-tekens. Ze worden automatisch omgezet in punycode naar ASCII bij het uitvoeren van de HTTP-check. De knop Parse kan worden gebruikt om optionele queryvelden (zoals ?name=Admin&password=mypassword) van de URL te scheiden en de attributen en waarden naar Query fields te verplaatsen 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, macros voor laagniveaudetectie. Dit stelt de CURLOPT_URL cURL-optie in. |
Query fields | Variabelen voor de URL (zie hierboven). Opgespecificeerd 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, macros voor laagniveaudetectie. Dit stelt de CURLOPT_URL cURL-optie in. |
Request type | Selecteer het type aanvraagmethode: 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). In feite bepaalt deze parameter de maximale tijd voor het maken van een verbinding met de URL en de maximale tijd voor het uitvoeren van een HTTP-aanvraag. Daarom zal Zabbix niet meer dan 2 x Time-out seconden besteden aan één controle. Tijd bijvoegsels worden ondersteund, bijv. 30s, 1m. Ondersteunde macro's: gebruikersmacro's, macros voor laagniveaudetectie. Dit stelt de CURLOPT_TIMEOUT cURL-optie in. |
Request body type | Selecteer het type aanvraagbody: Rauwe gegevens - aangepaste HTTP-aanvraagbody, macro's worden vervangen maar er wordt geen codering uitgevoerd JSON-gegevens - HTTP-aanvraagbody in JSON-indeling. Macro's kunnen worden gebruikt als tekenreeks, getal, true en false; macro's die als tekenreeks worden gebruikt, moeten worden ingesloten in dubbele aanhalingstekens. Waarden van macro's worden automatisch opgelost en vervolgens automatisch ontsnapt. Als "Content-Type" niet is gespecificeerd in de koppen, wordt dit standaard "Content-Type: application/json" XML-gegevens - HTTP-aanvraagbody in XML-indeling. Macro's kunnen worden gebruikt als 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 koppen, wordt dit standaard "Content-Type: application/xml" Let op dat het selecteren van XML-gegevens libxml2 vereist. |
Request body | Voer de aanvraagbody in. Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macros voor laagniveaudetectie. |
Headers | Aangepaste HTTP-koppen die worden verzonden bij het uitvoeren van een aanvraag. Opgespecificeerd 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, macros voor laagniveaudetectie. 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 geen controle uitgevoerd. Bijvoorbeeld: 200,201,210-299 Ondersteunde macro's in de lijst: gebruikersmacro's, macros voor laagniveaudetectie. 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 koppen Body en headers - body en headers |
Convert to JSON | Koppen 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 tekenreeks, bijvoorbeeld: |
HTTP proxy | Je kunt een HTTP-proxy specificeren die moet worden gebruikt, met behulp van het formaat [protocol://][username[:password]@]proxy.example.com[:port] .De optionele voorvoegsel protocol:// kan worden gebruikt om alternatieve proxy-protocollen op te geven (bijv. https, socks4, socks5; zie documentatie; de protocolvoorvoegselondersteuning is toegevoegd in cURL 7.21.7). Zonder gespecificeerd protocol wordt de proxy behandeld als een HTTP-proxy. Als je 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 zoals http_proxy, HTTPS_PROXY overschrijven. Als niet gespecificeerd, zal de proxy proxy-gerelateerde omgevingsvariabelen niet overschrijven. De ingevoerde waarde wordt "zoals het is" doorgegeven, er vindt geen controle plaats. Let op dat alleen eenvoudige verificatie wordt ondersteund met HTTP-proxy. Ondersteunde macro's: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, gebruikersmacro's, macros voor laagniveaudetectie. Dit stelt de CURLOPT_PROXY cURL-optie in. |
HTTP authentication | Type authenticatie: Geen - er wordt geen authenticatie gebruikt. Basis - basisverificatie wordt gebruikt. NTLM - NTLM (Windows NT LAN Manager)-verificatie wordt gebruikt. Kerberos - Kerberos-verificatie wordt gebruikt. Zie ook: Kerberos configureren met Zabbix. Digest - Digest-verificatie wordt gebruikt. Het selecteren van een verificatiemethode zal twee extra velden bieden om een gebruikersnaam en wachtwoord in te voeren, waar gebruikersmacro's en laagniveaudetectie-macro's worden ondersteund. Dit stelt de CURLOPT_HTTPAUTH cURL-optie in. |
SSL verify peer | Markeer het selectievakje om het SSL-certificaat van de webserver te verifiëren. Het servercertificaat wordt automatisch overgenomen uit de systeembrede locatie van de certificaatautoriteit (CA). Je 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 verify 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 certificate file | Naam van het SSL-certificaatbestand dat wordt gebruikt voor clientverificatie. Het certificaatbestand moet in PEM-indeling zijn. Als het certificaatbestand ook de privésleutel bevat, laat dan het veld SSL-sleutelbestand leeg. Als de sleutel is versleuteld, geef dan het wachtwoord op in het veld SSL-sleutelwachtwoord. De map 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, macros voor laagniveaudetectie. Dit stelt de CURLOPT_SSLCERT cURL-optie in. |
SSL key file | Naam van het SSL-privésleutelbestand dat wordt gebruikt voor clientverificatie. Het privésleutelbestand moet in PEM-indeling zijn. De map 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, macros voor laagniveaudetectie. Dit stelt de CURLOPT_SSLKEY cURL-optie in. |
SSL key password | Wachtwoord voor het SSL-privésleutelbestand. Ondersteunde macro's: gebruikersmacro's, macros voor laagniveaudetectie. Dit stelt de CURLOPT_KEYPASSWD cURL-optie in. |
Enable trapping | Met dit selectievakje gemarkeerd, zal het item ook functioneren als trapper-item en zal het gegevens accepteren die naar dit item zijn gestuurd door Zabbix-sender of met behulp van het Zabbix-senderprotocol. |
Allowed hosts | Alleen zichtbaar als het selectievakje Enable trapping is gemarkeerd. Lijst van door komma's gescheiden IP-adressen, optioneel in CIDR-notatie, of DNS-namen. Indien gespecificeerd, worden inkomende verbindingen alleen geaccepteerd van de hier vermelde hosts. Indien IPv6-ondersteuning is ingeschakeld, worden '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' gelijk behandeld en '::/0' zal elk IPv4- of IPv6-adres toestaan. '0.0.0.0/0' kan worden gebruikt om elk IPv4-adres toe te staan. Merk op dat "IPv4-compatibele IPv6-adressen" (0000::/96-prefix) worden ondersteund maar verouderd zijn 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 om proxy-gerelateerde omgevingsvariabelen in te stellen.
Voor HTTP - stel de http_proxy
-omgevingsvariabele in voor de Zabbix server-gebruiker. 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 door het uitvoeren van een shell-opdracht: # man curl.
[1] Zabbix ondersteunt alleen certificaat- en privésleutelbestanden in PEM-indeling. Als je je certificaat- en privésleutelgegevens in het bestandsformaat PKCS #12 hebt (meestal met de extensie *.p12 of *.pfx), kun je het PEM-bestand ervan genereren met behulp van de volgende opdrachten:
Stuur eenvoudige GET-verzoeken om gegevens op te halen van diensten zoals Elasticsearch:
localhost:9200/?pretty
{
"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"
}
$.version.number
Verstuur eenvoudige POST-verzoeken om gegevens op te halen van diensten zoals Elasticsearch:
http://localhost:9200/str/values/_search?scroll=10s
{
"query": {
"bool": {
"must": [{
"match": {
"itemid": 28275
}
}],
"filter": [{
"range": {
"clock": {
"gt": 1517565836,
"lte": 1517566137
}
}
}]
}
}
}
{
"_scroll_id": "DnF1ZXJ5VGhlbkZldGNoBQAAAAAAAAAkFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAJRZZUTJWQVktVFNacU5nRHhlcEI0QUxRAAAAAAAAACYWWVEyVkVZLVRTWnFOZ0R4ZXBCNEFMUQAAAAAAAAAnFllRMlZBWS1UU1pxTmdEeGVwQjRBTFEAAAAAAAAAKBZZUTJWQVktVFNacU5nRHhlcEI0QUxR",
"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
}
}]
}
}
$.hits.hits[0]._source.value
Controleren of de Zabbix API actief is, met gebruik van apiinfo.version.
Let op het gebruik van de POST-methode met JSON-gegevens, het instellen van verzoekheaders en het vragen om alleen headers terug te geven:
Het ophalen van weergegevens door verbinding te maken met de Openweathermap openbare service.
Let op het gebruik van macro's in query-velden. Raadpleeg de Openweathermap API voor hoe u ze moet invullen.
Voorbeeld JSON dat in reactie op de HTTP-agent wordt geretourneerd:
{
"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 stap is om afhankelijke items te configureren die gegevens uit de JSON halen.
Andere weermeters zoals 'Temperatuur' worden op dezelfde manier toegevoegd.
Verbinding maken met de Nginx-statuspagina en de bijbehorende gegevens in bulk ophalen.
# Plaats de volgende configuratie in uw Nginx-configuratiebestand, meestal nginx.conf of een siteconfiguratiebestand.
location /nginx_status {
stub_status on;
access_log off;
allow 127.0.0.1; # Hiermee kunt u alleen verbinding maken met de statuspagina vanaf localhost
deny all; # Alle andere IP-adressen worden geweigerd
}
Voorbeeld van uitvoer van Nginx stub-status:
Active connections: 1 Active connections:
server accepts handled requests
52 52 52
Reading: 0 Writing: 1 Waiting: 0
De volgende stap is om afhankelijke items te configureren die gegevens extraheren.
server accepts handled requests\s+([0-9]+) ([0-9]+) ([0-9]+)
: