Passive checks is the default setting in Zabbix: Zabbix server (or proxy) asks for data, and Zabbix agent sends back the result.
Zabbix Active checks require more complex processing: the agent must first retrieve a list of items from Zabbix server for independent processing, then it will periodically send new values to the server. Active checks are needed when it is not possible for the zabbix server to access a specific port on the remote monitored machine (for example this can be caused by a firewall).
/etc/zabbix/zabbix_agentd.conf and set the following parameters
ServerActive you have the set one or more comma delimited Zabbix servers for active checks specifying the IP or the hostname.
Hostname must be a unique, case sensitive hostname for this host: this value is required for active checks and must match the value configured on the server. I also add some random characters to the hostname to reduce the possibility of collisions (e.g. MAILSERVER1-KLJUYGHN).
You can also set
to disable the passive checks (not required, but reduces the number of unused processes)
Remember to restart the service with
service zabbix-agent restart
Add a new host, and configure the host like you would for other host (add it to one or more groups, set a visibile name etc).
Zabbix agent processes items of type 'Zabbix agent' or 'Zabbix agent (active)'; whether to perform passive or active checks is configured by selecting the respective monitoring item type.
Default templates are configured for passive check. So, you also have to update the template (and all linked templates) changing to “Zabbix agent (active)” the type of all the items, the discovery rules and the item prototypes of discovery rules.
I have already created an Active version of default OS Linux and Windows templates (I just changed all items to active): feel free to download and use them.