options available to you with zabbix :
use active agents. native zabbix agents can run on most platforms, including linux and windows. in active mode, they connect to server on port 10051, ask for things to check and then send in any collected data. no connections from server to agents are made.
use zabbix proxy. in this case a dedicated purpose system would collect all data and transmit it to zabbix server. in the normal, active mode, only zabbix proxy connects to the zabbix server (again, on port 10051) - so there is no need to allow connections from all the zabbix agents, only from the proxy. additional benefit is the ability to monitor agent-less systems like switches, routers, printers and anything else.
starting with zabbix 1.8.3, you also have an option of zabbix server connecting to the zabbix proxy instead (still port 10051) if the opposite direction is not possible.
in your case active zabbix proxy would probably be the best choice given that it also preserves collected data locally if network connection to the zabbix server is down. proxy only runs on unix-like systems, so you probably have a couple of options - either installing the proxy on one of the existing linux machines, or setting up a dedicated one.
given that those are customers' systems, i would suggest going with a dedicated one. you could have a small, embedded system running zabbix proxies. you could hand them out to customers as monitoring appliances, they would only have to plug them in, allow outgoing connection to zabbix server from proxy on port 10051 - and that's it. no more configuration on the proxy end required.
Q: How can I add trigger so it would sound alarm if triggered longer than minute or two
A: You mean, more downtime in last period of time, then trigger will look like this:
With average value:
{net.tcp.service[http,80].avg(120)}<0,5
Or with count
:
{net.tcp.service[http,80].count(120)}<60
Or maybe you want to see only pure constant downtime? OK:
{net.tcp.service[http,80].count(120)}<1
--
Q: Let say that after checking 3 times each time http sent 0 ( it was down). How to add trigger for this?
A: {net.tcp.service[http,80].count(#3)}<1
--
Q?: I heard that it's possible to make load graphs for http using zabbix? Anyone know how to do it or have link to some good how to ?
A: At first, you must evaluate what "load graph for http" means technically: CPU load, CPU usage, RAM usage, connection usage etc. there is no such thing called "http load" :)
--
Note: net.tcp.service won't check is your site working or not or is service working fine or not, it's just establishing TCP connection and simple HTTP session. For better availability check use Zabbix Web Monitoring.
Best Answer
If you can't get the web service checks to work properly, what you need to setup is an external check as described at http://www.zabbix.com/documentation/2.0/manual/config/items/itemtypes/external
Then you make a shell/perl/php/whatever script that does the checks you want, and prints something like FAILED when the service is down.
Your script goes in the directory specified in your zabbix configuration for ExternalScripts - likely something like /etc/zabbix/externalscripts. Make sure it has appropriate permissions for the zabbix user to be able to execute it.
In the template or host, create a new item, and set the type to external check, and set the key to the name of your script.
Then create a trigger that looks for the "FAILED" line and alerts you.