AnyEvent::ZabbixSender - simple and efficient zabbix data submission


   use AnyEvent::ZabbixSender;


This module is an AnyEvent user, you need to make sure that you use and run a supported event loop.

I't implements the zabbix version 2.0-3.4 protocol for item data submission.


$zbx = new AnyEvent::ZabbixSender [key => value...]

Creates a (virtual) connection to a zabbix server. Since each submission requires a new TCP connection, creating the connection object does not actually contact the server.

The connection object will linger in the destructor until all data has been submitted or thrown away.

You can specify various configuration parameters. The term @items refers to an array with [key, value, clock] array-refs.

server => "$hostname:$port" (default: localhost:10051)

The zabbix server to connect to.

host => $name (default: local nodename)

The submission host, the "technical" name from tghe zabbix configuration.

delay => $seconds (default: 0)

If non-zero, then the module will gather data submissions for up to this number of seconds before actually submitting them as a single batch.

Submissions can get batched even if 0, as events submitted while the connection is being established or retried will be batched together in any case.

queue_time => $seconds (default: 3600)

The amount of time a data item will be queued until it is thrown away when the server cannot be reached.

linger_time => $seconds (default: same as queue_time)

The amount of time the module will linger in its destructor until all items have been submitted.

retry_min => $seconds (default: 30)
retry_max => $seconds (default: 300)

The minimum and maximum retry times when the server cannot be reached.

on_error => $cb->($zbx, \@items, $msg) (default: log and continue)

Called on any protocol errors - these generally indicate that something other than a zabbix server is running on a port. The given key-value pairs are the lost items.

on_loss => $cb->($zbx, \@items) (default: log and continue)

Will be called when some data items are thrown away (this happens if the server isn't reachable for at least queue_time seconds),

on_response => $cb->($zbx, \@items, \%response) (default: not called)

Will be called with the (generally rather useless) response form the zabbix server.

$zbx->submit ($k, $v[, $clock[, $host]])

Submits a new key-value pair to the zabbix server. If $clock is missing or undef, then AE::now is used for the event timestamp. If $host is missing, then the default set during object creation is used.

$zbx->submit_multiple ([ [$k, $v, $clock, $host]... ])

Like submit, but submits many key-value pairs at once.




   Marc Lehmann <>