This item type allows data polling using the HTTP/HTTPS protocol. Trapping is also possible using the
Zabbix sender
utility or Zabbix sender
protocol
(for sending data to Zabbix server or proxy), or using the
history.push
API method (for sending data to Zabbix server).
HTTP item checks are executed by Zabbix server. However, when hosts are monitored by a Zabbix proxy, HTTP item checks are executed by the proxy.
HTTP item checks do not require any agent running on a host being monitored.
HTTP agent supports both HTTP and HTTPS. Zabbix will optionally follow redirects (see the
Follow redirects
option below). Maximum number of redirects is hard-coded to 10 (using cURL option CURLOPT_MAXREDIRS).
Zabbix server/proxy must be initially configured with cURL (libcurl) support.
HTTP checks are executed asynchronously - it is not required to receive the response to one request before other checks are started. DNS resolving is asynchronous as well.
The number of asynchronous HTTP agent pollers is defined by the
StartHTTPAgentPollers
parameter.
The persistent connections cURL feature has been added to HTTP agent checks since Zabbix 7.0.
Configuration
To configure an HTTP item:
Go to:
Data collection
→
Hosts
Click on
Items
in the row of the host
Click on
Create item
Enter parameters of the item in the form
All mandatory input fields are marked with a red asterisk.
The fields that require specific information for HTTP items are:
URL to connect to and retrieve data. For example:
https://www.example.com
http://www.example.com/download
Domain names can be specified in Unicode characters. They are automatically punycode-converted to ASCII when executing the HTTP check.
The
Parse
button can be used to separate optional query fields (like ?name=Admin&password=mypassword) from the URL, moving the attributes and values into
Query fields
for automatic URL-encoding.
Limited to 2048 characters.
Supported macros: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, user macros, low-level discovery macros.
This sets the
CURLOPT_URL
cURL option.
Query fields
Variables for the URL (see above).
Specified as attribute and value pairs.
Values are URL-encoded automatically. Values from macros are resolved and then URL-encoded automatically.
Supported macros: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, user macros, low-level discovery macros.
This sets the
CURLOPT_URL
cURL option.
Request type
Select request method type:
GET
,
POST
,
PUT
or
HEAD
Request body type
Select the request body type:
Raw data
- custom HTTP request body, macros are substituted but no encoding is performed
JSON data
- HTTP request body in JSON format. Macros can be used as string, number, true and false; macros used as strings must be enclosed in double quotes. Values from macros are resolved and then escaped automatically. If "Content-Type" is not specified in headers then it will default to "Content-Type: application/json"
XML data
- HTTP request body in XML format. Macros can be used as a text node, attribute or CDATA section. Values from macros are resolved and then escaped automatically in a text node and attribute. If "Content-Type" is not specified in headers then it will default to "Content-Type: application/xml"
Note
that selecting
XML data
requires libxml2.
Request body
Enter the request body.
Supported macros: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, user macros, low-level discovery macros.
Headers
Custom HTTP headers that will be sent when performing a request.
Specified as attribute and value pairs.
Supported macros: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, user macros, low-level discovery macros.
This sets the
CURLOPT_HTTPHEADER
cURL option.
Required status codes
List of expected HTTP status codes. If Zabbix gets a code which is not in the list, the item will become unsupported. If empty, no check is performed.
For example: 200,201,210-299
Supported macros in the list: user macros, low-level discovery macros.
This uses the
CURLINFO_RESPONSE_CODE
cURL option.
Follow redirects
Mark the checkbox to follow HTTP redirects.
This sets the
CURLOPT_FOLLOWLOCATION
cURL option.
Retrieve mode
Select the part of response that must be retrieved:
Body
- body only
Headers
- headers only
Body and headers
- body and headers
Convert to JSON
Headers are saved as attribute and value pairs under the "header" key if
Retrieve mode
is not set to
Body
.
If 'Content-Type: application/json' is encountered then body is saved as an object, otherwise it is stored as string, for example:
HTTP proxy
You can specify an HTTP proxy to use, using the format
[protocol://][username[:password]@]proxy.example.com[:port]
.
The optional
protocol://
prefix may be used to specify alternative proxy protocols (e.g. https, socks4, socks5; see
documentation
; the protocol prefix support was added in cURL 7.21.7). With no protocol specified, the proxy will be treated as an HTTP proxy. If you specify the wrong protocol, the connection will fail and the item will become unsupported.
By default, 1080 port will be used.
If specified, the proxy will overwrite proxy related environment variables like http_proxy, HTTPS_PROXY. If not specified, the proxy will not overwrite proxy-related environment variables. The entered value is passed on "as is", no sanity checking takes place.
Note
that only simple authentication is supported with HTTP proxy.
Supported macros: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, user macros, low-level discovery macros.
This sets the
CURLOPT_PROXY
cURL option.
HTTP authentication
Select the authentication option:
None
- no authentication used;
Basic
- basic authentication is used;
NTLM
- NTLM (
Windows NT LAN Manager
) authentication is used;
Kerberos
- Kerberos authentication is used (see also:
Configuring Kerberos with Zabbix
);
Digest
- Digest authentication is used.
This sets the
CURLOPT_HTTPAUTH
cURL option.
User name
Enter the user name (up to 255 characters).
This field is available if
HTTP authentication
is set to Basic, NTLM, Kerberos, or Digest. User macros and low-level discovery macros are supported.
Password
Enter the user password (up to 255 characters).
This field is available if
HTTP authentication
is set to Basic, NTLM, Kerberos, or Digest. User macros and low-level discovery macros are supported.
SSL verify peer
Mark the checkbox to verify the SSL certificate of the web server. The server certificate will be automatically taken from system-wide certificate authority (CA) location. You can override the location of CA files using Zabbix server or proxy configuration parameter SSLCALocation.
This sets the
CURLOPT_SSL_VERIFYPEER
cURL option.
SSL verify host
Mark the checkbox to verify that the Common Name field or the Subject Alternate Name field of the web server certificate matches.
This sets the
CURLOPT_SSL_VERIFYHOST
cURL option.
SSL certificate file
Name of the SSL certificate file used for client authentication. The certificate file must be in PEM
1
format. If the certificate file contains also the private key, leave the SSL key file field empty. If the key is encrypted, specify the password in SSL key password field. The directory containing this file is specified by Zabbix server or proxy configuration parameter SSLCertLocation.
Supported macros: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, user macros, low-level discovery macros.
This sets the
CURLOPT_SSLCERT
cURL option.
SSL key file
Name of the SSL private key file used for client authentication. The private key file must be in PEM
1
format. The directory containing this file is specified by Zabbix server or proxy configuration parameter SSLKeyLocation.
Supported macros: {HOST.IP}, {HOST.CONN}, {HOST.DNS}, {HOST.HOST}, {HOST.NAME}, {HOST.PORT}, {ITEM.ID}, {ITEM.KEY}, {ITEM.KEY.ORIG}, user macros, low-level discovery macros.
This sets the
CURLOPT_SSLKEY
cURL option.
SSL key password
SSL private key file password.
Supported macros: user macros, low-level discovery macros.
This sets the
CURLOPT_KEYPASSWD
cURL option.
Timeout
Zabbix will not spend more than the set amount of time on processing the URL (1-600 seconds). Actually this parameter defines the maximum time for making a connection to the URL and maximum time for performing an HTTP request. Therefore, Zabbix will not spend more than 2 x
Timeout
seconds on one check.
This sets the
CURLOPT_TIMEOUT
cURL option.
For more information on the
Timeout
parameter, see
general item attributes
.
Enable trapping
With this checkbox marked, the item will also function as a trapper item and will accept data sent to Zabbix server or proxy using the
Zabbix sender
utility or Zabbix sender
protocol
, or will accept data sent to Zabbix server using the
history.push
API method. For more information about sending data, see:
Trapper items
.
Allowed hosts
Visible only if
Enable trapping
checkbox is marked.
List of comma delimited IP addresses, optionally in CIDR notation, or DNS names.
If specified, incoming connections will be accepted only from the hosts listed here.
If IPv6 support is enabled then '127.0.0.1', '::127.0.0.1', '::ffff:127.0.0.1' are treated equally and '::/0' will allow any IPv4 or IPv6 address.
'0.0.0.0/0' can be used to allow any IPv4 address.
Note that "IPv4-compatible IPv6 addresses" (0000::/96 prefix) are supported but deprecated by
RFC4291
.
Example: 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}
Spaces and
user macros
are allowed in this field.
Host macros: {HOST.HOST}, {HOST.NAME}, {HOST.IP}, {HOST.DNS}, {HOST.CONN} are allowed in this field.
If the
HTTP proxy
field is left empty, another way for using an HTTP proxy is to set proxy-related environment variables.
For HTTP - set the
http_proxy
environment variable for the Zabbix server user. For example:
http_proxy=http://proxy_ip:proxy_port
.
For HTTPS - set the
HTTPS_PROXY
environment variable. For example:
HTTPS_PROXY=http://proxy_ip:proxy_port
. More details are available by running a shell command:
# man curl
.
[1] Zabbix supports certificate and private key files in PEM format only. In case you have your certificate and private key data in PKCS #12 format file (usually with extension *.p12 or *.pfx) you may generate the PEM file from it using the following commands: