​​​​​​​I have a monitoring scenario that I want to monitors some HTTP URLs that are in a LAN and send the results to the Zabbix server on the Internet. Zabbix can be used for monitoring HTTP URLs without using agents, then the main server is to monitor the HTTP URLs directly in web monitoring scenarios and the URLs should be visible for the Zabbix server. But in my scenario the HTTP services are behind the NAT then I should use 'Zabbix active agents' to monitor them. I couldn't Find any item in Zabbix agents for this purpose. Does anyone know that how should I do this task?

EDIT: I know about zabbix can be used for aggregated monitoring of local hosts, but proxy can be used for monitored items of the hosts. I couldn't find any item for monitoring HTTP urls on the hosts (active or passive hosts).

Regards Sajad

4 Answers 4


That is what a Zabbix proxy is for.

You install a Zabbix proxy inside the network where it can reach the devices to be monitored, then in the Zabbix server you add the proxy and select the hosts which will be monitored via the proxy.

See the documentation for complete details on setting up a Zabbix proxy.

  • Yes I know about zabbix proxy but I can adjust proxy for the Items that I want to monitor on each host. I couldn't find any Item for monitoring HTTP URLs.
    – sajad
    Apr 17, 2019 at 11:04

You could create custom user parameter where run curl to URL, you want to monitor. Something like that:

UserParameter=host.url[*],curl -iLs $1 | grep -c "HTTP/1.1 200"

More details you could see in documentation.


1) Enable EnableRemoteCommands in zabbix-agent conf on server: sed -i 's/# EnableRemoteCommands=0/EnableRemoteCommands=1/' /path/to/zabbix_agentd.conf

2) Create a UserParameter in zabbix-agent conf to check the URL: UserParameter=check.url[*],curl -s -o /dev/null -w '%{http_code}' $1

3) Restart Zabbix Agent: systemctl restart zabbix-agent.service

Now You can check any URL:

zabbix_get -s server-IP-or-DNS -k 'check.url[https://www.google.com]'

If returns 200, the URL is OK. You can check all the HTTP Status Code here

If needed, you can add a timeout to the curl command --connect-timeout 30 # in seconds

  1. Install a Zabbix proxy inside your network. (PROXY-A)
  2. Inside your network, install the Zabbix agent on a computer. (COMPUTER-B)
  3. On the Zabbix console add a new host COMPUTER-B but make sure to select the Monitored by proxy PROXY-A
  4. On the properties of COMPUTER-B, create a web scenario pointing to the internal website that you want to monitor.

Zabbix proxy PROXY-A should be active.

COMPUTER-B should be active.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.