Aggregate agent.ping in zabbix

zabbix

I'm trying to set up a zabbix aggregate check item to check on "agent.ping" on a group, but unfortunately "agent.ping", on unavailability, does not return anything, so when I set up the trigger it does not behave correctly, I tried to use nodata in the trigger, but I think the bottleneck is in the item (because grpfunc needs and returns a value).

How do I setup an aggregate item that actually returns if all the "agent.ping" of a group are down?

Best Answer

There is no easy way I'm aware of to do that. If those hosts are reachable from the server, you could have some TCP port checking simple checks that you could aggregate on. Or if they have at least some passive items, you could use the zabbix[host,<type>,available] internal item and aggregate on that (beware of the "unknown" state throwing off the calculations).

You could also use the count() trigger function with agent.ping - count the number of values in one item update interval. This value could shift back and forth because of timing/performance issues.

Yet another approach - have a calculated item on top of each agent.ping giving you max() over a few item agent.ping update intervals, then aggregate on top of that. Here, calculated items could become unsupported when data is missing, resulting in host recovery being detected with some delay.