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 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: |
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:
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
Stuur 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": "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
}
}]
}
}
$.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:
Weerinformatie ophalen door verbinding te maken met de Openweathermap openbare dienst.
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.
Andere weersmetingen zoals 'Temperatuur' worden op dezelfde manier toegevoegd.
Verbinding maken met de Nginx-statuspagina en de metrieken in bulk verkrijgen.
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.
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: